在开发中常年使用Linux系统linux串口驱动,在使用USB转并口芯片中总会碰到许多问题,特此记录一下也希望帮助更多遇见该问题的同事。
不熟悉CH343的同学可以参考该链接:CH343芯片应用—硬件设计_WCH_SoftGroup的博客-CSDN博客
1、如何加载CH343的Linux驱动
首先,是获取CH343的Linux驱动,其链接:GitHub-WCHSoftGroup/ch343ser_linux:USBdriverforUSBtoserialchipch342,ch343,ch344,ch9101,ch9102,ch9103,etc
其编译说明在README文件中已有详尽表述,此处不多提到。
2、如何在嵌入式开发板中加载驱动
驱动的加载分为动态加载和直接在源码写入编译,虽然使用并不难,只需更改官方Makefile中的KERNELDIR指向自己的内核源码即可,若是想直接外置也可编撰对应的kconfig文件并在内核目录下添加对应源码即可完成。但我使用时侯为动态加载形式红旗linux安装,此处主要先记录动态加载方式。
3、如何让驱动开机自启动无需二次加载
install: default
mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial
cp -f ./ch343.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial
echo "ch343n" >> /etc/modules
depmod -a
官网的Makefile虽然早已外置了方式,只需编译出ko驱动文件以后,执行“makeinstall”即可完成,注意其中的“echo"ch343n">>/etc/modules”语句,实际上是将模块名写入该文件,为了防止系统自带的CDC驱动优先级低于CH343,使其难以正常加载VCP驱动才这么linux串口驱动,写入"/etc/modules"的目的实则是为了让系统在内核启动阶段就加载CH343驱动,相当于把优先级提升,也是一个很不错的解决办法。
4、如何正确使用CH343
对于时常接触Linux并口编程的同学来说,并口正常调用“/dev”目录下设备节点即可,不熟悉的同学可以自己搜索一下linux并口编程,只须要常规的并口API对其进行操作读写即可,其实之前在使用沁恒CH9102时有讨论其GPIO使用,可按照“ioctl”方法进行代码逻辑实现而已,CH9102其在嵌入式Linux下边的应用和CH343大致相同,但不同之处在于CH343为USB转高速并口,通信码率可高至6Mbps,且其外围简单到只要一两个电容即可完成,所以还是很推荐linux系统下载官网,至于嵌入式下开发板怎样进行使用可参照我往期文章
Arm-Linux上使用国产USB转并口芯片CH9102_OIDCAT的博客-CSDN博客_ch9102驱动
假如有使用问题也欢迎和我一起讨论。早安诸位。