当前位置:网站首页>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节点。
边栏推荐
- Anton Paar Anton Paar Density Meter Hydrometer Repair DMA35 Performance Parameters
- How Oracle for current library or certain library data on the same server number?
- 三层交换机配置MSTP协议详解【华为eNSP实验】
- 【C补充】指向指针或函数的指针
- [Punctuality Atom STM32 Serial] Chapter 2 STM32 Introduction Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
- DOM简述
- 字符串相关题目
- grafana手册之可视化配置图表table
- [Cloud Residency Co-Creation] HCSD Celebrity Live Streaming – Employment Guide
- bash shell数组详解
猜你喜欢
【正点原子STM32连载】第三章 开发环境搭建 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
Detailed Explanation of Addresses Delivered by DHCP on Routing/Layer 3 Switches [Huawei eNSP]
Apache APISIX 2.15 版本发布,为插件增加更多灵活性
Cloud function to achieve automatic website check-in configuration details [Web function/Nodejs/cookie]
Qt:小的任务管理器(task)
TiFlash 源码阅读(五) DeltaTree 存储引擎设计及实现分析 - Part 2
加降息与BTC流动性事件策略研究
IDEA 自动导入的配置(Auto import)
双指针方法
开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握
随机推荐
Win11如何隐藏输入法悬浮窗?
Win10电脑经常发出叮咚声音怎么关闭
学习在微信小程序中判断url的文件后缀格式
leetcode二叉树系列(二叉搜索树篇)
【正点原子STM32连载】第二章 STM32简介 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
参数优化。
开源一夏 | 查询分页不只有limit,这四种分页方法值得掌握
我和 TiDB 的故事 | TiDB 对我不离不弃,我亦如此
Inheritance and the static keyword
函数防抖与函数节流
双指针方法
请你谈谈网站是如何进行访问的?【web领域面试题】
【云驻共创】HCSD 大咖直播–就业指南
ps抠图怎么抠出来,自学ps软件photoshop2022,ps怎么抠出想要的部分-笔记记录
LVGL's multi-language conversion tool -- a good assistant for font settings
ZbxTable 2.0 重磅发布!6大主要优化功能!
ps如何换背景颜色,自学ps软件photoshop2022,3种不同的方式笔记记录
DOM简述
PD 源码分析- Checker: region 健康卫士
关于DSP驱动外挂flash