Linux(Fedora 9) HL340 USB 转串口 驱动安装

时间:2021-04-22 16:09:51

 Linux(Fedora 9) HL340 USB 转串口 驱动安装

摘写部分:

最近装了个硬盘版的ubuntu 8.04,准备作为以后的嵌入式开发环境,其他一切基本弄好准备连接开发板启动时,出了问题。串口工具用的是minicom,但是连线开发板(FS2410)之后没有任何打印信息。因为所有的开发环境可以确认没有问题,所以初步判定为串口配置的问题。
在网上查找得知minicom串口设置,需设为 /dev/ttyUSB0, 但是我设只好之后之后,发现找不到/dev/ttyUSB0,然后自己在/dev下面也没找到ttyUSB0。于是lsusb查看可以确定系统可以检测到我的usb转串口线,
Bus 006 Device 001: ID 0000:0000 
Bus 004 Device 003: ID 1a86:7523 USB转串口线
Bus 004 Device 001: ID 0000:0000 
但是驱动无法识别,应该是驱动的问题。

于是在网上查找我的USB转串口线所用的IC,及其驱动。
先按照HL-340,搜到一些信息,其转换芯片应该是ch340或者ch341,但是目前大部分用的是ch341.于是我先查看自己的系统驱动模块,发现有ch341.ko,用modprobe ch341
加在之后,仍然无法在dmesg之下看到ttyUSB0相关信息
又在网上搜ch341之类的信息,终于找到一些有用的信息,发现起根本原因是原来的驱动程序中没有添加供应商ID和产品ID: "idVendor=1a86, idProduct=7523",所以需要在驱动源代码 ch341.c 中添加一行代码如下:
static struct usb_device_id id_table [] = {
{ USB_DEVICE(0x4348, 0x5523) },
{ USB_DEVICE(0x1a86, 0x7523) }, //新增代码 1a86,7523就是上文lsusb检测到的ID信息
{ },
};
具体的解决步骤总结如下: 
(1)下载ch341驱动源码(系统里我没找到);
(2)在任意目录下解压源码;
(3)进入ch341源码根目录,用编辑器(比如: vi )打开ch341.c;
(4)在line29行找到上述结构体,并在其中添加 { USB_DEVICE(0x1a86, 0x7523) }, 保存并退出;
(5)在ch341源码根目录下执行make,即会生成ch341.ko
(6)进入到系统驱动模块存放目录将原来的ch341.ko删掉或者改为其他名字,比如改为:ch341.ko.old等(我的目录为: /lib/modules/2.6.24-19-generic/kernel/drivers/usb/serial/);
(7)将新编译好的ch341.ko复制到上述驱动模块的目录;
(8)加在驱动模块modprobe ch341;
(9)dmesg |grep usb,即可看到如下信息,表示usb转串口驱动成功;
[ 517.906465] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
[ 517.906969] usbcore: registered new interface driver usbserial_generic
[ 517.906976] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial Driver core
[ 517.909771] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for ch341-uart
[ 517.929627] usb 3-1: ch341-uart converter now attached to ttyUSB0
[ 517.929661] usbcore: registered new interface driver ch341
[ 1418.663675] usb 3-1: USB disconnect, address 5
[ 1486.350914] usb 4-1: new full speed USB device using uhci_hcd and address 3
[ 1486.385089] usb 4-1: configuration #1 chosen from 1 choice
[ 1486.404914] usb 4-1: ch341-uart converter now attached to ttyUSB0 
[ 1608.650842] usbcore: deregistering interface driver ch341
[ 1608.653215] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial deregistering driver ch341-uart
[ 1608.658300] usbcore: deregistering interface driver usbserial_generic
[ 1608.658348] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial deregistering driver generic
(10)在/dev/目录下就可以找到ttyUSB0了,然后设置minicom串口为/dev/ttyUSB0,保存并退出。启动串口,上电开发板,顺利打印出串口信息。

#Arm