当前位置:网站首页>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_SERIAL1.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-testsmake,make install后二进制ELF可执行文件在src下。拷贝到3399芯片的sn_app/ssg_339下。./minicom -D /dev/ttyACMx 即可登录终端。查看dev文件夹也存在video以及ACM节点。
边栏推荐
- 94后字节P7晒出工资单:狠补了这个,真不错...
- 低代码应用开发的五大好处
- [Punctuality Atomic STM32 Serial] Chapter 1 Learning Method of the Book Excerpted from [Punctuality Atomic] MiniPro STM32H750 Development Guide_V1.1
- 2022 Cloud Native Computing代表厂商 | 灵雀云第三次入选Gartner中国ICT技术成熟度曲线报告
- [Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
- 陈春花发布声明,这场流量狂欢该到了收尾的时候
- redis解决分布式session问题
- 关于技术学习的6个观点
- 冰蝎工具开发实现动态二进制加密WebShell
- 请你谈谈网站是如何进行访问的?【web领域面试题】
猜你喜欢

Grafana9.0发布,Prometheus和Loki查询生成器、全新导航、热图面板等新功能!
![[Punctuality Atomic STM32 Serial] Chapter 1 Learning Method of the Book Excerpted from [Punctuality Atomic] MiniPro STM32H750 Development Guide_V1.1](/img/99/23e3dcb426769a415e33f7ff51bbb8.png)
[Punctuality Atomic STM32 Serial] Chapter 1 Learning Method of the Book Excerpted from [Punctuality Atomic] MiniPro STM32H750 Development Guide_V1.1

我和 TiDB 的故事 | TiDB 对我不离不弃,我亦如此

双指针方法

冰蝎逆向初探

leetcode单调栈经典例题——最大矩形

Win11文件资源管理器找不到选项卡怎么办?

sync-diff-inspector 使用实践

思想茶叶蛋 (Jul 31,2022)| 元宇宙(Metaverse)下了一枚什么样的蛋

被Win11安全中心误删除的文件怎么恢复?
随机推荐
PD 源码分析- Checker: region 健康卫士
双指针方法
Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]
leetcode每天5题-Day06
Get the number of cpu cores
请问同一个oracle cdc表,如果flink job重新提交,是会全量读取一遍源数据还是增量呢?
蜜芽CEO刘楠:垂直电商黄金时代已落幕 坚定转型品牌之路
How to restore the Youxuan database with only data files
渗透——信息收集
Inheritance and the static keyword
MindSpore:【model_zoo】【resnet】尝试用THOR优化器运行时报cannot import name ‘THOR‘
《福格行为模型》:如何养成好习惯?
今日睡眠质量记录71分
请问下Flink SQL如何写hologres分区表?我想要每天一个分区
数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动
GBsae 8c 数据库使用中报错,肿么办?
记录十条工作中便利的API小技巧
leetcode动态规划经典例题——53.最大子数组和
KubeDNS 和 CoreDNS
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]