基于RTX的舵機控制系統研制
在RTX環(huán)境下,PXI設備驅動(dòng)程序的基本結構如圖4所示。其中,PXI設備和RTX位于結構底層,PXI設備與RTX內核通過(guò)中斷和I/O端口來(lái)進(jìn)行數據交互,RTX內核通過(guò)庫函數和設備驅動(dòng)程序來(lái)提供所需服務(wù)。上層應用程序與底層驅動(dòng)程序通過(guò)建立共享內存來(lái)進(jìn)行通信。本文引用地址:http://dyxdggzs.com/article/161110.htm
在RTX環(huán)境下進(jìn)行PXI設備驅動(dòng)開(kāi)發(fā),首先需要將Windows下的設備轉換為RTX下的設備。RTX提供實(shí)現該功能的屬性窗,如圖5所示。利用RTX屬性窗進(jìn)行轉換分主要分為兩個(gè)步驟:
(1)添加RTX的INF支持;
(2)在設備管理器中更新設備驅動(dòng),將PXI設備從Windows支持轉換為RTX支持。
RTX環(huán)境下一個(gè)完整的PXI驅動(dòng)程序至少由以下幾方面組成:
(1)設備初始化和釋放。查找PCI設備傳送設備號和廠(chǎng)家號兩個(gè)主要參數,并遍歷所有的PCI插槽直到匹配為止。找到設備后,讀出中斷號、基地址等,為以后的工作做準備。
(2)地址到虛擬地址的映射,使系統能夠識別硬件。由于對硬件的讀寫(xiě)操作是基于物理地址,而應用程序實(shí)現讀寫(xiě)操作使用的是虛擬地址,所以驅動(dòng)程序必須要完成地址映射。
設計的PXI板卡驅動(dòng)程序首先用接口函數DeviceSearch()在總線(xiàn)上輪詢(xún),并查找到設備。然后通過(guò)DeviceInit()函數獲得設備的硬件資源,如中斷號、內存、輸入輸出I/O和DMA等。通過(guò)RtGetBusDataByOffset()函數訪(fǎng)問(wèn)設備的整個(gè)PCI配置空間,得到本地配置寄存器和存儲空間內存的基地址和中斷號等信息,然后根據獲得的基地址利用RtTranslateBusAddress()和RtMapMem ory()函數將讀取出來(lái)的基地址轉換為系統能夠訪(fǎng)問(wèn)的虛擬地址。需要指出的是,板卡的本地寄存器和存儲空間可以通過(guò)Memory映像和I/O直接訪(fǎng)問(wèn),文中設計的驅動(dòng)程序的運用的是Memory映像。如選用I/O直接訪(fǎng)問(wèn),可以通過(guò)調用RtEnablePortIo()和RtReadPortUchar()等函數即實(shí)現對端口的直接讀寫(xiě)。當找到并打開(kāi)板卡后就可以自定義讀寫(xiě)函數對板卡進(jìn)行讀寫(xiě)操作,從而達到控制板卡的目的,具體開(kāi)發(fā)流程如圖6所示。
4 結束語(yǔ)
RTX環(huán)境下的驅動(dòng)程序可以通過(guò)RTX函數進(jìn)行直接訪(fǎng)問(wèn)的,能夠隨時(shí)停止隨時(shí)配置。文中基于RTX,在Windows平臺實(shí)現了風(fēng)洞虛擬飛行試驗舵控仿真系統。與直接基于Windows平臺設計的系統相比,系統的響應時(shí)間提高到ms級,滿(mǎn)足了實(shí)時(shí)性要求。由于測試軟件是基于VC++環(huán)境開(kāi)發(fā)的可視化軟件,系統具有良好的可擴展性,通用性較強。通過(guò)聯(lián)調,驗證了仿真系統的可靠性和實(shí)時(shí)性。
評論