色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > Windows9x/NT及2000下中斷驅動程序的統(tǒng)一化處理

          Windows9x/NT及2000下中斷驅動程序的統(tǒng)一化處理

          作者: 時間:2009-05-13 來源:網絡 收藏

          以其友好的圖形用戶界面,使得它不僅成為辦公管理首選的操作系統(tǒng),也日益受到工程技術人員的關注,逐漸取代DOS而成為主流的工程應用控制平臺。但是,系統(tǒng)為了保證平臺的安全與完整性,對系統(tǒng)底層操作采取了屏蔽的策略,利用VxD將用戶與硬件隔離開來。 在9x(95、97、98)下,用戶如果需要實現(xiàn)對硬件的、DMA或存儲空間物理地址等資源進行訪問,必須通過設備驅動程序來進行硬件操作;而在Windows下,即使是簡單的I/O操作,也需要編寫驅動程序方能與硬件打交道。

          本文引用地址:http://cafeforensic.com/article/202698.htm

            Windows操作系統(tǒng)的主流目前是Windows9x和Windows,而已經推出的Windows是以Windows為主要框架的。由于Windows9x和WindowsNT兩者在系統(tǒng)核心上有質的不同,所以即使對于同樣一個硬件,在兩者下的驅動程序也有很大的區(qū)別。因此,一般而言,需要針對不同的操作系統(tǒng)編寫不同的驅動程序。

            兼容X86指令的微機CPU運行時有4個優(yōu)先級,Ring0~Ring3。操作系統(tǒng)與驅動程序運行在Ring0級,可以對所有硬件資源進行控制;用戶程序運行在Ring3級,對資源控制受到一些限制。而對于Ring0級的驅動程序而言,它的編寫和調試通常需要對操作平臺的運行機制有較深的了解,從而要求程序開發(fā)者掌握Windows9x、NT及Windows的內核管理機制,對于開發(fā)人員來講這有相當大的難度。 在這里,筆者使用了美國Jungo公司出品的WinDriver工具包,利用其繞過了對操作系統(tǒng)內核的學習掌握這個難點,并且在不更改程序代碼的前提下,完成了在多個操作系統(tǒng)下對硬件的一致處理,很方便地解決了硬件與程序在不同系統(tǒng)下的移植問題。

          1 Windows下硬件的管理機制

            在多任務的環(huán)境里,硬件設備中斷管理程序是非常重要的系統(tǒng)級程序。它不僅要把硬件發(fā)生的中斷時間傳給相應的驅動程序,還要允許某些設備驅動程序處理它們特殊的中斷服務。在Windows平臺下,VPICD(虛擬可編程中斷控制器)就是這樣的硬件設備管理程序,它負責管理所有的硬件中斷時間。VPICD通過一個缺省機制觸發(fā)駐留在VM(虛擬機)內的中斷處理函數(shù)。它完全允許VxD根據其需要而重載中斷處理函數(shù)。PC機的硬件中斷需要確定硬件中斷的IRQS(中斷申請?zhí)?,對一個特定的IRQ中斷源,VPICD或提供缺省的中斷處理函數(shù),或允許其它VxD重載中斷處理函數(shù)。

            VPICD提供的缺省中斷處理是:首先置中斷禁止,再觸發(fā)相應VM中的中斷處理函數(shù)。因為VPICD實現(xiàn)了對PPIC(物理可編程中斷控制器,如8259中斷控制器)的虛擬化,所以當VM中的中斷處理函數(shù)發(fā)送EOI(中斷處理結束指令)時,VPICD即對PPIC發(fā)EOI指令。最后,VPICD控制處理函數(shù)的返回操作,恢復中斷,并置VM狀態(tài)為VM進入中斷前的狀態(tài)。當VPICD對某些中斷的缺省處理不夠充分或則不太合適時,就需要親手編寫一個VxD,在其中實現(xiàn)中斷的虛擬化。VxD將決定如何處理硬件中斷以及如何調用VM中的中斷處理函數(shù)。

            下面將要詳述的WinDriver對中斷處理作了很好的封裝,將對VPICD和VM的控制和處理以及某些特殊的驅動要求封裝在經過嚴格調試的WinDriver.vxd和WinDriver.sys中,并對調用驅動程序的API(應用編程接口)函數(shù)進行了系統(tǒng)集成,讓使用者直接面對用高級語言集成好的類庫和函數(shù)接口,從而大大降低了程序開發(fā)的難度,縮短了開發(fā)周期。

          2 WinDriver工具包簡介

            WinDriver是美國Jungo公司出品的用于編寫驅動程序的一種工具包,主要針對ISA/PCI插卡,4.2版本以后還提供了USB的開發(fā)工具。最新版本4.40版所編寫的程序兼容性十分強大,包括了Windows9x、Windows NT、Windows、Windows CE、Linux、Solaris(Intel)、VxWorks (Intel) 、OS/2等諸多操作平臺。WinDriver主要包括一個WinDriverWizard、一個WinDriver發(fā)行包、多個公用程序以及大量的例程。

            (1)WinDriverWizard

            這是一個友好的Windows向導界面。運行WinDriverWizard,它可以讓你立即接觸到硬件而不用寫一句有關的代碼。這種便利來自于它的自動檢測功能。對于ISA插卡,用戶可以直接利用它來讀寫卡上的內存、I/O地址、寄存器以及偵聽中斷。對于PCI插卡,除了上面的基本功能外,還可以方便地讀寫PCI的配置信息。

            在此之后,通過選擇“GenerateCode”選項,WinDriverWizard會為你的插卡產生基本的程序代碼。4.2版本以后還提供了多種編程語言選擇,幾乎包括了所有流行的編程語言,如VC4?|VC6、Borland C++Builder3?|4、Pascal、Delphi、Linuxmake、Solariesmake等等。這就讓用戶不必去學新的編程語言,很容易地直接上手。


          上一頁 1 2 3 4 下一頁

          關鍵詞: Windows 2000 NT 中斷

          評論


          相關推薦

          技術專區(qū)

          關閉