RK3568驱动指南|第十三篇 输入子系统-第154章 固定usb设备的设备节点实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第十三篇 输入子系统_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第154章 固定usb设备的设备节点实验

154.1 需求分析

在Linux系统中,当使用多个USB转串口设备时,经常会遇到插拔USB转串口的顺序变化导致设备节点不稳定的情况。为了解决这个问题,我们可以通过使用udev来固定设备节点,以确保设备节点不受USB转串口插拔顺序的影响。

具体的解决思路是,在学习热插拔的过程中,可以学习并使用udev来自动挂载和卸载U盘,同时也可以利用udev的功能来固定设备节点,以保证设备节点的稳定性。

首先我们来复现下上述所说的问题。如下图所示,首先我们将开发板上的拨码开关设置为向上,此时USB3.0可以接USB设备。J6 usb接口也可以连接USB设备。

开发板烧写buildroot镜像,要确保系统支持ch34x驱动,如果系统不支持的话,需要在内核中进行配置,如下图所示。支持ch34x驱动之后,重新烧写系统镜像。

烧写完成之后,我们在usb3.0接口插入usb转串口模块,打印如下所示:

然后再J6 usb接口插入另一个usb转串口模块,打印如下所示:

经过上面的操作,在usb3.0接口插入的USB转串口模块的设备节点是ttyUSB0,在usbJ6接口插入的USB转串口模块的设备节点是ttyUSB1,但是如果我们先插usbJ6接口的USB转串口模块,再插入usb3.0接口插入的USB转串口模块。

J6 usb接口插入另一个usb转串口模块,打印如下所示:

在usb3.0接口插入usb转串口模块,打印如下所示:

以上实验说明了会遇到插拔USB转串口的顺序变化导致设备节点不稳定的情况。

154.2 解决方案

在开发板的usb3.0接口上插上USB转串口模块,然后输入以下命令,节点根据实际情况进行修改。

udevadm info -a -n /dev/ttyUSB0

udevadm info -a -n /dev/ttyUSB0是一个用于获取有关特定设备节点的详细信息的命令,包括设备的属性、驱动程序、设备路径等。这些命令的参数含义如下所示:

-a:显示与指定设备节点相关联的所有属性。

-n:指定设备节点的路径或名称。

在这种情况下,命令被用于获取/dev/ttyUSB0设备节点的信息。udevadm是一个用于管理Linux中的udev(设备管理器)的命令行工具。它提供了与udev相关的信息和操作。

这个命令的输出可能会包含以下信息

1 设备路径(DEVPATH):设备在系统中的路径,例如/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/ttyUSB0/tty/ttyUSB0。

2 设备节点(DEVNAME):设备在文件系统中的节点,即/dev/ttyUSB0。

3 设备的属性(Device Attributes):包括设备的供应商ID、产品ID、序列号等信息。

4 设备的驱动程序(Device Driver):设备所使用的驱动程序的名称和路径。

5 设备类型(SUBSYSTEM):usb

接下来在开发板的etc/udev/rules.d/目录下,创建一个名为001.rules的规则文件,如下图所示:

在该文件中写入以下规则:

KERNELS==”5-1:1.0”,SUBSYSTEMS==”usb”,MODE:=”0777”,SYMLINK+=”myusb”

SYMLINK是创建一个符号链接,当插入一个USB设备时,udev规则可以自动创建一个符号链接,指向USB设备上的系统路径,从而创建设备节点。

修改完毕之后,重新启动开发板。然后我们首先在usb3.0接口插上usb转串口模块,打印的节点为ttyUSB0,如下所示:

然后在usbJ6接口插上usb转串口模块,打印如下所示:

usb3.0连接的usb转串口模块的设备节点设置了软链接到/dev/myusb,如下图所示:

如果我们先插入usbJ6接口对应节点为ttyUSB0,再插入usb3.0接口对应节点为ttyUSB1,再次查看usb3.0连接的usb转串口模块的设备节点,如下图所示:

由此可见,不管是先插入哪个usb设备,应用程序打开/dev/myusb,就会链接到对应的usb设备上。

至此,固定USB设备的设备节点实验完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值