[驱动]内核添加USB转串口驱动支持

转自:http://blog.csdn.net/gatieme/article/details/49491325

目录

1. 问题

2. 驱动源码

3. 内核配置

4. 编译内核和模块驱动

5. 加载驱动

问题



这两天为了做gps和arm的通讯,不得不捣鼓这个东东。开发板是创维特jx2410,usb转串口线的芯片是pl2303。还好是这个芯片,让我没费多少力气,就达成了目的。因为linux对它已经支持了,我们只要编译、加载它的驱动就ok了。

驱动源码



一般来说USB转串口的驱动已经集成在内核中,我们无需下载,只需要在编译时进行一些配置即可. 
因此在编译之前我们需要确认自己的内核中有没有USB转串口的驱动. 
usb转串口的驱动位于内核源码根目录下/drivers/usb/serial

 
主要的源码包括usb-serial.coption.c,pl2303.c
针对不同的芯片还有cp210x.c 和 pl2303.c 
例如在我们本例中使用的就是pl2303

内核配置



使用make menuconfig进行配置

主要配置信息如下

-->Device Driver

  -->usb support

    -->USB Serial Converter Surpport相关的选项。

  • usb generic serial driver选中
  • usb prolific 2303 single port serial driver配成M。

具体配置如下图所示 
首先打开menuconfig,进入Device Drivers驱动配置页面 
 
进入usb support USB驱动配置页面主要配置信息如下 
usb support下 

选择USB Serial Converter Surpport相关的选项。 

选中USB Serial Converter Surpport和 
usb generic serial driver 

最后选择对应的芯片,注意这里选择为M,将驱动编译成模块,动态加载

编译内核和驱动模块

make zImage, make modules 
 
make modules 

加载驱动



最后在源码目录下pl2303.ko 就是我们需要的驱动,在板子上直接insmod即可

问题:

1. usb设备调试命令

lsusb: 列出usb设备和属性, lsusb -v可以查看设备的详细属性

ls /dev/tty*: 查看usb设备是否有加载成功

2. make dep/make module, insmod/rmmod, depmode/modprobe三组的具体用法

http://www.cnblogs.com/jacklikedogs/p/4659249.html

  • 这里面提到加载内核驱动的正常流程,首先拷贝*.ko文件到/lib/module/`uname -r`/kernel/driver/usb, 其次执行depmode -a建立依赖,更新module.dep,最后运行modprobe加载模块
  • modprobe相较于insmod的话,更加智能,会根据module.dep建立的模块依赖关系,安排加载顺序,若insmod则可能会出现undefined symbol等问题
  • 所以在加载pl2303.ko驱动,只要depmod -a, 后使用modprobe pl2303.ko即可,不需要再有insmod usb-serial.ko, insmod option.ko, insmod pl2303.ko等操作

3. 除了在rc中添加insmod, 开机使用modprobe如何自动加载模块?

  • cp yourdrivername.ko /lib/modules/`uname -r`/kernel/drivers/misc
  • 编辑/lib/modules/`uname -r`/modules.dep,设置驱动程序之间的关联,增加一行: /lib/modules/`uname -r`/kernel/drivers/misc/yourdrivername.ko, 或者使用depmode -a应该也是可以的,该文件,会一直保存的,不随断电而消失
  • 编辑/etc/rc.d/rc.local,增加一行: /sbin/modprobe yourdrivername

4. 将pl2303.ko和option.ko, usb-serial.ko拷贝到板子的/lib/modules/3.14.**/kernel/drivers/usb下,系统启动会自动加载吗,不需要insmod?

时间: 2024-12-23 11:26:52

[驱动]内核添加USB转串口驱动支持的相关文章

usb转串口驱动怎么安装 usb转串口驱动安装异常的解决方法

usb转串口是我们经常需要用到的一种操作方式.在实际操作中,我们只需要用一根usb接口和串口的转接线就能完成usb设备在串口设备中的应用.但是,我们在转换中经常遇到转换之后不能读取硬件的现象,这是因为你电脑中安装usb转串口的驱动程序异常导致的问题.我们怎么才能正确的安装usb转串口的驱动呢?下面,我就为大家介绍一下usb转串口驱动的正确安装方法. usb转串口驱动安装异常的解决办法因操作系统的不同而有所差异.我们按照系统的不同,将usb转串口驱动异常的解决办法进行分类介绍. 在XP系统中usb

debian下使用dynamic printk分析usb转串口驱动执行流程

看了一篇文章<debug by printing>,文中提到了多种通过printk来调试驱动的方法,其中最有用的就是"Dynamic debugging". “Dynamic debugging"的官方文档:http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/dynamic-debug-howto.txt?id=HEAD "Dyanmic de

USB转串口驱动安装及注意事项

时间:2011年3月6日 个人日记实例:USB转串口驱动安装与设置一.首先,把USB转串口驱动的安装光盘放入驱动,然后找到相应的安装文件安装.(一般情况下选择"304")如果出现安装失败的情况,可以试着先把线拔出来再重新安装.一定要在点击安装后看到安装成功后即可.二.驱动安装成功后,打开你所要应用的软件.查看其所需要的端口.查看到了所需要的端口后,打开“设备管理器”.修改线的端口为软件所需的端口.如:软件的端口是COM1,线的端口是COM3,你就把线的端口修改为COM1.“设备管理器”

STM32 USB转串口驱动移植到SylixOS中遇到的问题总结

1. 简介         由于客户项目需求,需要在STM32的硬件平台上实现USB转串口的功能,由于ST公司基于STM32硬件平台实现了相应的USB库以方便开发者进行开发,因此,在SylixOS下实现USB转串口功能时对该USB库进行了移植.由于该USB库的实现是基于STM32的裸机代码实现,因此在移植的过程中,不需要做过多的修改.         下面章节主要介绍在移植STM32的USB转串口驱动到SylixOS下遇到的问题以及对应的解决方法.对于其中的有些解决方法在移植STM32其他外设驱

linux下usb转串口驱动分析【转】

转自:http://blog.csdn.net/txxm520/article/details/8934706 首先说一下linux的风格,个人理解 1. linux大小结构体其实是面向对象的方法,(如果把struct 比作类,kmalloc就是类的实例化,结构体里面的函数指针就是方法,还有重构,多态) 2. 在linux里面,设备是对象,驱动也是对象,并且这两个是分开的 现在我们来看驱动的总体架构 并不用太在意这个图,对用户来说usb_serial设备就是普通的串口设备 我们可以看驱动里面几个

Mac OS X Yosemite &amp; Arduino安装CH340 USB转串口驱动

新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调试和烧录程序.1.安装CH340驱动(驱动下载地址:http://www.wch.cn/download/CH341SER_MAC_ZIP.html)2.打开终端运行以下命令:  sudo nvram boot-args="kext-dev-mode=1"  sudo Reboot

USB转串口驱动安装失败解决方法

以前安过usb转串口程序,后来在设备管理器中又消失了.我在问题出现之前正在插过360wifi,自动安装了wifi驱动,可能是安装过程修改了串口的一些参数,例如占用了之前的串口,当之前的串口线再次接入时,系统该串口的的驱动程序不一样,于是出现问题.于是,我尝试将USB转串口的端口修改一下,居然可以了.修改方法如图: 右键通信端口(COM2),属性,端口设置,高级,把com号换一个,确定,把usb拔了重插就出现USB转串口的图标了,图1是安好的,之前没有这个COM3这个. . 图1 图2

Linux usb转串口驱动

Linux USB转串口驱动程序: /* * USB Serial Converter driver */ #include <linux/kernel.h> #include <linux/errno.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/smp_lock.h> #include <linux/tty.h> #include <li

关于Win8 用不了USB转串口驱动

win8系统必需要关闭设备驱动自己主动更新,否则联网更新的驱动是用不了的.操作过程例如以下: 打开控制面板,搜索"设备".更改设备安装设置 然后再安装PL2303_Prolific_DriverInstaller_v10518.exe 驱动就可以正常使用