新闻中心

EEPW首页>嵌入式系统>设计应用> 详解嵌入式Linux的USB驱动设计

详解嵌入式Linux的USB驱动设计

作者: 时间:2014-01-22 来源:网络 收藏

详解嵌入式Linux的USB驱动设计

图2程序层次图

1.3程序框架

  1.3.1 基本数据结构

  usb-skel设备使用自定义结构usb_skel记录设备驱动用到的所有描述符,该结构定义如下:

详解嵌入式Linux的USB驱动设计

  1.3.2 驱动程序初始化和注销

  同其他所有的设备驱动程序一样,usb-skel驱动使用module_init()宏初始化函数,使用module_exit()宏注销函数。usb-skel驱动的初始化函数usb_skel_init()函数,定义如下:

详解嵌入式Linux的USB驱动设计

  sb_skel_init()函数调用内核提供的usb_register()函数注册了一个usb_driver类型的结构变量,该变量定义如下:

详解嵌入式Linux的USB驱动设计

  其中usb_skel设备的USB ID映射表定义如下:

详解嵌入式Linux的USB驱动设计

  在中调用usb_deregister()函数注销usb-skel设备驱动,函数定义如下:

详解嵌入式Linux的USB驱动设计

  1.3.3 初始化设备

  从skel_driver结构可以知道usb-skel设备的初始化函数是skel_probe()函数,设备初始化主要是探测设备类型,分配USB设备用到的urb资源,注册USB设备操作函数等。

  skel_class结构变量记录了usb-skel设备信息,定义如下:

详解嵌入式Linux的USB驱动设计

  name变量使用%d通配符表示一个整型变量,当一个usb-skel类型的设备连接到USB总先后会2按照子设备编号自动设置设备名称。Fops设备操作函数结构变量,定义如下:

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭