RK3288 固定USB接口接串口线时的ttyUSB节点
当 RK3288 主板接 USB 转串口线时,USB 转串口已经调试 OK,生成的 ttyUSBx 理论上是递增的,但可能拔插一次就会变一次。
如果 ttyUSBx 是变化,会给上层读写数据造成很大麻烦。
此贴实现固定主板上某个 USB 接口为 ttyUSBx,此 USB 接口无论插什么 IC 的 USB转串口线(调试OK),或者任意插拔,生成的节点是不变的。
1、在主板上固定的 USB 插两根 USB 转串口线,生成的节点为 ttyUSB0 和 ttyUSB1。
root@RK3288:/ # ls /dev/ttyUSB* ls /dev/ttyUSB* /dev/ttyUSB0 /dev/ttyUSB1
2、通过指令查看这两个 USB 接口的详细信息,第一个 USB 为 3-1.2,第二个 USB 为 3-1.1.2
root@RK3288:/sys/bus/usb-serial/devices # ls -l ttyUSB0 ls -l ttyUSB0 lrwxrwxrwx root root 2011-01-01 20:33 ttyUSB0 -> ../../../devices/ff540000.usb/usb3/3-1/3-1.2/3-1.2:1.0/ttyUSB0 root@RK3288:/sys/bus/usb-serial/devices # ls -l ttyUSB1 ls -l ttyUSB1 lrwxrwxrwx root root 2011-01-01 20:35 ttyUSB1 -> ../../../devices/ff540000.usb/usb3/3-1/3-1.1/3-1.1.2/3-1.1.2:1.0/ttyUSB1
3、根据上一步记录的信息增加判断代码,固定第一个 USB 为 ttyUSB5,固定第二个 USB 为 ttyUSB6
diff --git a/kernel/drivers/usb/serial/usb-serial.c b/kernel/drivers/usb/serial/usb-serial.c index 80d689f..a779f9f 100755 --- a/kernel/drivers/usb/serial/usb-serial.c +++ b/kernel/drivers/usb/serial/usb-serial.c @@ -89,6 +89,15 @@ static struct usb_serial *get_free_serial(struct usb_serial *serial, *minor = 0; mutex_lock(&table_lock); for (i = 0; i < SERIAL_TTY_MINORS; ++i) { + if(strcmp((char*)serial->port[0]->serial->dev->devpath, "1.2") == 0){ + i = 5; + }else if(strcmp((char*)serial->port[0]->serial->dev->devpath, "1.1.2") == 0){ + i = 6; if (serial_table[i]) continue;
此时 USB 已经固定,在第一个 USB 接其中任意一条串口线,生成的节点都是 ttyUSB5,第二个 USB 接其中任意一条串口线,生成的节点都是 ttyUSB6。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架