转自 http://blog.csdn.net/sustzombie/article/details/5035506

最近装了个硬盘版的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,保存并退出。启动串口,上电开发板,顺利打印出串口信息。

 

http://blog.crox.net/archives/34-Using-the-HL-340-USB-serial-adapter-with-Linux-1a867523,-driver-ch341.html

版权声明:本文为Amagasaki原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Amagasaki/p/3752674.html