如何訪問硬件_第1頁
如何訪問硬件_第2頁
如何訪問硬件_第3頁
如何訪問硬件_第4頁
如何訪問硬件_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

如何訪問硬件第1頁,課件共10頁,創作于2023年2月常用的I/O資源類型資源類型處理概述Port可能映射I/O端口范圍;應在設備擴展中保存端口范圍基址Memory映射內存范圍;應在設備擴展中保存內存范圍基址Dma調用IoGetDmaAdapter函數創建適配器對象Interrupt調用IoConnectInterrupt函數創建中斷對象,中斷對象指向ISR(中斷服務例程)第2頁,課件共10頁,創作于2023年2月第3頁,課件共10頁,創作于2023年2月訪問端口和內存寄存器的HAL函數第4頁,課件共10頁,創作于2023年2月讀寫I/O端口UCHARREAD_PORT_UCHAR(INPUCHARPort);ULONGREAD_PORT_ULONG(INPULONGPort);USHORTREAD_PORT_USHORT(INPUSHORTPort);VOIDWRITE_PORT_UCHAR(INPUCHARPort,INUCHARValue);VOIDWRITE_PORT_USHORT(INPUCHARPort,INUSHORTValue);VOIDWRITE_PORT_ULONG(INPUCHARPort,INULONGValue);如果設備要求將其寄存器映射到I/O地址空間,則對于具有獨立的I/O地址空間的CPU(如Intel)會滿足其要求;而對于沒有獨立的I/O地址空間的CPU則將其映射到內存地址空間。開發人員不用關心這些細節,只須用READ_PORT_XXX函數或WRITE_PORT_XXX訪問該寄存器就可以了。第5頁,課件共10頁,創作于2023年2月第6頁,課件共10頁,創作于2023年2月配置中斷typedefstruct_DEVICE_EXTENSION{...PKINTERRUPTInterruptObject;}DEVICE_EXTENSION,*PDEVICE_EXTENSION;ULONGvector;//中斷向量KIRQLirql;//中斷請求級KINTERRUPT_MODEmode;//中斷觸發模式(電平/邊緣)KAFFINITYaffinity;//CPU親和性BOOLEANirqshare;//是否與其它設備共享............(接下頁)第7頁,課件共10頁,創作于2023年2月配置中斷status=IoConnectInterrupt(&pdx->InterruptObject,//存放內核中斷對象的內存地址

(PKSERVICE_ROUTINE)OnInterrupt,//中斷服務例程

(PVOID)pdx,//傳遞給ISR的上下文參數

NULL,//當設備有多個中斷時必須提供一個自旋鎖

vector,//中斷向量

irql,//中斷請求級

irql,//驅動中其它例程與ISR同步時將被提高到該級別

mode,//中斷觸發模式(電平/邊緣)irqshare,//是否與其它設備共享中斷

affinity,//該中斷的CPU親和掩碼

FALSE);//是否需要操作系統保存浮點上下文第8頁,課件共10頁,創作于2023年2月中斷服務例程的實現當設備生成中斷時,HAL將基于你指定的CPU親合掩碼選擇一個CPU來服務這個中斷。然后該CPU的IRQL提升到合適的同步級并請求一個與中斷對象關聯的自旋鎖。最后調用ISR因為有可能多個設備共享一個中斷向量,所以在ISR中首先應該判斷是否是自己的設備產生了中斷。如果不是則返回FALSE,以便HAL能把中斷送往其它設備驅動程序。如果是,應該先清除該中斷然后返回TRUE。ISR執行在高于DISPATCH_LEVEL的IRQL上。因此ISR中使用的所有代碼和數據必須存在于非分頁內存中,此外,ISR只能調用有限的內核服務函數。在ISR中應該做盡量少的工作,如果有大量的工作應該請求一個DPC來完成。第9頁,課件共10頁,創作于2023年2月中斷服務例程的實現BOOLEANOnInterrupt(PKINTERRUPTInterruptObject,

溫馨提示

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

評論

0/150

提交評論