第8章--USB设备驱动移植-Linux系统移植(第2版)-教学课件.ppt
《第8章--USB设备驱动移植-Linux系统移植(第2版)-教学课件.ppt》由会员分享,可在线阅读,更多相关《第8章--USB设备驱动移植-Linux系统移植(第2版)-教学课件.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第8章 USB设备驱动移植8.1 USB协议8.2 USB主机驱动8.3 USB设备驱动8.4 USB鼠标键盘驱动8.5 U盘驱动8.1 USB协议8.1.1 USB协议的系统主要组成部分8.1.2 总线物理拓扑结构 8.1.3 USB设备、配置、接口、端点8.1.4 USB设备状态8.1.5 USB枚举过程8.1.6 USB请求块(URB)8.1.1 USB协议的系统主要组成部分USB系统主要可分为3个部分:USB的连接部分、USB的设备和USB的主机。8.1.2 总线物理拓扑结构 USB系统中的主机和设备采用的是星形连接方式。1.设备描述符USB设备描述符被定义为usb_device_de
2、scriptor结构体struct usb_device_descriptor _u8 bLength;/描述符长度_u8 bDescriptorType;/描述符类型编号_le16 bcdUSB;/USB版本号_u8 bDeviceClass;/USB分配的设备类code_u8 bDeviceSubClass;/USB分配的子类code_u8 bDeviceProtocol;/USB分配的协议code_u8 bMaxPacketSize0;/endpoint0最大包大小_le16 idVendor;/厂商编号_le16 idProduct;/产品编号_le16 bcdDevice;/设备出厂
3、编号_u8 iManufacturer;/描述厂商字符串的索引_u8 iProduct;/描述产品字符串的索引_u8 iSerialNumber;/描述设备序列号字符串的索引_u8 bNumConfigurations;/可能的配置数量 _attribute_(packed);2.配置描述符USB配置描述符在内核中被定义为usb_host_config结构体struct usb_config_descriptor _u8 bLength;/描述符长度_u8 bDescriptorType;/描述符类型编号_le16 wTotalLength;/配置所返回的所有数据的大小_u8 bNumInte
4、rfaces;/配置所支持的接口数_u8 bConfigurationValue;/Set_Configuration命令需要的参数值_u8 iConfiguration;/描述该配置字符串的索引值_u8 bmAttributes;/供电模式的选择_u8 bMaxPower;/设备从总线提取的最大电流 _attribute_(packed);3.接口描述符USB接口描述符在内核中被定义为usb_interface结构体struct usb_interface_descriptor _u8 bLength;/描述符长度_u8 bDescriptorType;/描述符类型_u8 bInterfac
5、eNumber;/接口的编号_u8 bAlternateSetting;/备用的接口描述符编号_u8 bNumEndpoints;/该接口使用的端点数,不包括端点0_u8 bInterfaceClass;/接口类型_u8 bInterfaceSubClass;/接口子类型_u8 bInterfaceProtocol;/接口所遵循的协议_u8 iInterface;/描述该接口的字符串索引值 _attribute_(packed);5.字符串描述符字符串描述符被定义为usb_string_descriptor结构体struct usb_string_descriptor _u8 bLength;
6、/描述符长度_u8 bDescriptorType;/描述符类型_le16 wData1;/UTF-16LE 编码 _attribute_(packed);8.1.4 USB设备状态USB设备状态分为6种状态,分别是连接态、加电态、默认态、编址态、配置态和挂起态。8.1.6 USB请求块(URB)USB请求块(USB request block,URB)是USB设备驱动中用来描述与USB设备通信所用的基本载体和核心数据结构,与网络设备驱动中的sk_buff结构体类似,是USB主机与设备之间传输数据的封装。2.初始化URB函数根据USB的设备端点类型来分,有3种初始化函数。(1)对于中断URB,
7、其初始化函数为:static inline void usb_fill_int_urb(struct urb*urb,struct usb_device*dev,unsigned int pipe,void*transfer_buffer,int buffer_length,usb_complete_t complete_fn,void*context,int interval)urb-dev=dev;urb-pipe=pipe;urb-transfer_buffer=transfer_buffer;urb-transfer_buffer_length=buffer_length;urb-co
8、mplete=complete_fn;urb-context=context;if(dev-speed=USB_SPEED_HIGH)urb-interval=1 interval=interval;urb-start_frame=-1;2.初始化URB函数(2)对于控制URB,其初始化函数为:static inline void usb_fill_control_urb(struct urb*urb,struct usb_device*dev,unsigned int pipe,unsigned char*setup_packet,void*transfer_buffer,int buffe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB 设备 驱动 移植 Linux 系统 教学 课件
限制150内