李冠林,喬晉龍,2
(1.中國特種飛行器研究所,湖北 荊門 448035; 2.高速水動力航空科技重點實驗室, 湖北 荊門 448035)
?
一種飛艇半物理仿真系統(tǒng)ARINC429驅動的設計與實現(xiàn)
李冠林1,喬晉龍1,2
(1.中國特種飛行器研究所,湖北 荊門 448035; 2.高速水動力航空科技重點實驗室, 湖北 荊門 448035)
為了滿足飛艇實際飛行過程對通信可靠性和實時性的需求,半物理仿真系統(tǒng)的飛艇模型計算機采用以PC為平臺的Xpc嵌入式實時系統(tǒng),飛控計算機采用以PowerPC為平臺的VxWork嵌入式實時系統(tǒng),通過ARINC429協(xié)議完成數(shù)據通訊;硬件上,PowerPC通過橋接芯片訪問并控制PCI設備;軟件上,按照Xpc系統(tǒng)和vxWork系統(tǒng)PCI設備驅動程序的編寫流程,分析了xPC內存驅動框架和vxBus驅動框架關鍵技術點,設計了飛艇模型計算機Xpc和飛控計算機Vxwork的ARINC429通訊卡驅動程序;通過實際的應用,證實所開發(fā)的ARINC429驅動程序滿足飛艇半物理仿真平臺數(shù)據通訊的可靠性和實時性。
半物理仿真系統(tǒng);嵌入式實時系統(tǒng); ARINC429協(xié)議;驅動程序
飛艇的半物理仿真實驗是檢驗飛艇飛控性能的有效途徑。飛艇半物理仿真系統(tǒng)中不同的操作系統(tǒng)環(huán)境,同一硬件設備原理和流程雖然一致,但具體驅動方法通常因操作系統(tǒng)的不同而有所差異[1]。因此,為了保證飛艇半物理仿真系統(tǒng)正常的ARINC429通訊,開發(fā)出滿足Xpc系統(tǒng)和vxWork系統(tǒng)的ARINC429通訊卡驅動程序是十分必要的。
飛艇半實物物理仿真主要由飛艇仿真平臺和飛控計算機組成,硬件組成如圖1所示。
圖1 飛艇仿真平臺硬件組成
飛艇仿真平臺建立在xPC系統(tǒng)環(huán)境下,利用飛艇模型模擬真實飛艇的飛行,飛控計算機建立在xWork環(huán)境下,負責飛艇的飛行控制和導航,飛控計算機和飛艇仿真平臺通過ARINC429總線完成二者之間的通訊。EFIS負責顯示飛艇飛行過程中的各種信息參數(shù)。
ARINCA29總線是廣泛應用在航空電子系統(tǒng)中的一種通訊總線。它采用差分的工作方式,其結構簡單、可靠性高和抗干擾性強,被廣泛應用于飛機航電設備數(shù)據傳輸和控制命令傳輸。ARINC429傳輸字的格式如圖2所示。
圖2 ARINC429傳輸字的格式
ARINC429傳輸字格式主要由奇偶校驗位(Odd)、符號/狀態(tài)位(SSM)、數(shù)據區(qū)域(Data)、源/目標標識(SDI)和標號位(Label)組成。在通訊過程中,發(fā)送順序依次為標號位、源/目標標識、數(shù)據區(qū)域、符號/狀態(tài)位和奇偶校驗位,其中標號位發(fā)送順序為由高到低(8-1),而傳輸字的發(fā)送順序都是由低到高(9-32)。當接收方接收到429傳輸字時,需要將Label位的進行逆序處理。
3.1 飛艇仿真系統(tǒng)部分
xPC是基于RTW(Real-Time Workshop)的實時仿真和開發(fā)平臺,其采用“雙機”模式實現(xiàn)產品原型開發(fā)和系統(tǒng)的測試。宿主機運行simulink完成仿真系統(tǒng)模型開發(fā),通過網線將模型加載到目標機上;目標機啟動時加載實時內核,該實時內核保證仿真系統(tǒng)高效的運行[2]。
xPC目標機支持ISA總線和PCI總線的I/O設備,飛艇仿真模塊采用PCI總線的ARINC429通訊卡。xPC 驅動程序文件即為由C語言編寫函數(shù)組成的S-functions文件,主要由初始化模塊、執(zhí)行模塊和結束模塊組成,如圖3所示。
圖3 xPC 目標驅動程序組成
初始化模塊包括由mdlInitializeSizes函數(shù),mdlInitializeSampleTimes函數(shù)和mdlStart函數(shù)組成,mdlInitializeSizes函數(shù)和mdlInitializeSampleTimes函數(shù)主要負責輸入輸出參數(shù)初始化、狀態(tài)量初始化和系統(tǒng)采樣時間的初始化,mdlStart函數(shù)負責I/O設備初始化;執(zhí)行部分根據仿真模型,完成相應的任務,執(zhí)行部分功能集中在mdlOutputs 函數(shù),該函數(shù)在負責PCI設備的讀寫操作;結束模塊功能函數(shù)為mdlTerminate,在運行結束后,負責釋放相關資源,使I/O設備安全退出。
xPC Target啟動時,PCI總線驅動被加載,BIOS掃描掛接在PCI總線上的I/O設備,并為PCI設備分配合理的I/O空間地址、物理地址和中斷號等資源,無需用戶在驅動程序中為PCI設備申請相關的資源,驅動程序通過廠商標識(Vendor_ID)和設備標識(Device_ID)來獲取PCI設備的配置空間信息,代碼如下:
rl32eGetPCIInfo(Vendor_ID,Device_ID,&pciinfo);
pciinfo 是一個結構體變量,結構如下:
{
unsigned long BaseAddress[6];
unsigned short AddressSpaceIndicator[6];
…
unsigned short InterruptLine;
}
BIOS為每個PCI設備提供了6個基址,其中有部分基址是無效的,通過rl32eShowPCIInfo函數(shù)確定有效基址。PCI設備映射分為I/O映射和內存映射,驅動程序可以通過pciinfo中的AddressSpaceIndicator屬性值來確定PCI映射類型。若PCI設備為內存映射,AddressSpaceIndicator屬性值0;若PCI設備為I/O映射AddressSpaceIndicator屬性值1。ARINC 429通訊卡為內存映射,pciinfo結構中的基址BaseAddress必需通過函數(shù)rl32eGetDevicePtr 轉化成虛擬地址,然后用C語言的指針訪問相應的虛擬地址,代碼如下:
bar2Base = (char *)rl32eGetDevicePtr((char*)(pciinfo.BaseAddress[2]),
4096,RT_PG_USERREADWRITE);
*(bar2Base)= 0x12;
編譯器往往會優(yōu)化內存,將內存變量緩存到寄存器。當驅動程序進行寫操作,volatile關鍵詞提醒編譯器它后面所定義的變量隨時都有可能改變,因此編譯后的程序每次需要存儲或讀取這個變量的時候,都會直接從變量地址中讀取數(shù)據。如果沒有volatile關鍵字,則編譯器可能優(yōu)化讀取和存儲,可能暫時使用寄存器中的值,如果這個變量有別的程序更新了的話,將出現(xiàn)不一致的現(xiàn)象,該驅動將寄存器地址值都用volatile關鍵詞進行修飾,以此避免寄存器內值不能及時更新的問題。
typedef struct
{
volatile uint32_T * txFifo_0; //pci429 發(fā)送通道fifo
…
volatile uint16_T * bps_sel; //dei1016波特率控制
volatile uint8_T * recEn; //8路接收使能
}Regs_429;
3.2 飛控計算機系統(tǒng)部分
飛控計算機處理器板與ARINC429有關的硬件如圖4所示。
圖4 飛控計算機處理器板示意圖
橋接芯片是為PowerPC專門設計的橋芯片/存儲器控制器,主要實現(xiàn)PowerPC到PCI的橋接功能,同時管理內存VxWorks是WindRiver公司推出的一個高效的嵌入式實時操作系統(tǒng),內核可根據實際需求進行裁減,擁有良好的可靠行和卓越的實時性。由于在不同CPU架構上提供了統(tǒng)一的接口和相同的運行特性,VxWork的應用程序可以在不同的硬件上進行移植,被廣泛地應用在通信、軍事、航空、航天等領域中[3-4]。
WindRiver公司從VxWork6.X開始引入VxBus驅動模型,該模型定義了一些標準的接口來操作系統(tǒng)和硬件設備,VxBus驅動模型涉及設備、驅動和實例。每一個驅動可以與多個設備關聯(lián),但是每個實例只能對應其中的一種關聯(lián)[5],VxBus驅動實例模型如圖5所示。
VxBus架構下arinc429通訊卡的初始化主要包括硬件查找階段、驅動注冊階段、驅動初始化階段1、驅動初始化階段2和驅動初始化階段3五個部分。在硬件查找階段,vxworks系統(tǒng)調用sysHwInit函數(shù)激活設備,在sysHwInit函數(shù)中,通過調用hardWarelnterFaceInit函數(shù)和hardWareInterFaceBusInit函數(shù)來初始化和激活arinc429通訊卡。在hardWareInterFaceBusInit函數(shù),通過調用vxbDevRegister函數(shù)來完成arinc429通訊卡驅動的注冊。
圖5 Vxbus驅動實例模型
驅動程序注冊主要包括vxbDevRegInfo結構體初始化和調用vxbDevRegister函數(shù)兩部分,vxbDevRegInfo結構體提供了驅動注冊所需的相關信息,初始化代碼如下:
LOCAL struct vxbDevRegInfo pci429DevRegistration =
{
…
VXB_DEVID_DEVICE, /* devID */
VXB_BUSID_PCI, /* busID = PLB */
" arinc429", /* drvName */
&pci429Funcs, /* pDrvBusFuncs */
pci429DriverCtrl, /* pMethods*/
…
};
驅動初始化3個階段主要完成內存空間、I/O空間和中斷等資源的申請以及實例的建立,使上層應用程序可以正常使用驅動程序。在pci429DevRegistration結構中pci429Funcs提供了設備驅動初始化3個階段的入口地址,定義如下:
LOCAL struct drvBusFuncs pci429Funcs =
{
pci429InstInit, /* devInstanceInit */
pci429InstInit2, /* devInstanceInit2 */
pci429InstConnect /* devConnect */
};
在pci429InstInit2函數(shù)中主要負責獲取硬件設備相關的資源,vxbRegMap函數(shù)進行板卡基地址映射,從而調用相關的讀寫函數(shù)對設備卡進行操作。
代碼如下:
LOCAL void wrsampleInstInit2(VXB_DEVICE_ID pInst )
{
…
VXB_PCI_BUS_CFG_READ (pDev, PCI_CFG_VENDOR_ID, 2, &venId);
VXB_PCI_BUS_CFG_READ (pDev, PCI_CFG_DEVICE_ID, 2, &devId);
/* find the memory mapped window for the device registers */
for (i = 0; i < VXB_MAXBARS; i++)
{
if (pInst->regBaseFlags[i] == VXB_REG_MEM)
break;
}
pDrvCtrl->pci429Bar = pInst->pRegBase[i]; /* store the base address */
vxbRegMap (pInst, i, &pDrvCtrl->pci429Handle); /* map the window */
…
}
在pci429InstConnect函數(shù)中完成硬件啟動時相關資源的配置,包括中斷部分、發(fā)送部分部分、接收部分以及狀態(tài)命令字段。
EFIS實時準確的更新飛艇模型發(fā)送的飛行狀態(tài)信息,并且飛艇模型隨著飛控計算機操作命令的不同,實時準確的變換著飛行姿態(tài)。實驗證明,ARINC429通訊卡驅動程序保證了飛艇仿真系統(tǒng)穩(wěn)定、可靠和實時性的通信。
飛艇仿真系統(tǒng)模型計算機和飛控計算機分別采用xpc系統(tǒng)和vxworks系統(tǒng),ARINC429驅動程序保證仿真系統(tǒng)在不同操作系統(tǒng)之間的實時通信,同時ARINC429驅動程序為上層應用程序訪問ARINC429通信卡提供基礎。
[1] 王 蒙.基于嵌入式系統(tǒng)的SpaceWire總線驅動技術研究[J].計算機測量與控制,2014,22 (2):483-485.
[2] 宋 煒,祖家奎.基于x P C 目標的實時I/O接口技術研究[J].計算機應用,2008,27(1):62-65.
[3] 李 焱.VxWorks下82C55A并口驅動系統(tǒng)設計及測試[J].計算機測量與控制,2010,18 (2):261-263.
[4] 曹桂平.Vxworks設備驅動開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.
[5] Wind River System Inc.. VxWorks programmer’s guide[Z]. Wind River System Inc.,1999.
Design and Implementation of a ARINC429 Driver for Semi- physical Simulation System
Li Guanlin1,Qiao Jinlong1,2
(1.China Special Vehicle Research Institute,Jingmen 448035,China;2.Key Aviation Scientific and Technological Laboratory of High-Speed Hydrodynamic, Jingmen 448035,China)
In order to meet the demand of communication reliability and real-time for airship in actual flight process, the airship model computer of semi-physical simulation system uses an embedded real-time system Xpc which uses PC as a platform, flight control computer uses an embedded real-time system VxWork which uses PowerPC as a platform,through the ARINC429 protocol for data communications.In hardware, PowerPC accesses and controls PCI devices through the bridge chip; in software, in accordance with written procedures of PCI device drivers in Xpc system and vxWork system,it analyzed the key technical points of the xPC memory drive frame and the vxBus drive frame, designed the communication card driver ARINC429 of airship computer model Xpc and flight control computer Vxwork. Through practical application, it confirmed the development of the ARINC429 driver meet the reliability and real-time of data communications for airship semi-physical simulation platform.
semi-physical simulation system; embedded real-time system; ARINC429 protocol; drivers
2015-09-15;
2015-11-04。
李冠林(1987-),男,山西朔州人,碩士研究生,工程師,主要從事嵌入式方向的研究。
1671-4598(2016)09-0176-02
10.16526/j.cnki.11-4762/tp.2016.09.049
TP3
A