基于DSP內嵌PCI總線的衛星信號仿真器設計
中斷響應函數的關鍵代碼如下:本文引用地址:http://www.j9360.com/article/191948.htm
PCI主機給DSP發中斷是通過將HDCR寄存器的DSPINT位置1實現的,要注意產生該中斷的有效前提條件是PCI的中斷使能寄存器(PCIIEN)HOSTSW位被使能,即HOSTSW=1。
為了便于使用PCI的驅動函數和以后驅動程序發布的需要,將驅動函數封裝在動態鏈接庫DLL中,它們中主要函數的關鍵代碼如下:
為了使PC機能夠正確地捕獲到由DSP傳來的中斷,在動態鏈接的DSP6416_IntEnable()函數中,必須設置內核模式下的中斷傳輸命令,因為它的優先級比用戶模式下的中斷響應函數高,因而一旦DSP產生中斷,首先執行的是內核模式下的中斷傳輸命令。由于DSP6416內嵌PCI產生的中斷屬于電平敏感中斷,如果不清除中斷它將一直有效,這將會導致中斷響應函數不斷執行而死機。因此,必須在中斷使能函數設置中斷傳輸命令。在該例中,先從HSR中讀取一個DWORD,然后在中斷傳輸命令中設置CMD_MASK位。如果前面從HSR中讀出的值為0x04,則屏蔽DSP所產生的中斷,否則不執行屏蔽命令,然后在中斷傳輸命令中向DSP的RSTSRC寫入0x10清除中斷。圖6中用到的關閉中斷使能和關閉設備2個函數可分別通過調用WinDriver中 WDC_IntDisable(),WDC_PciDe_viceClose(),WDC_DriverClose()的函數等實現。此外,調用這些函數之前要判斷中斷是否存在,設備是否打開,否則會出現嚴重錯誤。
3.4 衛星信號仿真器實驗驗證
設置衛星信號仿真器場景:用戶位置為北緯60°00'00,東經100°00'00,高程300 m,靜止狀態。GG24接收機的解算結果如圖8所示。
GG24接收機解算結果是北緯59°59'59.867 52,東經99°59'57.636 24,高程為308.02 m,與設置的場景,即北緯60°00'00,東經100°00'00,高程300 m相當吻合。因此,這說明了仿真器的正確性和有效性。
4 結 語
在此設計的基于DSP6416內嵌PCI數據傳輸硬件平臺和驅動開發方案已用于多模衛星信號仿真器中,該方案數據傳輸穩定,速度快(可達115 MB/s),采用WinDriver軟件工具包開發DSP6416內嵌的PCI設備驅動程序,不但可以極大地縮短開發周期,而且還提高了衛星信號仿真器的開發效率和整體性能。
評論