当前位置:网站首页>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节点。
边栏推荐
- Mysql应用日志时间与系统时间相差八小时
- 低代码应用开发的五大好处
- LeetCode 54. 螺旋矩阵 蛇形矩阵式输出字符串
- Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
- 菲沃泰科创板上市:市值123亿 宗坚赵静艳夫妇身价76亿
- How to restore the Youxuan database with only data files
- 三层交换机/路由器OSPF配置详解【华为eNSP实验】
- Could you please talk about how the website is accessed?[Interview questions in the web field]
- 浅聊偏函数
- Ansible deployment scripts - pro available without pit
猜你喜欢

【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

leetcode动态规划系列(求路径篇)
![Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]](/img/97/6c3662ef36b02bc42eec95abaa6bc5.png)
Detailed explanation of MSTP protocol configuration on Layer 3 switches [Huawei eNSP experiment]

2022-08-03 第六小组 瞒春 学习笔记

TiDB升级与案例分享(TiDB v4.0.1 → v5.4.1)

数据万象内容审核 — 共建安全互联网,专项开展“清朗”直播整治行动

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

redis解决分布式session问题

94后字节P7晒出工资单:狠补了这个,真不错...

MindSpore:Batchnorm only support nchw input!
随机推荐
记录十条工作中便利的API小技巧
NAT/NAPT地址转换(内外网通信)技术详解【华为eNSP】
Win11系统重装用什么好 一键重装Win11教程
使用ClickHouse分析COS的清单和访问日志
IDEA启动热部署
DOM简述
cannot import name ‘import_string‘ from ‘werkzeug‘【bug解决】
Since his 97, I roll but he...
ISO14443A读卡流程(作为示例参考)
VRRP+MSTP配置详解【华为eNSP实验】
去掉js代码文件所有注释
ansible部署脚本--亲测可用无坑
PD 源码分析- Checker: region 健康卫士
【无标题】
MindSpore:MindSpore GPU版本安装问题
leetcode经典例题——56.合并区间
Win7C盘不能扩大怎么办?Win7C盘扩展卷不能点怎么解决
v-model原理,在“radio”、“checkbox”、“select”、修饰符
KubeDNS 和 CoreDNS
Techwiz OLED:OLED器件的发光效率