转自 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
ubuntu8.04 USB转串口问题解决--USB转串口线----HL340,布布扣,bubuko.com