ubuntu8.04 USB转串口问题解决--USB转串口线----HL340

jackxiang 2010-5-23 19:17 | |
    最近装了个硬盘版的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://linux.chinaunix.net/bbs/thread-1146827-1-1.html
http://blog.crox.net/archives/34-Using-the-HL-340-USB-serial-adapter-with-Linux-1a867523,-driver-ch341.html

驱动的代码下载地址:http://download.chinaprj.cn/link.php?key=iEDiriqb&url=http%3A%2F%2Fdlwt.csdn.net%2Ffd.php%3Fi%3D873519160285244%26s%3D8d11d8ef56e8d5fbe431448e8a6d7877

http://blog.chinaunix.net/u1/39518/showart_2081711.html

首先感谢如下链接的作者,你们解决问题的方法给了我个很大的帮助

CH340/CH341,USB转串口驱动模块

http://forum.ubuntu.org.cn/viewtopic.php?t=104478&sid=d8508d7fca76641dbac927c44a2d820d

增加新的设备ID { USB_DEVICE(0x1a86, 0x7523) }

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/235459

再次感谢一下。

1、确认安装了linux-headers

2、进入ch341并编译文件,ch341在我的附件中

3、 modprobe usbserial && insmod ch341.ko

如果还有什么问题,请对应上文两个连接仔细研究一下

下载包:http://www.cublog.cn/u1/39518/showart_2081711.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3093/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2010-6-9 16:20
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]