基于DSP內嵌PCI總線的衛星信號仿真器設計
3.2 WinDriver的工作原理
圖5是WinDriver的體系結構圖,陰影部分是WinDriver提供的組件。WinDriver提供以WinDrvr6.sys為底層的驅動棧層,直接與硬件交互,避免了用戶對硬件操作的復雜性,用戶開發驅動只需在應用程序中調用WinDriver用戶模式的API函數。這些用戶模式的函數調用 WinDriver的Kernel Module函數實現對硬件的訪問。對于某些要求比較高的硬件驅動(如要求響應中斷的速度足夠快),如果用戶模式開發的驅動無法達到要求,開發者可以將用戶模式下調試好的代碼放入到WinDriver的Kernel Plugin模塊中,使得驅動開發可以在用戶模式下進行,而開發的驅動的效率完全可與內核模式下的驅動相媲美。本文引用地址:http://www.j9360.com/article/191948.htm
圖6為用WinDriver開發PCI驅動內部的API函數調用關系。
通常情況下,在應用程序中不直接調用這些API函數,而是通過二次開發,將這些API函數封裝在動態鏈接庫DLL中,然后應用程序調用DLL中封裝好的函數。
3.3 衛星信號仿真器應用程序框圖及相應PCI驅動的關鍵代碼分析
根據仿真器的總體設計,需要在PC機上實現二個功能模塊;
數字信號處理模塊該模塊是仿真器的核心模塊,實時仿真導航電文,計算衛星偽距、各通道的頻率字和碼控制字等。
通信模塊 該模塊主要是將PC機計算得到的相關信息通過PCI傳遞給DSP。
考慮到整個仿真器數據要求的實時性,通過中斷函數實現PC機中的程序傳輸數據,當DSP需要數據時,通過RSTSRC寄存器INTREQ位寫1產生一個中斷信號發送給PC機,但要使該中斷有效,必須要求主機狀態寄存器(HSR)中的INTAM位為0。因此在上位機程序中,初始化階段必須把該中斷使能位打開。應用程序的結構如圖7所示。
中斷處理步驟如下:
(1)應用程序打開中斷使能,系統等待中斷;
(2)如果中斷到來,則清除中斷標志,取消中斷源;
(3)在中斷函數中執行數據傳輸;
(4)數據傳輸完后給DSP發中斷,實現與DSP的握手;
(5)重新開啟中斷源。
第(2)步和第(5)步在中斷使能函數中實現。
評論