首页 > Linux考试认证

导读:Usb_skeleton.c,是USB驱动的框架,适合USB驱动的初学者。

时间:2010-08-20 02:57:33  作者:  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
来源:中国IT实验室2010/8/18【考试大:中国教育考试第一门户】模拟考场视频课程字号:T T导读:Usb_skeleton.c,是USB驱动的框架,适合USB驱动的初学者。1.结构体内核其......
来源:中国IT实验室 2010/8/18 【考试大:中国教育考试第一门户】 模拟考场 视频课程 字号:T T 导读:Usb_skeleton.c,是USB驱动的框架,适合USB驱动的初学者。

  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;

如果您需转载 导读:Usb_skeleton.c,是USB驱动的框架,适合USB驱动的初学者。,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门