vxworks-usb-mouse-driver分析_第1頁
已閱讀1頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Vxwksusbmouse驅(qū)動分析概述:最近在做嵌入式vxwks下usb觸摸屏設(shè)計(jì),參考了vxwks里面的usbmouse驅(qū)動的代碼,分析了usbmouse驅(qū)動,根據(jù)自己的理解,寫這個文檔。如有任何問題請聯(lián)系yxj_5421@,轉(zhuǎn)載請標(biāo)明出處。系統(tǒng)資源:Vxwks6.71、USB主機(jī)驅(qū)動棧模型原理USB主機(jī)驅(qū)動棧模型下圖所示:USB主控制器(USBHC)USB主控制器驅(qū)動(HCD)USB總線驅(qū)動(USBD)USB客戶軟件USB設(shè)備類驅(qū)動

2、主機(jī)應(yīng)用軟件應(yīng)用層設(shè)備驅(qū)動層USB核心驅(qū)動層主機(jī)控制器驅(qū)動層硬件層1.1硬件層在USB主機(jī)驅(qū)動棧的最底部是USB主控制器(USBHC,即USBHostController)。目前,USB主控制器可分為三類:通用型主控制器接口(UHCI)、開放型主控制器接口(OHCI)和增強(qiáng)型主控制接口和增強(qiáng)型主控制接口(EHCI)。其中,UHCI和OHCl支持USBl1低速接口,EHCl支持USB20高速接口。1.2主控制器驅(qū)動層對予每一類型的主控制器

3、都有一個與硬件獨(dú)立的USB主控制器驅(qū)動(HostControllerDriver,簡稱HCD)。WindRiver提供了兩個驅(qū)動:usbHedUheiLib(UHCI主控制器庫)和usbHcdohciLib(OHCl主控制器庫)。該模塊向下直接與USB主控制器硬件進(jìn)行交互操作,向上與USBD層的功能接口,提供各種功能函數(shù)的調(diào)用,支持對上層模塊封裝具體的HCD驅(qū)動的實(shí)現(xiàn)。安裝驅(qū)動的IO函數(shù),添加驅(qū)動到驅(qū)動表里面接著調(diào)用驅(qū)動層初始化函數(shù)if

4、(usbMouseDevInit()==OK)usbMouseLib.c(targetsrcdrvusb)printf(“usbMouseDevInit()returnedOKn“)這個函數(shù)如果成功,會輸出打印上面的信息表明驅(qū)動已經(jīng)加載,并且和usb設(shè)備已經(jīng)匹配上。接著調(diào)用驅(qū)動層動態(tài)注冊函數(shù)if(usbMouseDynamicAttachRegister(usbMseDrvAttachCallback(void)NULL)!=OK)us

5、bMouseLib.c(targetsrcdrvusb)這個函數(shù)會把usbMseDrvAttachCallback保存在驅(qū)動層創(chuàng)建的一個隊(duì)列里面,當(dāng)usb設(shè)備熱插拔時(shí),都會調(diào)用這個函數(shù)。如果已經(jīng)插入了usbmouse,就會馬上調(diào)用usbMseDrvAttachCallback,參數(shù)為USB_MSE_ATTACH,如果沒有插入,那么驅(qū)動加載已經(jīng)完成了??磚sbMseDrvAttachCallback(usrUsbMseInit.c(tar

6、getconfigcompssrc))因?yàn)榈谝淮螀?shù)是USB_MSE_ATTACH,就會進(jìn)入if(attachCode==USB_MSE_ATTACH)這個分支:首先調(diào)用驅(qū)動層的if(usbMouseSioChanLock(pChan)!=OK),標(biāo)記SIO_CHANstructure已經(jīng)在使用接著調(diào)用sprintf(mseName“%s%d“USB_MSE_NAMEmseCount)if(usbMseDevCreate(mseName

7、pChan)!=OK)創(chuàng)建設(shè)備文件,即創(chuàng)建“usbMoX“,X由mseCount決定,同時(shí)創(chuàng)建文件層設(shè)備結(jié)構(gòu),并放在鏈表里面,調(diào)用iosDevAdd將設(shè)備添加到系統(tǒng)設(shè)備列表里面接著調(diào)用if(usbMseDevFind(pChanreturn根據(jù)pchan在鏈表里面找到這個usb設(shè)備的文件層設(shè)備結(jié)構(gòu)接著調(diào)用if((pChanpDrvFuncscallbackInstall)(pChanSIO_CALLBACK_PUT_MOUSE_REPT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論