USB驅動編程培訓uload_第1頁
USB驅動編程培訓uload_第2頁
USB驅動編程培訓uload_第3頁
USB驅動編程培訓uload_第4頁
USB驅動編程培訓uload_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

USB驅動編程2023/1/181簡介USB編碼以及總線數(shù)據(jù)結構USB數(shù)據(jù)流模型USB的PNP管理USB的電源管理USB數(shù)據(jù)包與應用程序2023/1/182USB編碼以及總線數(shù)據(jù)結構USB編碼USB總線數(shù)據(jù)結構包傳輸事務幀結構2023/1/183USB編碼USB接口針腳結構:同步時鐘+數(shù)據(jù):采用了NRZI(NonReturntoZeroInvert)反向非歸零編碼;既能保證數(shù)據(jù)傳送的完整,也不需要獨立的時鐘信號2023/1/184包(Package)包的格式:令牌包,數(shù)據(jù)包,握手包2023/1/185用7個0和1個1作為同步序列USB傳輸事務(Transaction)2023/1/186每個傳輸事務由三個包組成。幀結構(Frame)每個幀內數(shù)據(jù)由傳輸事務組合組成2023/1/187USB總線數(shù)據(jù)結構由于有許多設備都接到了USB上,因此每1ms產(chǎn)生的傳輸幀是混合的。其中中斷傳輸(Interrupt)和同步傳輸(Isochronous)對時間要求高,因此占用了約90%的總帶寬,控制傳輸(Control)占用了約10%的帶寬,而批量傳輸(Bulk)則使用剩下的可用帶寬2023/1/188USB數(shù)據(jù)流模型USB協(xié)議簡介USB外設與總線數(shù)據(jù)流模型模型整體框架參與通信抽象對象實際數(shù)據(jù)流向驅動程序與系統(tǒng)內核之間的關系USB驅動例程中的一些回調接口2023/1/189USB協(xié)議簡介USB協(xié)議:USB采用輪詢的廣播機制傳輸數(shù)據(jù),即“令牌包,數(shù)據(jù)包,握手包”;根據(jù)包標識符PID字段,用于識別數(shù)據(jù)包類型;字段->包->傳輸事務->幀;不同傳輸模式是通過相應的傳輸事務序列下實現(xiàn)的。2023/1/1810USB外設與總總線2023/1/411PC機上USB接口設備備的連接接拓撲結結構數(shù)據(jù)流模模型USB必須分層層理解::用戶應用用程序;;IO管理器層層;驅動程序序;硬件抽象象層(HAL);硬件外設設2023/1/412模型整體體框架客戶軟件件:對設備功功能進行行操作軟軟件,它它是針對對物理理設備功功能開發(fā)發(fā)的。USB系統(tǒng):它包括括操作系系統(tǒng)對USB支持,USB控制器總總線驅動動,既占占硬件也也占軟件件,好比比一個翻翻譯。USB設備驅動動:客戶端端軟件與與USB系統(tǒng)的之之間的接接口。USB控制器將IRP譯碼成USB協(xié)議數(shù)據(jù)據(jù)傳輸?shù)降経SB總線上;;2023/1/413參與通信的的抽象對象象通道(pipe):就是主機機與設備之之間傳輸?shù)牡臄?shù)據(jù)的模模型共有兩兩種類型的的管道:無格式的流流管道(StreamPipe)和有格式的信信息管道((MessagePipe)2023/1/414參與通信的的抽象對象象邏輯設備(device):驅動程序對對應硬件實實際功能暴暴露給操作作系統(tǒng)內核核接口的抽抽象對象;;每個設備備都有一個個默認的控控制端點。配置(Configuration):用于設置一一些結構來來設定設備備功能接口口。接口(Interface):邏輯設備中中功能相近近相同的一一些端點的的集合。端點(EndPonit):位于USB設備或主機機上的一個個數(shù)據(jù)緩沖沖區(qū),用來來存放和發(fā)發(fā)送USB的各種數(shù)據(jù)據(jù),每一個個端點都有有惟一的確確定地址,,有不同的的傳輸特性性(如輸入入端點、輸輸出端點、、配置端點點、批量傳傳輸端點))2023/1/415實際數(shù)據(jù)流流如右圖所示示:客戶軟件通通過USB設備驅動(USBD)發(fā)送IRQ請求請求傳傳送數(shù)據(jù);;主機控制器器驅動(HCD)將接收IRQ請求解析成成USB傳輸和傳輸輸事務。主機控制器器將這些USB傳輸和傳輸輸事務打包包成USB協(xié)議數(shù)據(jù)包包通過USB總線傳輸給給USB設備交互2023/1/416驅動動程程序序與與操操作作系系統(tǒng)統(tǒng)之之間間的的關關系系USB總線線的的設設備備也也屬屬于于即即插插即即用用設設備備,,由由上上一一小小節(jié)節(jié)可可知知,,USB驅動動程程序序主主要要還還是是通通過過IRP包進進行行數(shù)數(shù)據(jù)據(jù)交交換換,,操操作作系系統(tǒng)統(tǒng)主主要要就就是是通通過過PNP管理理器器與與IO管理理器器與與以以及及部部分分內內核核對對USB驅動動程程序序的的中中斷斷,,內內存存資資源源進進行行管管理理;;2023/1/417操作系統(tǒng)用戶模式IO管理器即插即用PNP管理器操作系統(tǒng)內核USB驅動程序硬件抽象層USB硬件設備USB驅動動程程序序一一些些例例程程函函數(shù)數(shù)接接口口在USB驅動程序入口口例程DriverEntry中,DRVER_OBJECT對象專門在majorFuction數(shù)組預留以下下接口處理相相對應的IRP:IRP_MJ_CREATE以文件件形式式打開開設備備準備備讀寫寫,調用其其做準準備;;IRP_MJ_CLOSE當前用用戶關關閉文文件((closeHandle)時,,調用用它清清掃系系統(tǒng);;IRP_MJ_PNP處理即即插即即用的的操作作IRP_MJ_READ處理讀讀文件件操作作(ReadFile)IRP_MJ_WRITE處理寫寫文件件操作作(WriteFile)IRP_MJ_DEVICE_CONTROL處理來之硬硬件對操作作系統(tǒng)的IO控制碼。2023/1/418IRP_MJ_CREAT以文件形形式打開開設備,,檢查設設備狀態(tài)態(tài),是否否正常工工作;取消設備備掛起,,打開管管道,并并將此管管道與文文件的變變量相關關聯(lián);OpenHandleCount內核對象象計數(shù)加加一;這是creafile相關聯(lián)的的;2023/1/419檢查設備工作狀態(tài)打開設備管道內核對象計數(shù)加一IRP_MJ_READ和IRP_MJ_WRITE初始化初始化URB取得管道建立緩沖區(qū)檢查MDL設置URB標志位內存交換映像數(shù)據(jù)構造URB請求單獨一個個例程完完成他們們:初始化URB,并判斷斷通道工工作方式式,并從從文件中中獲取管管道信息息。檢查IRP的MDL(amemorydescriptorlist),根據(jù)讀寫寫變量設設置URB標志位。。根據(jù)MDL開辟內存存,上層層用戶模模式數(shù)據(jù)據(jù)映像,,構造URB請求;2023/1/420PNP即插即用用管理器器PNP管理器概概述以及及相關組組件即插即用用IRPPNP管理器在在USB驅動程序序的操作作2023/1/421PNP管理器概述什么是PNP管理器呢?PNPplugandplay即插即用設備備管理,其主主要有以下四四個作用:操作系統(tǒng)能檢檢測新設備插插入,也能檢檢測得到設備備的拔出;如果總線接口口允許,設備備可以實現(xiàn)熱熱插拔,并保保證操作系統(tǒng)統(tǒng)正常工作;;設備允許軟件件配置。操作系統(tǒng)應該該知道哪些是是正確的驅動動程序,并智智能地加載。。2023/1/422PNP即插即用管理理器相關組件件2023/1/423即插即用管理程序(用戶模式)用戶模式內核模式注冊表IO管理器執(zhí)行體即插即用管理理程序電源管理程序序設備wdm驅動程序總線驅動程序硬件抽象層HAL即插即用IRP即插即用IRP(IRP_MJ_PNP):由即插即用管管理器發(fā)送給給設備驅動程程序的;在驅動對象的的主功能函數(shù)數(shù)內有一個回回調派遣函數(shù)數(shù)用于處理PNP的IRP包;不用的IRP代表不同的功功能,如下表表所示:2023/1/4242023/1/425子功能代碼描述IRP_MN_START_DEVICE配置并初始化設備IRP_MN_QUERY_REMOVE_DEVICE設備可以被安全的刪除IRP_MN_REMOVE_DEVICE關閉并刪除設備IRP_MN_CANCEL_REMOVE_DEVICE忽略以前的QIERY_REMOVEIRP_MN_STOP_DEVICE關閉設備IRP_MN_QUERY_STOP_DEVICE詢問設備可以關閉了嗎IRP_MN_CANCEL_STOP_DEVICE忽略以前的QUERY_STOPIRP_MN_DEVICE_RELATIONS給出指定特征的設備列表IRP_MN_QUERY_INTERFACE獲得調用函數(shù)接口地址IRP_MN_CAPABILITIES取得設備能力IRP_MN_QUERY_RESOURCES取得引導配置IRP_MN_QUERY_RESOURCES_REQUIREMENTS取IO資源需求IRP_MN_QUERY_DEVICE_TEXT獲得描述信息或位置串IRP_MN_QUERY_PNP_DEIVCE_STATE獲取設備狀態(tài)IRP_MN_QUERY_BUS_INFORMATION*獲取父總線類型IRP_MN_SUPPRISE_REMOVE通知設備意外被刪除PNP管理理器器對對USB總線線的的管管理理2023/1/426USB驅動動程程序序在在完完成成即即插插即即拔拔PNP整過過所所操操作作數(shù)數(shù)據(jù)據(jù)結結構構::URP(USBRequstPackage)USB請求求包包,,這這個個數(shù)數(shù)據(jù)據(jù)結結構構也也是是通通過過操操作作IRP的內內核核函函數(shù)數(shù)傳傳送送直直總總線線驅驅動動層層上上。。通過過操操作作URP進行行對對USB設備備熱熱插插拔拔的的枚枚舉舉,,配配置置和和刪刪除除。。通過過對對URP的PNP管理理操操作作我我們們可可以以得得到到來來自自硬硬件件數(shù)數(shù)據(jù)據(jù)描描述述,,如如::設設備備描描述述符符,,配配置置描描述述符符,,接接口口描描述述符符,,端端點點描描述述符符。。如圖圖可可見見這這些些數(shù)數(shù)據(jù)據(jù)的的樹樹狀狀結結構構::2023/1/4272023/1/428USB電源源管管理理WDM電源源管管理理模模型型概概述述基本本概概念念電源源狀狀態(tài)態(tài)和和設設備備狀狀態(tài)態(tài)關于于USB電源源管管理理策策略略USB處理理電電源源管管理理的的基基本本IRP規(guī)則則USB驅動動應應該該響響應應的的電電源源管管理理器器發(fā)發(fā)出出IRP2023/1/429WDM電源源管管理理模模型型基本本概概念念::電源源管管理理器器::為為了了于于減減少少系系統(tǒng)統(tǒng)不不必必要要的的功功耗耗,,基基于于ACPI(AdvancedConfigurationPowerInterface)規(guī)范范作作為為計計算算機機全全局局電電源源策策略略,,操操作作系系統(tǒng)統(tǒng)支支持持一一些些用用戶戶接接口口,,用用戶戶可可以以通通過過這這些些接接口口控控制制最最終終的的電電源源管管理理策策略略。。電源源管管理理是是操操作作系系統(tǒng)統(tǒng)通通過過處處理理驅驅動動程程序序來來實實現(xiàn)現(xiàn)的的。。支持持PNP的驅驅動動必必須須支支持持電電源源管管理理,,支支持持電電源源管管理理的的驅驅動動程程序序必必須須支支持持PNP,兩者是被被集成而而相互依依賴。2023/1/430電源狀態(tài)態(tài)分以下下六個狀狀態(tài):2023/1/431系統(tǒng)電源狀態(tài)含義SO(Working)CPU全功率運行S1(Sleeping1)CPU停止,RAM被刷新S2(Sleeping2)CPU不通電,RAM被刷新S3(Sleeping3)CPU不通電,RAM處于低速刷新模式,電源功率輸出降低S4(Hibemate)系統(tǒng)停止,RAM被保存到磁盤S5(Shutdown)系統(tǒng)停止并關閉,需要完全引導以恢復操作設備電源狀態(tài)態(tài):操作系統(tǒng)不直直接處理設備備的電源狀態(tài)態(tài),而是有驅動程程序專門處理理。設備至少少要支持D0與D3。2023/1/432設備電源狀態(tài)含義D0設備全功率運行D1設備運行于低功耗模式,設備環(huán)境可能被保留D2設備運行低功率模式,設環(huán)境可能無效D3設備沒有電,環(huán)境丟失關于USB電源管理策略略USB電源管理策略略:USB處理電源管理理的基本IRP規(guī)則USB驅動應該響應應的電源管理理器發(fā)出IRP2023/1/433用戶模式的USB數(shù)據(jù)讀寫與應應用程序用戶模式與驅驅動包IRP對應關系IRP_MJ_CREATE,IRP_MJ_READ,IRP_MJ_WRITE用戶模式應用用程序打開設設備用戶模式應用用程序讀取USB設備2023/1/434USB設備數(shù)據(jù)讀寫寫用戶模式下API與驅動程序的的IPR對應關系:2023/1/435用戶API函數(shù)IRP說明CreateFileIRP_MJ_CREATE打開設備ReadFileIRP_MJ_READ從設備獲取數(shù)據(jù)WriteFileIRP_MJ_WRITE向設備發(fā)送數(shù)據(jù)CloseFileIRP_MJ_CLOSE關閉設備DevicControlIRP_MJ_DEVICE_CONTROL控制操作開打設備首先已知設設備GUID通過調用SetupDiGetClassDev獲得設備的的信息集;;在設備信息息集里調用用SetupDiEnumDeviceInterface識別接口信信息;在接口信息息中調用SetupDiGetDeviceInterfaceDetail獲得設備路路徑名;通過設備路路徑CreateFile打開設備,,此時內核核對應發(fā)出出IRP_MJ_CREATE,操作系統(tǒng)統(tǒng)自動訪問問對應驅動動2023/1/436上層應用程程序讀寫數(shù)數(shù)據(jù)讀寫數(shù)據(jù)通通過驅動對對象的IRP_MJ_READ與IRP_MJ_WRITE功能例程::使用用戶模模式的readfile與writefileAPI調用驅動內內核對象;;建立內存映映像;通過內存對對齊復制實實現(xiàn)數(shù)據(jù)交交互;還是通過IRP包來獲取數(shù)數(shù)據(jù)2023/1/437總結簡要審閱所所演示的內內容確定應用培培訓的方法法請求有關培培訓單元的的反饋2023/1/438更多信息列出其他培培訓單元列出書籍、、文章、電電子來源列出咨詢服服務、其他他來源2023/1/439USB處處理理電電源源管管理理的的基基本本IRP規(guī)規(guī)則則其最最基基本本規(guī)規(guī)則則要要遵遵循循以以下下幾幾點點::同步步操操作作必必須須嚴嚴格格,,PDO只能能僅僅且且有有一一個個IRP_MN_QUERY_POWER或者者IRP_MN_SET_POWER電源源IRP必須須一一次次性性處處理理,,不不能能產(chǎn)產(chǎn)生生等等待待事事件件或或者者是是鎖鎖對對象象的的系系統(tǒng)統(tǒng)例例程程;也是是需需要要分分層層處處理理,

溫馨提示

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

評論

0/150

提交評論