在使用模块化加载驱动时,若系统内部存在同类别设备驱动,可能会出现无法加载我们添加的动态模块,比如Linux系统内置了CDC驱动,当我们使用兼容CDC和VCP驱动USB转串口芯片时,就会出现上电出现的是CDC串口,从而影响使用。
至于CDC驱动下的串口和VCP的区别可以参考:使用免驱CDC串口的注意事项-<学习收录>_OIDCAT的博客-优快云博客_cdc串口https://blog.youkuaiyun.com/OIDCAT/article/details/121603749?spm=1001.2014.3001.5501 /etc/modules-load.d 文件夹下添加.conf文件,文件中只需填入模块名称即可实现该名称驱动在内核引导阶段进行加载,避免与CDC驱动冲突问题,此时符合该驱动的新设备挂入系统时也会优先选择该配置文件内驱动。
有可能老版本Linux不支持该方式,可使用将模块名写入/etc/modules
CentOS下安装CH343驱动举例
将编译生成的驱动进行压缩,然后拷贝到系统内核中:
目录/lib/modules/$(uname -r)/kernel/driver/usb/serial
xz -k ch343.ko
cp -f ./ch343.ko.xz /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/
若ubuntu系统下,则直接拷贝操作即可
cp -f ./ch343.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial/
创建配置文件
但此处我们就不用如此麻烦了,直接echo写入即可,并修改配置文件权限为可执行+x
echo "ch343" >> /etc/modules-load.d/ch343.conf
chmod +x /etc/modules-load.d/ch343.conf
结果
设置完重启系统,开机后,ls /dev查看串口,可见CH343的设备节点ttyCH343USBx已经生成了