当前位置:网站首页>rk3399-339 usb设备复合 总体流程
rk3399-339 usb设备复合 总体流程
2022-08-04 09:40:00 【侃侃普奇瑞瑞亚】
1.芯片内核环境
1.1 rk3399这边作为host端,内核模块选上以下模块,原配置文件是默认勾选的。
Device drivers->USB Support->USB Serial Converter support->USB CP210x family of UART Bridge Controller;USB Prolific 2303 Single Port Serial Driver
1.2 ssc339g这边作为device端。根据《usb_serial.pdf》中的legacy环境搭建,在内核menuconfig中的usb Gadget Function选上Serial Gadget = M,其中会有两个模块生成:usb_f_acm.ko以及g_serial.ko以及一个模块u_serial编译进内核。所以我们要烧录kernel,以及接下来的rootfs根文件系统。
1.3 修改webcam.c源文件使其复合设备serial功能见另一篇文章。确保libstruntime.so存在后编译内核,更新版本,将生成的文件g_webcam.ko,usb_f_acm.ko,以及kernel,rootfs.sqfs,miservice.sqfs转移到3399的/customer/sn_app/ssc_339/下。使用tftp命令下载到339/customer中:
tftp -g -r file 10.10.10.11
根据1.1.3逻辑,我们需要运行复合的g_webcam.ko模块,所以要使用自己写的demo.sh开机脚本,rcS运行逻辑是customer下没有demo.sh文件就去执行/etc/init.d下的demo.sh文件。
1.4 rootfs根文件系统配置文件修改。
因为339是read-only system。不能直接修改etc下的配置文件。我们要修改339sdk下的两个文件./project/image/etc/inittab以及./project/image/configs/i6e/rootfs.mk。
1.4.1 ./project/image/etc/inittab,使得339这边在设备文件生成后会先询问这个设备文件,将它作为终端定向输入节点,这样在3399这边使用minicom才能直接登录终端。文件添加:
ttyGS0::askfirst:-/bin/sh
ttyGS0::respawn:/sbin/getty -L ttyGS0 115200 vt100 # GENERIC_SERIAL
1.4.2 ./project/image/configs/i6e/rootfs.mk,是etc下的rcS文件的修改文件,它输出字符串到rcS中,最终系统启动执行的文件是rcS,确保它的逻辑如下:
echo "if [ ! -e /customer/demo.sh ]; then" >> $(OUTPUTDIR)/rootfs/etc/init.d/rcS ; \
echo " /etc/init.d/demo.sh" >> $(OUTPUTDIR)/rootfs/etc/init.d/rcS ; \
echo "else" >> $(OUTPUTDIR)/rootfs/etc/init.d/rcS ; \
echo " /customer/demo.sh" >> $(OUTPUTDIR)/rootfs/etc/init.d/rcS ; \
echo "fi;" >> $(OUTPUTDIR)/rootfs/etc/init.d/rcS ; \
1.4.3 将/etc/init.d/demo.sh转移至/customer目录下,将原本的insmod /lib/4.94/g_webcam.ko替换成自己的g_webcam.ko,再加上insmod编译出的usb_f_acm.ko。
1.5 给内核当中后顺序烧录kernel,rootfs,miservice,对应文件kernel,rootfs.sqfs,miservice.sqfs。
2.软件环境
2.1 配置交叉编译链环境。
vi ~/.bashrc
#tool path
export PATH=$PATH:/obj/project_xingwang/rk3399_tool/buildroot_gcc/bin
source ~/.bashrc
2.2 交叉编译串口工具前要让电脑存在ncurse环境,Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
sudo apt-get install libncurses5-dev
2.3使用交叉编译工具链给rk3399交叉编译minicom。我使用的版本是2.8,configure,make,make install,出现权限问题直接登录root操作:
./configure --prefix=/obj/minicom-2.8/prefix --host=aarch64-buildroot-linux-gnu CC=aarch64-buildroot-linux-gnu-gcc --target=aarch64-buildroot-linux-gnu --with-shared --without-profile --disable-stripping --without-progs --with-manpages --without-tests
make,make install后二进制ELF可执行文件在src下。拷贝到3399芯片的sn_app/ssg_339下。./minicom -D /dev/ttyACMx 即可登录终端。查看dev文件夹也存在video以及ACM节点。
边栏推荐
猜你喜欢
如何快速将Zabbix5.0升级至6.0?
【云驻共创】HCSD 大咖直播–就业指南
参数优化。
IDEA 自动导入的配置(Auto import)
Detailed explanation of NAT/NAPT address translation (internal and external network communication) technology [Huawei eNSP]
[Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
Win11系统重装用什么好 一键重装Win11教程
cannot import name 'import_string' from 'werkzeug' [bug solution]
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
随机推荐
如何快速将Zabbix5.0升级至6.0?
GBsae 8 c database using an error, how to do?
浅聊偏函数
下午14:00面试,14:08低着头出来了 ,问的实在是太...
参数优化。
函数防抖与函数节流
三层交换机配置MSTP协议详解【华为eNSP实验】
leetcode二叉树系列(一)
LVGL's multi-language conversion tool -- a good assistant for font settings
冰蝎逆向初探
架构设计杂谈
学习在php中将特大数字转成带有千/万/亿为单位的字符串
MindSpore:MindSpore GPU版本安装问题
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
命里有时终须有--记与TiDB的一次次擦肩而过
各位大佬,请问mysql数据的cdc,能指定存量数据同步的zone为utc 吗
【正点原子STM32连载】第三章 开发环境搭建 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
Four common methods of network attacks and their protection
Detailed explanation of telnet remote login aaa mode [Huawei eNSP]
暴力破解ssh/rdp/mysql/smb服务