下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、pci 設備 windows通用驅動程序設計摘 要通用高速pci 總線目標模塊全面地討論了windows設備驅動程序編寫時所面臨的主要問題及解決方案關鍵詞經(jīng)常要在機的軟件中訪問和控制硬件設備包括 windows95/98windows 2000為了保證系統(tǒng)的安全性對應用程序訪問硬件資源加以限制 windows下的驅動程序不僅僅包括物理設備的驅動程序為了簡化問題本文將以撏酶咚伲校茫勺芟吣勘昴探討pci 設備的驅動程序設計方案它可以完成一般pci 設備驅動所需的功能?y?3d2? ? 1y ?y?3d ? ?32dd?dd? ? ?y?3d?pc 機程序稱為用戶程序所以大多數(shù)情況下驅動程序也不能通
2、用一般至少要設計windows 9x和windows nt兩個驅動程序版本同時它又推出一個新的win32 drivers mode (wdm)驅動類型如 usb設備這個新的類型實際是在windows nt的驅動模型的基礎上增加了即插即用等內容先前叫windowsnt5.0 3? ?d3? ? wdm在近一兩年還無法替代其它類型的設備驅動0 級2 級和 3 級而用戶程序運行在3 級上具體的限制在不同的操作系統(tǒng)中是不同的windows 95支持的驅動類型很多主要是 vxd 和打印機驅動兩類 運行在intel 系統(tǒng)的0 級上對任何i/o 設備有全部訪問權 驅動通常以放在windowssystem 目
3、錄下也可以在程序運行時根據(jù)需要動態(tài)地載入但打印機驅動程序不是vxd?windows 95類似kernel modeuser mode) 之分pci 通用驅動程序要求對各種硬件資源訪問開發(fā)設備驅動采用的主要開發(fā)工具是微軟為設備開發(fā)者提供的軟件包device driver kit(ddk) ?d a? ?to ?a?t?ddk 中還定義了一些設備驅動可以調用的系統(tǒng)底層服務中斷服務可安裝文件系統(tǒng)服務等等但windows 95 的 ddk 由于主要使用匯編語言描述因此是基于c/c+的使用和維護都較windows ddk容易驅動程序的特點在設計驅動程序之前更需要詳細了解硬件設備的特性需要了解的最主要的硬
4、件特性包括設備的總線結構設備采用什么總線結構非常關鍵如 isa 和 pci? ?y?3d ?22?寄存器要了解設置的控制寄存器以及這些寄存器工作的特性設備錯誤和狀態(tài)要了解如何判斷設備的狀態(tài)和錯誤信號port也就是通過cpu 的 in/out指令進行數(shù)據(jù)讀寫但 pci 規(guī)范不包括從屬dma 的說明設備內存許多設備自身帶有內存有的設備還要通過驅動程序設置設備的接口寄存器在 ddk文檔中有規(guī)定這是根據(jù)設備的不同而不同的但基本功能就是完成設備的初始化中斷的設置如前面所說但驅動程序所要完成的工作卻是相同的僅在需要的地方指出兩個操作系統(tǒng)的不同? pci 器件的資源和對pci 器件中斷的服務所有軟件擴展 r
5、om 碼pci bios 規(guī)范有完整的有關pci bios 功能的描述 在 pci 設備驅動程序的初始化過程中devicevendorindex 1y?pc ibios確認其存在總線號這是該器件利用總線號功能的 pci 配置空間設備驅動就需要從配置空間獲得硬件的參數(shù)包括所用的中斷號存儲器的地址存儲器映射方式等讀寫配置空間可以調用bios 中斷 1ah?y?y? (0cfch) 進行讀寫最重要的是獲得基址寄存器(badr)?3?y2?t? ?apci 設備分配新的資源而基址 4 是按內存方式映射的可以讀對應端口的配置寄存器(configuration register)?d? 0 位表示其是按內
6、存方式設置的內存方式和i/o 方式的配置寄存器的含義參見文獻如果要獲得基址的大小然后讀基址寄存器從第 4 位開始的0 的數(shù)目表示基址的大小則從第 2 位開始的0 的數(shù)目表示基址的大小查找pci 設備的工作是由halgtebusdata 完成的但 ddk 推薦使用haigetbusdataoffset 函數(shù)) 端口操作在 pc 機上所以處理方法也不同它不象內存有實模式和保護模式之分在 windows 9x下而不一定非通過專門的驅動程序來完成甚至可以不用專門設計驅動程序由于pci 總線是32位的總線標準而且以前大多數(shù)c/c+編譯軟件都沒有提供雙字的函數(shù)在 windows nt下級的用戶程序和用戶模
7、式驅動程序直接使用 i/o 指令所以任何對i/o 的操作都需要借助內核模式驅動來完成一是在驅動程序中使用ioreportresourceusage 報告資源占用函數(shù)讀寫另一種是驅動程序修改nt 的 i/opermissions map(iopm)?a ?3d2 ? 3?i/o 指令進行操作用戶程序設計簡單程序不能移植到非intel 的系統(tǒng)中 ? ? ? ? ?e?cpu 尋址方式上的不同windows 采用了分段分頁機制如圖這樣使應用程序產(chǎn)生一種錯覺這樣做最大的好處就是一個程序可以很容易地在物理內存容量不一樣的編程人員使用虛擬存儲器可以寫出比任何實際配置的物理存儲器都大得多的程序通過分段機制再
8、通過分頁機制線性地址被分割成頁目錄(page directory)? ?d?win32 進程時并建立它自己的頁目錄頁目錄的地址也同時放入進程的現(xiàn)場信息中系統(tǒng)首先從cpu 控制器cr3 中讀出頁目錄所在的地址再根據(jù)頁表得到實際代碼最后再根據(jù)頁偏移訪問特定的單元但應用程序讀寫的是虛擬地址從物理地址到線性地址的轉換工作也是由驅動程序來完成的使用ddk 的 vmmcall?y?3d ? ?3?2? a?vxd 的系統(tǒng)服務mapphystolinear pvoid mapphystolineag(const void * physaddr,dword nbytes,dword flags);其中第一個參
9、數(shù)physaddr 就是要映射的內存的物理地址的起始位置flags 必須設置為0?1? ? ?2? ?比如要映射物理內存ed000000h 開始的 4096 個字節(jié) pchar *pointertopage=(pchar)mapphystolinear(pvoid)oxed000000,4096,0);而將 pointertopage 傳遞給調用驅動的用戶程序而通過對這個指針的操作就可以實現(xiàn)對物理內存ed000000h 進行讀寫首先調用ioreportresourceusage 請求使用設備的內存再使用mmmapiospace 把設備的內存映射到虛擬空間調用 mmunmapiospace斷開設
10、備的內存和虛擬空間的連接) 中斷的設置響應與調用應該在驅動程序中完成完成ddk 還提供了響應中斷事件的服務vpicd 服務用來管理所有硬件中斷事件對一個特定的irq 中斷源或者允許其它vxd 重載中斷處理函數(shù)要處理硬件中斷應該從vhardwareint繼承一個類個類中在 windows nt中設備驅動首先使用 halgetinterrupuvector將與總線有關的中斷向量轉換為系統(tǒng)的中斷向量 ?da ?3d?y?2 ? ?1|? ?t? 1? ?a?t ?deviceiocontrol 函數(shù)就可以同設備驅動程序交換數(shù)據(jù)了可以調用closehandle(hvxd)這種調用方式也是windows nt調用設備驅動的標準方法如 dpmi 方式在兩個
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- BIM工程師-全國《BIM應用技能資格》考前沖刺2
- 浙江省溫州市龍港市2024年中考數(shù)學二模試題附答案
- 電子政務提高公共服務效率
- 幼兒園大班數(shù)學測試題
- 高一化學教案:第二單元化學反應中的熱量
- 2024高中地理第1章區(qū)域地理環(huán)境與人類活動第4節(jié)第1課時資源跨區(qū)域調配精練含解析湘教版必修3
- 2024高中語文第6單元墨子蚜第1課兼愛訓練含解析新人教版選修先秦諸子蚜
- 2024高中語文第六單元文無定格貴在鮮活種樹郭橐駝傳作業(yè)含解析新人教版選修中國古代詩歌散文欣賞
- 2024高考化學一輪復習第一部分考點10氯及其化合物強化訓練含解析
- 2024高考化學一輪復習解題指導7有機化學基礎的命題分析規(guī)范演練含解析新人教版
- 2025湖北襄陽市12345政府熱線話務員招聘5人高頻重點提升(共500題)附帶答案詳解
- 血細胞分析報告規(guī)范化指南2020
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之7:“5領導作用-5.1領導作用和承諾”(雷澤佳編制-2025B0)
- 2024年快速消費品物流配送合同6篇
- 廣東省茂名市2024屆高三上學期第一次綜合測試(一模)歷史 含解析
- 神經(jīng)重癥氣管切開患者氣道功能康復與管理學習與臨床應用
- 第5章 一元一次方程大單元整體設計 北師大版(2024)數(shù)學七年級上冊教學課件
- 2025年河北省職業(yè)院校技能大賽智能節(jié)水系統(tǒng)設計與安裝(高職組)考試題庫(含答案)
- 人教版高一地理必修一期末試卷
- 遼寧省錦州市(2024年-2025年小學六年級語文)部編版期末考試(上學期)試卷及答案
- 2024年下半年鄂州市城市發(fā)展投資控股集團限公司社會招聘【27人】易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論