新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 采用WDM的精確定時器及其在冗余技術中的應用

        采用WDM的精確定時器及其在冗余技術中的應用

        作者: 時間:2011-01-16 來源:網絡 收藏

        3 軟件設計

        3. 1 WDM 模式驅動程序

        在Window s XP 操作系統中, 運行于用戶模式的應用程序訪問硬件資源是通過Win32 API 調用內核模式的驅動程序實現的。這種內核模式的驅動程序就是WDM(Window s Driver Model) 驅動程序, 它是微軟在Window s XP 操作系統中提出的新的驅動程序模式, 支持即插即用、電源管理和I/ O 管理等功能。圖2 是Window s XP 的系統結構。

        如圖2 所示設備驅動程序是操作系統的一個組成部分, 它由I/ O 管理器( I/ O Manager ) 管理和調動。

        I/ O管理器每收到一個來自用戶應用程序的請求就創建一個I/ O 請求包( IRP) 的數據結構, 并將其作為參數傳遞給驅動程序。驅動程序通過識別IRP 中的物理設備對象( PDO) 來區別是發送給哪一個設備。IRP 結構中存放請求的類型、用戶緩沖區的首地址、用戶請求數據的長度等信息。驅動程序處理完這個請求后, 在該結構中填入處理結果的有關信息, 調用IoCompleteRequest 將其返回給I/ O 管理器, 用戶應用程序的請求隨即返回。訪問硬件時, 驅動程序通過調用硬件抽象層的函數實現。

        采用WDM的精確定時器及其在冗余技術中的應用
        圖2 Windows XP 系統結構

        WDM 的開發可采用DDK, DriverWorks 等開發工具。以下重點描述在此WDM 驅動實例中采用定時查詢實現CAN 總線冗余功能。

        3. 2 驅動冗余設計

        本設計中, CAN 通路采用2 路冗余, 使得當一個CAN 總線接口出現故障時, 可以很方便地切換到另一個CAN 總線接口。

        故障檢測在定時器中實現。在DriverWorks 中有兩種定時器對象, 即附屬于設備對象的1 Hz 定時器和KTimedCallback 類定義的定時器, WDM 定時方法是通過它們實現的。KT imedCal lback 是KTimer 的派生類, KTimer 封裝了系統定時器, 構成分發對象定時器類, 可用于同步目的。KT imedCal lback 類包含了系統延時過程調用( DPC) 對象, 當定時器超時后系統就調用DPC。KTimedCallback 的成員函數主要是Set 和SetPeriodic, Set 用于設置一次有效定時器參數, SetPeriodie 設置周期性定時器參數, Set 和SetPeriodic 在設置定時參數時同時啟動定時器并建立與回調函數的關聯,定時器超時后調用回調函數。

        具體的切換工作放在DPC 中完成。DPC 為推遲過程調用, 一些操作不適合在ISR 中處理需放入限制較少的DPC 中, 如通知事件置標記等等。DPC 是一個通用機制, 但通常都用在中斷處理中。在最普通的情況下, ISR 決定當前請求的完成并請求一個DPC。之后,內核在DISPATCH_LEVEL 級上調用這個DPC 例程。


        關鍵詞: FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太仓市| 邢台市| 平阴县| 建昌县| 天祝| 沁水县| 北流市| 都兰县| 曲阳县| 怀安县| 台江县| 随州市| 龙山县| 黄冈市| 古交市| 南郑县| 万山特区| 全州县| 潞城市| 许昌市| 古交市| 偃师市| 合作市| 北海市| 香河县| 开化县| 鹿邑县| 隆回县| 巍山| 论坛| 文化| 和龙市| 高安市| 舞阳县| 诸暨市| 达拉特旗| 黔西| 雷波县| 新野县| 乡宁县| 康马县|