嵌入式Linux的USB驅(qū)動設(shè)計
1.3 USB驅(qū)動程序框架
1.3.1 基本數(shù)據(jù)結(jié)構(gòu)
usb-skel設(shè)備使用自定義結(jié)構(gòu)usb_skel記錄設(shè)備驅(qū)動用到的所有描述符,該結(jié)構(gòu)定義如下:
1.3.2 驅(qū)動程序初始化和注銷
同其他所有的Linux設(shè)備驅(qū)動程序一樣,usb-skel驅(qū)動使用module_init()宏初始化函數(shù),使用module_exit()宏注銷函數(shù)。usb-skel驅(qū)動的初始化函數(shù)usb_skel_init()函數(shù),定義如下:
在USB驅(qū)動中調(diào)用usb_deregister()函數(shù)注銷usb-skel設(shè)備驅(qū)動,函數(shù)定義如下:
1.3.3 初始化設(shè)備
從skel_driver結(jié)構(gòu)可以知道usb-skel設(shè)備的初始化函數(shù)是skel_probe()函數(shù),設(shè)備初始化主要是探測設(shè)備類型,分配USB設(shè)備用到的urb資源,注冊USB設(shè)備操作函數(shù)等。
skel_class結(jié)構(gòu)變量記錄了usb-skel設(shè)備信息,定義如下:
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論