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