linux usb子系统.框架

来源:互联网 发布:无线通信网络 编辑:程序博客网 时间:2024/05/16 01:55

关键词: linux, 驱动,usb


USB驱动组成部分:

  •  USB的bus驱动。
  •  usb_core。当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息,例如生产厂商ID和产品的ID,或者是设备所属的class、subclass跟protocol,以便确定应该调用哪一个驱动处理该设备。
  •  usb的设备驱动。

架构

    USB core完成了大部分的工作,写USB驱动的时候,只能调用USBcore的接口,USB core会将咱们的请求发送给相应的HCD。USB core会进行整个USB系统的初始化,比如申请struct bus_type usb_bus_type,然后会扫描USB总线。一个USB键盘,那么就为它准备一个structdevice赋值,并插入devices链表中来。每一个USB设备的驱动程序都会对应一个struct usb_driver结构,USB core为每一个设备驱动准备了一个函数,让把 driver插入到usb_bus_type中的drivers链表中去。

        USB主机控制器负责USB总线通信,处理usb状态,管理状态并报告状态信息。数据串行/解串行。生成frame或microframe。处理数据传输的请求。处理usb总线协议。差错控制和电源管理。提供root hub功能让设备连接。根据协议将数据包分发到usb core。

        其中USB Core 和USB HCDriver已经由Linux内核实现,开发USB驱动程序就是利用USB Core的API开发USB Device Driver。

配置

一个USB接口对应一个USB驱动。一个接口可以有多个设置。

驱动函数

内核参考代码Kernel\drivers\usb\core 

参考

嵌入式Linux下的USB驱动开发.

LINUX下基于USB子系统的驱动编程   2003中国计算机大会

http://libusb.sourceforge.net/api-1.0/





0 0
原创粉丝点击