转自: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如何自动加载模块

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

4. 理解depmod -a和modprobe

  • depmod -a: 通过读取/lib/modules/version下的每一个模块来创建模块的依赖性列表,也就是/lib/modules/version下的modules.dep文件,所以执行depmod -a不需要到特定目录下,且待加载模块需要拷贝到/lib/modules/version目录下
  • modprobe: modprobe pl2303, 不需要pl2303.ko, modprobe会读取modules.dep文件,并决定模块加载顺序。

5. 将pl2303.ko和option.ko, usb-serial.ko拷贝到板子的/lib/modules/3.14.**/kernel/drivers/usb下->depmod -a->modprobe, 系统启动会自动加载吗?

在测试pl2303.ko,发现系统启动会自动加载,不知什么原因?

6. Make zImage, make modules, make modules_install怎么理解?

当menuconfig中将模块设置为"M"时,make zImage不会把模块编译进内核。这时,可以使用make modules编译模块源码为*.ko文件,然后通过make modules_install动态加载该模块。

[usb/uart]内核添加USB转串口驱动支持的更多相关文章

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

    转自:http://blog.csdn.net/gatieme/article/details/49491325 目录 1. 问题 2. 驱动源码 3. 内核配置 4. 编译内核和模块驱动 5. 加载 ...

  2. 内核添加USB模块

    Device Drivers->SCSI device support->SCSI disk support Device Drivers->USB support->Supp ...

  3. (实例)Linux 内核添加exfat驱动

    背景: 由于exfat是常用的文件系统格式,而Linux由于版权的问题,没有在官方中添加有关的驱动. 但是 微软也同意开源了,所以比较新的 Linux 会支持这一块. 为了支持exfat的驱动,我们需 ...

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

    看了一篇文章<debug by printing>,文中提到了多种通过printk来调试驱动的方法,其中最有用的就是"Dynamic debugging". “Dyna ...

  5. Linux 串口、usb转串口驱动分析(2-2) 【转】

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186852 Linux 串口.usb转 ...

  6. Linux 串口、usb转串口驱动分析(2-1) 【转】

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4186851 Linux 串口.usb转 ...

  7. linux驱动基础系列--Linux 串口、usb转串口驱动分析

    前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...

  8. 解决三星官方移植的内核默认是没有打开支持V4L USB devices

         在linux比较新的kernel,都标配了各类摄像头的驱动支持,不用我们自己移植驱动,只需通过make menuconfig配置内核支持我们所需的摄像头类型即可.以下是在三星官方内核中配置V ...

  9. usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示

    一般在安装一些usb转串口驱动时会出现“文件的哈希值不在指定的目录”这样的提示,那么怎么解决呢?知道的别喷我哦,我只是再普及一下,嘿嘿1.鼠标移到右下角,点击“设置”,再点击“更改电脑设置”2.点击最 ...

随机推荐

  1. 【laravel5.4】引入自定义类库+卸载已有的自定义库(以引入钉钉应用为例)composer dumpautoload -o

    本文之前,首先感谢: Azeroth_Yang  传送门:https://blog.csdn.net/zwrj1130/article/details/73467320 强烈建议引入的类 都是含有命名 ...

  2. ubuntu 重新挂载home

    vmware虚拟机下操作: 1 在Vmware中创建新硬盘. 2 启动Ubuntu 在终端输入:sudo fdisk -l ,可以看到 -------------------------------- ...

  3. 使用springboot遇到的的异常

    Unregistering JMX-exposed beans on shutdown <dependency> <groupId>org.springframework.bo ...

  4. 百度UEditor富文本编辑器去除过滤div等标签

    将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找到如下的代 ...

  5. X-Forwarded-For的一些理解

    X-Forwarded-For 是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址(其实这个真实未必是真实的,后面会说到). 那为什么 Web 服务器只有通过 X- ...

  6. python matplotlib.pyplot画矩形图 以及plt.gca()

    plt的Rectangle参数: 第一个参数是坐标(x,y),即矩形的画图的起点坐标,这个起点坐标不是一味地从左下角开始画,而是对应整个图中坐标原点,即(0,0). 第二个参数是矩形宽度 第三个坐标是 ...

  7. DBA_Oracle Erp R12系统文件结构(概念)

    20150609 Created By BaoXinjian

  8. struts2 ValueStack详解,页面获取值el表达式、ognl表达式

    http://www.blogjava.net/max/archive/2007/04/28/114417.html 我想用的是el表达式! http://www.cnblogs.com/belief ...

  9. 云从科技 OCR任务 pixel-anchor 方法

    云从科技提出了一种端到端的深度学习文本检测框架Pixel-Anchor,通过特征共享的方式高效的把像素级别的图像语义分割和锚检测回归放入一个网络之中, 把像素分割结果转换为锚检测回归过程中的一种注意力 ...

  10. 温故而知新 gulp.src 指定数组文件夹

    gulp.src语法是基于这个库来实现的,所以详情请看这个API: https://www.gulpjs.com.cn/docs/api/ https://github.com/isaacs/node ...