Linux USB驱动
风雨兼程8023
这个作者很懒,什么都没留下…
展开
-
USB驱动程序(一)————USB主机控制器驱动——OHCI分析
本文以 2440-ohci 驱动为例,简单分析 USB 主机控制器驱动 根 Hub 的注册过程,以及 USB设备的枚举过程,并不涉及USB协议,单纯分析驱动框架流程。无论是hub还是普通的usb设备,它们注册到 usb_bus_type 都会经历两次 Match ,因为第一次注册进来时,是将整个设备作为一个 device 注册,然后在通用的 devices 驱动程序 usb_generic_dri转载 2017-05-16 10:24:25 · 1391 阅读 · 0 评论 -
USB驱动程序(二)————USB描述符、URB、管道
大家常说,一个设备通常有多个配置,配置通常有多个接口,接口通常有多个端点。接口代表逻辑上的设备,比如声卡分为 录音和播放。访问设备时,访问的是某个接口(逻辑设备)。除了端点0之外,每个端点只支持一个传输方向,一种性质的传输传输数据时,读写某个端点,端点是数据通道。 本文首先分析设备、配置、接口、设置、端点之间的关系,然后根据 2440-ochi 驱动程序,分析一个设备注册到内核时,它转载 2017-05-16 10:26:29 · 672 阅读 · 0 评论 -
USB驱动程序(三)——鼠标驱动程序(中断传输)
本文以 usbmouse.c 为例,简单分析usb鼠标驱动程序。[cpp] view plain copy print?static int __init usb_mouse_init(void) { int retval = usb_register(&usb_mouse_driver); if (retv转载 2017-05-16 10:27:41 · 773 阅读 · 0 评论 -
USB驱动程序(四)——键盘驱动(控制传输)
本文以 usbkbd.c 为例,分析 usb 键盘驱动程序。[cpp] view plain copy print?static int __init usb_kbd_init(void) { int result = usb_register(&usb_kbd_driver); if (result ==转载 2017-05-16 10:28:30 · 1707 阅读 · 0 评论 -
USB驱动程序(五)————USB驱动函数总结
pipe 管道 管道是USB设备通信的通道,内核中提供了创建管道的宏,从宏中我们可以分析出,管道是一个 int 型的变量,由设备号、端点地址、端点类型组合而成。usb_[snd|rcv][ctrl|int|bulk|isoc]pipe(dev, endpoint)例:struct usb_device *dev = interface_to_usbdev(intf);struc转载 2017-05-16 10:30:54 · 1355 阅读 · 0 评论