usb鼠標驅動注解及測試

usb鼠標驅動注解及測試

ID:32658499

大?。?8.49 KB

頁數(shù):13頁

時間:2019-02-14

usb鼠標驅動注解及測試_第1頁
usb鼠標驅動注解及測試_第2頁
usb鼠標驅動注解及測試_第3頁
usb鼠標驅動注解及測試_第4頁
usb鼠標驅動注解及測試_第5頁
資源描述:

《usb鼠標驅動注解及測試》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫

1、usb鼠標驅動注解及測試收藏參考2.6.14版本屮的driver/usb/input/usbmouse.Co鼠標驅動可分為兒個部分:驅動加載部分、probe部分、open部分、urb回調函數(shù)處理部分。下文陰影部分為注解。一、驅動加載部分staticint_initusb_mouse_init(void){intretval=usb_register(&usb_mouse_driver);//注冊鼠標驅動if(retval==0)info(DRIVER_VERSIONDRIVER_DESC);returnretval;}其中usb_mouse_driver的定義為:

2、staticstructusbdriverusbmousedriver={.owner?name.probe.disconnect.id_table=THIS_MODULE,=,'usbmouseH/=usb_mouse_probe,=usbmousedisconnect.=usbmouseidtable,如果注冊成功的話,將會調用usb_mouse_probe0那么什么時候才算注冊成功呢?和其它驅動注冊過程一樣,只有在其對應的“總線”上發(fā)現(xiàn)匹配的“設備”才會調用probeo總線兀配的方法和具體總線相關,如:platform_bus_type中是判斷驅動名稱和平臺

3、設備名稱是否相同;那如何確認usb總線的匹配方法呢?Usb設備是注冊在usb_bus_type總線下的。查看usb_bus_type的匹配方法。structbus_typeusb_bus_type={.name=.match=.hotplug=.suspend=.resume=};"usb1;usbdevicematch,usb^hotplug,usb_generic_suspend,usb_generic_resume,其中usb_device_match建義了匹配方法staticintusb_device_match(structdevice*dev,stru

4、ctdevice_driver*drv)structusbjnterface*intf;structusbdriver*usbdrv;conststructusb_device_id*id;/*checkforgenericdriver,whichwedon'tmatchanydevicewith*/if(drv==&usb_generic_driver)return0;intf=to_usb」nterface(dev);usb_drv=to_usb_driver(drv);id=usb_match_id(intf,usb_drv->id_table);if(id

5、)return1;return0;}可以看出usb的匹配方法是usb_match_id(intf,usb_drv->id_table),也就是說通過比對“dev屮intf信息”和“usb_drv->id_table信息”,如果匹配則說明驅動所對應的設備已經(jīng)添加到總線上了,所以接下了就會調用drv中的probe方法注冊usb設備驅動。usb_mouse_id_table的定義為:staticstructusb_device_idusb_mouse_id_table[]={#defineUSB」NTERFACE」NFO(cl,sc,pr).match_flags=U

6、SB_DEVICE_ID_MATCH_INT_INFO,.blnterfaceClass=(cl),.blnterfaceSubClass=(sc),.blnterfaceProtocol=(pr)鼠標設備遵循USB人機接口設備(HID),在HID規(guī)范中規(guī)定鼠標接口類碼為:接口類:0x03接口子類:0x01接口協(xié)議:0x02這樣分類的好處是設備廠商可以直接利用標準的驅動程序。除了HID類以外還有Massstorage>printer^audio等#defineUSB_DEVICE_ID_MATCH_INT_INFO(USBDEVICEIDMATCHINTC

7、LASSUSBDEVICEIDMATCHINTSUBCLASS

8、USBDEVICEIDMATCHINTPROTOCOL)兀配的過程為:usb_match_id(structusb_interface*interface,conststructusb_device_id*id){structusb_host_interface*intf;structusb_device*dev;/*proc_connectinfoindevio.cmaycalluswithid==NULL.*/if(id==NULL)returnNULL;intf=interface->cur_a

9、ltset

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。