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