/* Driver structure we register with the USB core */ static struct usb_driver usb_serial_driver = {
name = "usbserial",
probe = usb_serial_probe,
disconnect = usb_serial_disconnect,
no_dynamic_id = 1, }; 前段时间写了篇的文章, 描述了自己如何为高通的一个usb modem 设备写驱动的过程, 最近发现实际上可以使用 linux 自带的一个叫 usbserial 的模块作为这个 modem 的驱动并能良好的工作, 所以写了这片文章来详细的分析下 usbserial 模块的源码(2
应该来说, 对于那些仅仅是用 USB 来通信, 在上层可看作 tty 设备, 不属于任何USB 设备类型, 没有什么流控等的普通USB 设备来说都可以使用这个驱动来作为设备驱动程序
下面就来对这样一种通用的驱动程序来进行详细的分析
不对之处敬请指正
为了能让 usbserail 模块支持我的设备, 我必须在命令行上输入如下命令: sudo modprobe usbserial vendor=0x12d1 product=0x1003 该命令用特权用户来加载 usbserial 模块,并把该模块依赖的模块一并加载进系统, 同时它还设置了usbserial 的两个参数: vendor, product, 很显然这两个参数是厂商 ID 和设备 ID, 而作用就是用于匹配设备
首先, 当然是要知道 usbserial 模块由哪些文件编译而成, 这样才能有目的性的去分析其代码
而 要 知 道 其 组 成 当 然 是 去 其 目 录 下 看 Makefile 了, 它 位 于