![USB驅(qū)動(dòng)編程培訓(xùn)_第1頁(yè)](http://file4.renrendoc.com/view/c699589b7e86df60c799f41d13db52f0/c699589b7e86df60c799f41d13db52f01.gif)
![USB驅(qū)動(dòng)編程培訓(xùn)_第2頁(yè)](http://file4.renrendoc.com/view/c699589b7e86df60c799f41d13db52f0/c699589b7e86df60c799f41d13db52f02.gif)
![USB驅(qū)動(dòng)編程培訓(xùn)_第3頁(yè)](http://file4.renrendoc.com/view/c699589b7e86df60c799f41d13db52f0/c699589b7e86df60c799f41d13db52f03.gif)
![USB驅(qū)動(dòng)編程培訓(xùn)_第4頁(yè)](http://file4.renrendoc.com/view/c699589b7e86df60c799f41d13db52f0/c699589b7e86df60c799f41d13db52f04.gif)
![USB驅(qū)動(dòng)編程培訓(xùn)_第5頁(yè)](http://file4.renrendoc.com/view/c699589b7e86df60c799f41d13db52f0/c699589b7e86df60c799f41d13db52f05.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、USB驅(qū)動(dòng)編程2022/9/41簡(jiǎn)介 USB編碼以及總線數(shù)據(jù)結(jié)構(gòu)USB數(shù)據(jù)流模型USB的PNP管理USB的電源管理USB數(shù)據(jù)包與應(yīng)用程序2022/9/42USB編碼以及總線數(shù)據(jù)結(jié)構(gòu)USB編碼USB總線數(shù)據(jù)結(jié)構(gòu)包傳輸事務(wù)幀結(jié)構(gòu)2022/9/43USB編碼USB接口針腳結(jié)構(gòu):同步時(shí)鐘+數(shù)據(jù):采用了NRZI(Non Return to Zero Invert)反向非歸零編碼;既能保證數(shù)據(jù)傳送的完整,也不需要獨(dú)立的時(shí)鐘信號(hào)2022/9/44包(Package)包的格式:令牌包,數(shù)據(jù)包,握手包2022/9/45用7個(gè)0和1個(gè)1作為同步序列USB傳輸事務(wù)(Transaction)2022/9/46每個(gè)傳輸
2、事務(wù)由三個(gè)包組成。幀結(jié)構(gòu)(Frame)每個(gè)幀內(nèi)數(shù)據(jù)由傳輸事務(wù)組合組成2022/9/47USB總線數(shù)據(jù)結(jié)構(gòu)由于有許多設(shè)備都接到了USB上,因此每1ms產(chǎn)生的傳輸幀是混合的。其中中斷傳輸(Interrupt)和同步傳輸(Isochronous)對(duì)時(shí)間要求高,因此占用了約90的總帶寬,控制傳輸(Control)占用了約10的帶寬,而批量傳輸(Bulk)則使用剩下的可用帶寬2022/9/48USB數(shù)據(jù)流模型USB協(xié)議簡(jiǎn)介USB外設(shè)與總線數(shù)據(jù)流模型模型整體框架參與通信抽象對(duì)象實(shí)際數(shù)據(jù)流向驅(qū)動(dòng)程序與系統(tǒng)內(nèi)核之間的關(guān)系USB驅(qū)動(dòng)例程中的一些回調(diào)接口2022/9/49USB協(xié)議簡(jiǎn)介USB協(xié)議:USB采用輪詢的
3、廣播機(jī)制傳輸數(shù)據(jù),即“令牌包,數(shù)據(jù)包,握手包”;根據(jù)包標(biāo)識(shí)符PID字段,用于識(shí)別數(shù)據(jù)包類型;字段-包-傳輸事務(wù)-幀;不同傳輸模式是通過(guò)相應(yīng)的傳輸事務(wù)序列下實(shí)現(xiàn)的。2022/9/410USB外設(shè)與總線2022/9/411PC機(jī)上USB接口設(shè)備的連接拓?fù)浣Y(jié)構(gòu)數(shù)據(jù)流模型USB必須分層理解:用戶應(yīng)用程序;IO管理器層;驅(qū)動(dòng)程序;硬件抽象層(HAL);硬件外設(shè)2022/9/412模型整體框架客戶軟件:對(duì)設(shè)備功能進(jìn)行操作軟件,它是針對(duì) 物理設(shè)備功能開發(fā)的。USB系統(tǒng):它包括操作系統(tǒng)對(duì)USB支持,USB控制器總線驅(qū)動(dòng),既占硬件也占軟件,好比一個(gè)翻譯。USB設(shè)備驅(qū)動(dòng):客戶端軟件與USB系統(tǒng)的之間的接口。USB
4、控制器將IRP譯碼成USB協(xié)議數(shù)據(jù)傳輸?shù)経SB總線上;2022/9/413參與通信的抽象對(duì)象通道(pipe):就是主機(jī)與設(shè)備之間傳輸?shù)臄?shù)據(jù)的模型共有兩種類型的管道:無(wú)格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)2022/9/414參與通信的抽象對(duì)象邏輯設(shè)備(device):驅(qū)動(dòng)程序?qū)?yīng)硬件實(shí)際功能暴露給操作系統(tǒng)內(nèi)核接口的抽象對(duì)象;每個(gè)設(shè)備都有一個(gè)默認(rèn)的控制端點(diǎn)。配置(Configuration):用于設(shè)置一些結(jié)構(gòu)來(lái)設(shè)定設(shè)備功能接口。接口(Interface):邏輯設(shè)備中功能相近相同的一些端點(diǎn)的集合。端點(diǎn)(EndPonit):位于USB設(shè)備或主機(jī)上的一個(gè)數(shù)
5、據(jù)緩沖區(qū),用來(lái)存放和發(fā)送USB的各種數(shù)據(jù),每一個(gè)端點(diǎn)都有惟一的確定地址,有不同的傳輸特性(如輸入端點(diǎn)、輸出端點(diǎn)、配置端點(diǎn)、批量傳輸端點(diǎn))2022/9/415實(shí)際數(shù)據(jù)流如右圖所示: 客戶軟件通過(guò)USB設(shè)備驅(qū)動(dòng)(USBD)發(fā)送IRQ請(qǐng)求請(qǐng)求傳送數(shù)據(jù); 主機(jī)控制器驅(qū)動(dòng)(HCD)將接收IRQ請(qǐng)求解析成USB傳輸和傳輸事務(wù)。主機(jī)控制器將這些USB傳輸和傳輸事務(wù)打包成USB協(xié)議數(shù)據(jù)包通過(guò)USB總線傳輸給USB設(shè)備交互2022/9/416驅(qū)動(dòng)程序與操作系統(tǒng)之間的關(guān)系USB總線的設(shè)備也屬于即插即用設(shè)備,由上一小節(jié)可知,USB驅(qū)動(dòng)程序主要還是通過(guò)IRP包進(jìn)行數(shù)據(jù)交換,操作系統(tǒng)主要就是通過(guò)PNP管理器與IO管理器
6、與以及部分內(nèi)核對(duì)USB驅(qū)動(dòng)程序的中斷,內(nèi)存資源進(jìn)行管理;2022/9/417操作系統(tǒng)用戶模式IO管理器即插即用PNP管理器操作系統(tǒng)內(nèi)核USB驅(qū)動(dòng)程序硬件抽象層USB硬件設(shè)備USB驅(qū)動(dòng)程序一些例程函數(shù)接口在USB驅(qū)動(dòng)程序入口例程DriverEntry中,DRVER_OBJECT對(duì)象專門在majorFuction數(shù)組預(yù)留以下接口處理相對(duì)應(yīng)的IRP:IRP_MJ_CREATE 以文件形式打開設(shè)備準(zhǔn)備讀寫,調(diào)用其做準(zhǔn)備;IRP_MJ_CLOSE 當(dāng)前用戶關(guān)閉文件(closeHandle)時(shí),調(diào)用它清掃系統(tǒng);IRP_MJ_PNP 處理即插即用的操作IRP_MJ_READ 處理讀文件操作(Read Fil
7、e)IRP_MJ_WRITE 處理寫文件操作(Write File)IRP_MJ_DEVICE_CONTROL 處理來(lái)之硬件對(duì)操作系統(tǒng)的IO控制碼。2022/9/418IRP_MJ_CREAT以文件形式打開設(shè)備,檢查設(shè)備狀態(tài),是否正常工作;取消設(shè)備掛起,打開管道,并將此管道與文件的變量相關(guān)聯(lián);OpenHandleCount內(nèi)核對(duì)象計(jì)數(shù)加一;這是creafile相關(guān)聯(lián)的;2022/9/419IRP_MJ_READ和IRP_MJ_WRITE單獨(dú)一個(gè)例程完成他們:初始化URB,并判斷通道工作方式,并從文件中獲取管道信息。檢查IRP的MDL(a memory descriptor list),根據(jù)讀寫
8、變量設(shè)置URB標(biāo)志位。根據(jù)MDL開辟內(nèi)存,上層用戶模式數(shù)據(jù)映像,構(gòu)造URB請(qǐng)求;2022/9/420PNP即插即用管理器PNP管理器概述以及相關(guān)組件即插即用IRPPNP管理器在USB驅(qū)動(dòng)程序的操作2022/9/421PNP管理器概述什么是PNP管理器呢?PNP plug and play 即插即用設(shè)備管理,其主要有以下四個(gè)作用:操作系統(tǒng)能檢測(cè)新設(shè)備插入,也能檢測(cè)得到設(shè)備的拔出;如果總線接口允許,設(shè)備可以實(shí)現(xiàn)熱插拔,并保證操作系統(tǒng)正常工作;設(shè)備允許軟件配置。操作系統(tǒng)應(yīng)該知道哪些是正確的驅(qū)動(dòng)程序,并智能地加載。2022/9/422PNP即插即用管理器相關(guān)組件2022/9/423即插即用管理程序(用
9、戶模式)用戶模式內(nèi)核模式注冊(cè)表 IO管理器執(zhí)行體即插即用管理程序電源管理程序設(shè)備wdm驅(qū)動(dòng)程序總線驅(qū)動(dòng)程序硬件抽象層HAL即插即用IRP即插即用IRP(IRP_MJ_PNP):由即插即用管理器發(fā)送給設(shè)備驅(qū)動(dòng)程序的;在驅(qū)動(dòng)對(duì)象的主功能函數(shù)內(nèi)有一個(gè)回調(diào)派遣函數(shù)用于處理PNP的IRP包;不用的IRP代表不同的功能,如下表所示:2022/9/4242022/9/425子功能代碼描述IRP_MN_START_DEVICE配置并初始化設(shè)備IRP_MN_QUERY_REMOVE_DEVICE設(shè)備可以被安全的刪除IRP_MN_REMOVE_DEVICE關(guān)閉并刪除設(shè)備IRP_MN_CANCEL_REMOVE_D
10、EVICE忽略以前的QIERY_REMOVEIRP_MN_STOP_DEVICE關(guān)閉設(shè)備IRP_MN_QUERY_STOP_DEVICE詢問(wèn)設(shè)備可以關(guān)閉了嗎IRP_MN_CANCEL_STOP_DEVICE忽略以前的QUERY_STOPIRP_MN_DEVICE_RELATIONS給出指定特征的設(shè)備列表IRP_MN_QUERY_INTERFACE獲得調(diào)用函數(shù)接口地址IRP_MN_CAPABILITIES取得設(shè)備能力IRP_MN_QUERY_RESOURCES取得引導(dǎo)配置IRP_MN_QUERY_RESOURCES_REQUIREMENTS取IO資源需求IRP_MN_QUERY_DEVICE_T
11、EXT獲得描述信息或位置串IRP_MN_QUERY_PNP_DEIVCE_STATE獲取設(shè)備狀態(tài)IRP_MN_QUERY_BUS_INFORMATION*獲取父總線類型IRP_MN_SUPPRISE_REMOVE通知設(shè)備意外被刪除PNP管理器對(duì)USB總線的管理2022/9/426 USB驅(qū)動(dòng)程序在完成即插即拔PNP整過(guò)所操作數(shù)據(jù)結(jié)構(gòu):URP(USB Requst Package)USB請(qǐng)求包,這個(gè)數(shù)據(jù)結(jié)構(gòu)也是通過(guò)操作IRP的內(nèi)核函數(shù)傳送直總線驅(qū)動(dòng)層上。通過(guò)操作URP進(jìn)行對(duì)USB設(shè)備熱插拔的枚舉,配置和刪除。通過(guò)對(duì)URP的PNP管理操作我們可以得到來(lái)自硬件數(shù)據(jù)描述,如:設(shè)備描述符,配置描述符,接
12、口描述符,端點(diǎn)描述符。如圖可見這些數(shù)據(jù)的樹狀結(jié)構(gòu):2022/9/4272022/9/428USB電源管理WDM電源管理模型概述基本概念電源狀態(tài)和設(shè)備狀態(tài)關(guān)于USB電源管理策略USB處理電源管理的基本IRP規(guī)則USB驅(qū)動(dòng)應(yīng)該響應(yīng)的電源管理器發(fā)出IRP2022/9/429WDM電源管理模型基本概念:電源管理器:為了于減少系統(tǒng)不必要的功耗,基于ACPI(Advanced Configuration Power Interface)規(guī)范作為計(jì)算機(jī)全局電源策略,操作系統(tǒng)支持一些用戶接口,用戶可以通過(guò)這些接口控制最終的電源管理策略。電源管理是操作系統(tǒng)通過(guò)處理驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)的。支持PNP的驅(qū)動(dòng)必須支持電源管
13、理,支持電源管理的驅(qū)動(dòng)程序必須支持PNP,兩者是被集成而相互依賴。2022/9/430電源狀態(tài)分以下六個(gè)狀態(tài): 2022/9/431系統(tǒng)電源狀態(tài)含義SO(Working)CPU全功率運(yùn)行S1(Sleeping1)CPU停止,RAM被刷新S2(Sleeping2)CPU不通電,RAM被刷新S3(Sleeping3)CPU不通電,RAM處于低速刷新模式,電源功率輸出降低 S4(Hibemate)系統(tǒng)停止,RAM被保存到磁盤S5(Shutdown)系統(tǒng)停止并關(guān)閉,需要完全引導(dǎo)以恢復(fù)操作設(shè)備電源狀態(tài): 操作系統(tǒng)不直接處理設(shè)備的電源狀態(tài),而是有驅(qū)動(dòng)程序?qū)iT處理。設(shè)備至少要支持D0與D3。2022/9/4
14、32設(shè)備電源狀態(tài)含義D0設(shè)備全功率運(yùn)行D1設(shè)備運(yùn)行于低功耗模式,設(shè)備環(huán)境可能被保留D2設(shè)備運(yùn)行低功率模式,設(shè)環(huán)境可能無(wú)效D3設(shè)備沒(méi)有電,環(huán)境丟失關(guān)于USB電源管理策略USB電源管理策略:USB處理電源管理的基本IRP規(guī)則USB驅(qū)動(dòng)應(yīng)該響應(yīng)的電源管理器發(fā)出IRP2022/9/433用戶模式的USB數(shù)據(jù)讀寫與應(yīng)用程序用戶模式與驅(qū)動(dòng)包IRP對(duì)應(yīng)關(guān)系IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_WRITE用戶模式應(yīng)用程序打開設(shè)備用戶模式應(yīng)用程序讀取USB設(shè)備2022/9/434USB設(shè)備數(shù)據(jù)讀寫用戶模式下API與驅(qū)動(dòng)程序的IPR對(duì)應(yīng)關(guān)系:2022/9/435用戶API函數(shù)IRP
15、說(shuō)明CreateFileIRP_MJ_CREATE打開設(shè)備ReadFileIRP_MJ_READ從設(shè)備獲取數(shù)據(jù)WriteFileIRP_MJ_WRITE向設(shè)備發(fā)送數(shù)據(jù)CloseFileIRP_MJ_CLOSE關(guān)閉設(shè)備DevicControlIRP_MJ_DEVICE_CONTROL控制操作開打設(shè)備首先已知設(shè)備GUID通過(guò)調(diào)用SetupDiGetClassDev獲得設(shè)備的信息集;在設(shè)備信息集里調(diào)用SetupDiEnumDeviceInterface識(shí)別接口信息;在接口信息中調(diào)用SetupDiGetDeviceInterfaceDetail獲得設(shè)備路徑名;通過(guò)設(shè)備路徑CreateFile打開設(shè)備,
16、此時(shí)內(nèi)核對(duì)應(yīng)發(fā)出IRP_MJ_CREATE,操作系統(tǒng)自動(dòng)訪問(wèn)對(duì)應(yīng)驅(qū)動(dòng)2022/9/436上層應(yīng)用程序讀寫數(shù)據(jù)讀寫數(shù)據(jù)通過(guò)驅(qū)動(dòng)對(duì)象的IRP_MJ_READ與IRP_MJ_WRITE功能例程:使用用戶模式的readfile與writefile API調(diào)用驅(qū)動(dòng)內(nèi)核對(duì)象;建立內(nèi)存映像;通過(guò)內(nèi)存對(duì)齊復(fù)制實(shí)現(xiàn)數(shù)據(jù)交互;還是通過(guò)IRP包來(lái)獲取數(shù)據(jù)2022/9/437總結(jié)簡(jiǎn)要審閱所演示的內(nèi)容確定應(yīng)用培訓(xùn)的方法請(qǐng)求有關(guān)培訓(xùn)單元的反饋2022/9/438更多信息列出其他培訓(xùn)單元列出書籍、文章、電子來(lái)源列出咨詢服務(wù)、其他來(lái)源2022/9/439USB處理電源管理的基本IRP規(guī)則其最基本規(guī)則要遵循以下幾點(diǎn):同步操作必
17、須嚴(yán)格,PDO只能僅且有一個(gè)IRP_MN_QUERY_POWER或者IRP_MN_SET_POWER電源IRP必須一次性處理,不能產(chǎn)生等待事件或者是鎖對(duì)象的系統(tǒng)例程;也是需要分層處理,并且只能用特殊對(duì)象API接受電源管理器的IRPIRP_MN_QUERY_POWER允許失敗,但是IRP_MN_SET_POWER不能失敗。如果是跟電源相關(guān)的IRP,不能像普通IRP一樣處理,特別在傳輸上。2022/9/440USB驅(qū)動(dòng)應(yīng)該響應(yīng)的電源管理器發(fā)出IRP在USB驅(qū)動(dòng)中也是通過(guò)處理IRP來(lái)實(shí)現(xiàn)電源管理:處理電源查詢IRP:IRP_MN_QUERY_POWER查詢是設(shè)備電源,還是系統(tǒng)電源,通過(guò)調(diào)用內(nèi)核函數(shù)HandleSy
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地源熱泵建設(shè)工程項(xiàng)目可行性研究報(bào)告完整立項(xiàng)報(bào)告
- 2025年中國(guó)纜索起重機(jī)市場(chǎng)供需現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 丘東洼陷氈子層井壁失穩(wěn)風(fēng)險(xiǎn)可靠度分析
- 流動(dòng)吸附式藜麥精量排種器設(shè)計(jì)與性能試驗(yàn)
- 大專退學(xué)申請(qǐng)書
- 基于光注入掃頻的微波光子時(shí)頻分析技術(shù)研究
- 番茄SlGDSL和SlHMG1基因參與花柄脫落的機(jī)理分析
- 基于深度學(xué)習(xí)的肝血管血流仿真研究與系統(tǒng)實(shí)現(xiàn)
- 企業(yè)籌建申請(qǐng)書
- 申請(qǐng)更改名字的申請(qǐng)書
- DB43-T 2939-2024 醬腌菜咸胚中亞硝酸鹽的測(cè)定頂空-氣相色譜法
- 藥品不良反應(yīng)監(jiān)測(cè)工作制度及流程
- 護(hù)士延續(xù)注冊(cè)體檢表
- MOOC 中外鐵路文化之旅-華東交通大學(xué) 中國(guó)大學(xué)慕課答案
- 《電力系統(tǒng)自動(dòng)化運(yùn)維綜合實(shí)》課件-通信設(shè)備接地線接頭制作
- 國(guó)際標(biāo)準(zhǔn)《風(fēng)險(xiǎn)管理指南》(ISO31000)的中文版
- 2023年4月自考00808商法試題及答案含解析
- 高中物理 選修1 第四章 光(折射反射干涉衍射偏振)(2024人教版)
- 中醫(yī)外科瘡瘍病
- 計(jì)算機(jī)安全弱口令風(fēng)險(xiǎn)
- 舜宇集團(tuán)2024測(cè)試題
評(píng)論
0/150
提交評(píng)論