Linux中使用国产CH343应用记录

        在开发中长期使用Linux系统,在使用USB转串口芯片中总会遇到许多问题,特此记录一下也希望帮助更多遇到该问题的朋友。

        不熟悉CH343的朋友可以参考该链接:CH343芯片应用—硬件设计_WCH_SoftGroup的博客-CSDN博客

1、如何加载CH343的Linux驱动

        首先,是获取CH343的Linux驱动,其链接:GitHub - WCHSoftGroup/ch343ser_linux: USB driver for USB to serial chip ch342, ch343, ch344, ch9101, ch9102, ch9103, etc

        其编译说明在README文件中已有详细叙述,此处不多提及。

Linux中使用国产CH343应用记录_第1张图片

2、如何在嵌入式开发板中加载驱动

        驱动的加载分为动态加载和直接在源码写入编译,其实使用并不难,只需修改官方Makefile中的KERNELDIR指向自己的内核源码即可,若是想直接内置也可编写对应的kconfig文件并在内核目录下添加对应源码即可完成。但我使用时候为动态加载方式,此处主要先记录动态加载方法。

Linux中使用国产CH343应用记录_第2张图片

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 "ch343\n" >> /etc/modules
	depmod -a

        官网的Makefile其实已经内置了方法,只需编译出ko驱动文件之后,执行“make install”即可完成,注意其中的“echo "ch343\n" >> /etc/modules”语句,实际上是将模块名写入该文件,为了避免系统自带的CDC驱动优先级高于CH343,使其无法正常加载VCP驱动才如此,写入"/etc/modules"的目的实则是为了让系统在内核启动阶段就加载CH343驱动,相当于把优先级提高,也是一个很不错的解决办法。

4、如何正确使用CH343

        对于经常接触Linux串口编程的朋友来说,串口正常调用“/dev”目录下设备节点即可,不熟悉的朋友可以自己搜索一下linux串口编程,只需要常规的串口API对其进行操作读写即可,当然之前在使用沁恒CH9102时有讨论其GPIO使用,可根据“ioctl”方法进行代码逻辑实现而已,CH9102其在嵌入式Linux底下的应用和CH343大致相同,但不同之处在于CH343为USB转高速串口,通讯波特率可高至6Mbps,且其外围简单到只要一两个电容即可完成,所以还是很推荐,至于嵌入式下开发板如何进行使用可参照我往期文章

Arm-Linux上使用国产USB转串口芯片CH9102_OIDCAT的博客-CSDN博客_ch9102驱动

        如果有使用问题也欢迎和我一起讨论。晚安各位。

你可能感兴趣的:(USB接口,Linux,linux,usb,嵌入式硬件,物联网,串口通信)