电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

LINUX下USB驱动VIP免费

LINUX下USB驱动_第1页
1/19
LINUX下USB驱动_第2页
2/19
LINUX下USB驱动_第3页
3/19
Linux 下USB 驱动之skeleton 分析 1.结构体 内核其实就是一坨坨的数据结构,加上一根根链表。 对于初学者,如果直接看 USB 驱动代码,大概会被那些名字相近的结构体弄得晕头转向,比如 usb_host_interface 和 usb_interface,看着看着就把两个混淆了。所以,在学习 USB 驱动之前,建议把相关结构体都拎出来看一下,其实,也就那么几个结构体在那装神弄鬼。USB skeleton 驱动中用到的主要字段已用蓝色标出: endpoint: struct usb_host_endpoint { struct usb_endpoint_descriptor desc; struct list_head urb_list; void *hcpriv; unsigned char *extra; int extralen; }; struct usb_endpoint_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bEndpointAddress; __u8 bmAttributes; __le16 wMaxPacketSize; __u8 bInterval; __u8 bRefresh; __u8 bSynchAddress; } __attribute__ ((packed)); bEndpointAddress,最高位用来判断传输方向: #define USB_ENDPOINT_NUMBER_MASK 0x0f #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_DIR_OUT 0 #define USB_DIR_IN 0x80 bmAttributes,表示endpoint 的类型: #define USB_ENDPOINT_XFERTYPE_MASK 0x03 #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_ISOC 1 #define USB_ENDPOINT_XFER_BULK 2 #define USB_ENDPOINT_XFER_INT 3 bInterval,如果该endpoint 是interrupt 类型的(USB 鼠标驱动就是该类型),那么bInterval 就表示中断时间间隔,单位毫秒。 interface: struct usb_interface { struct usb_host_interface *altsetting; struct usb_host_interface *cur_altsetting; unsigned num_altsetting; int minor; enum usb_interface_condition condition; struct device dev; struct class_device *class_dev; }; struct usb_host_interface { struct usb_interface_descriptor desc; struct usb_host_endpoint *endpoint; char *string; unsigned char *extra; int extralen; }; struct usb_interface_descriptor { __u8 bLength; __u8 bDescriptorType; __u8 bInterfaceNumber; __u8 bAlternateSetting; __u8 bNumEndpoints; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol;...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

LINUX下USB驱动

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部