詳解嵌入式Linux的USB驅動(dòng)設計
圖2 USB驅動(dòng)程序層次圖
1.3 USB驅動(dòng)程序框架
1.3.1 基本數據結構
usb-skel設備使用自定義結構usb_skel記錄設備驅動(dòng)用到的所有描述符,該結構定義如下:
1.3.2 驅動(dòng)程序初始化和注銷(xiāo)
同其他所有的Linux設備驅動(dòng)程序一樣,usb-skel驅動(dòng)使用module_init()宏初始化函數,使用module_exit()宏注銷(xiāo)函數。usb-skel驅動(dòng)的初始化函數usb_skel_init()函數,定義如下:
sb_skel_init()函數調用內核提供的usb_register()函數注冊了一個(gè)usb_driver類(lèi)型的結構變量,該變量定義如下:
其中usb_skel設備的USB ID映射表定義如下:
在USB驅動(dòng)中調用usb_deregister()函數注銷(xiāo)usb-skel設備驅動(dòng),函數定義如下:
1.3.3 初始化設備
從skel_driver結構可以知道usb-skel設備的初始化函數是skel_probe()函數,設備初始化主要是探測設備類(lèi)型,分配USB設備用到的urb資源,注冊USB設備操作函數等。
skel_class結構變量記錄了usb-skel設備信息,定義如下:
name變量使用%d通配符表示一個(gè)整型變量,當一個(gè)usb-skel類(lèi)型的設備連接到USB總先后會(huì )2按照子設備編號自動(dòng)設置設備名稱(chēng)。Fops設備操作函數結構變量,定義如下:
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論