摘要:ARINC429总线是航空专用总线,运用十分广泛。本文以S698-T处理器为渠道,从底层驱动程序下手,具体叙述了针对S698-T处理器的VxWorks ARINC429总线驱动模块的运用与开发进程。给出了经过VxWorks VIP工程调用ARINC429驱动,完结数据收发的进程,可为后续的运用、开发作业供给协助。
导言
VxWorks操作体系作为一种嵌入式实疾僮飨低(RTOS),具有高功用的内核以及友爱的用户开发环境,发展为当今较盛行的嵌入式体系。其运用遍及通讯、国防、工业操控、医疗设备等多个嵌入式范畴。
S698-T是珠海欧比特操控工程股份有限公司面向嵌入式操控范畴而研发的一款高功用、高牢靠的SoC芯片,以130 nm CMOS半导体工艺制作。S698-T芯片以高功用的SPARC V8(IEEE-1754)架构,规范的32位RISC整数单元IU为主控内核,配以IEEE-754规范的64位双精度浮点处理单元FPU。此外,S698-T内部还集成了1553B总线操控器、ARINC429总线操控器、CAN总线操控器、多功用I/O接口、UAR丁接口、在线硬件调试支撑单元DSU、DAC模块、ADC模块等多种功用模块。
ARINC429总线协议是美国航空电子工程委员会(Airlines Engineering Committee)于1977年7月提出的,并于同年同月宣布并取得同意运用。数字式信息传输体系DITS,规矩了航空电子没备及有关体系间的数字信息传输要求。ARINC429广泛运用在先进的民航客机中,如B-737、B757、B-767等。ARINC429总线结构简略、功用安稳、抗干扰性强。最大的优势在于牢靠性高,这是因为它非集中操控、传输牢靠、过错阻隔性好。
1 S698-T ARINC429驱动程序规划
ARINC429驱动依据VxBus形式进行开发,VxBus是在VxWorks中用于支撑设备驱动的特有架构。VxBus在总线操控器驱动程序服务的支撑下,能在总线上发现设备,并履行一些初始化作业,使驱动与硬件设备之间正常通讯。它包括以下功用:
①答应设备驱动匹配对应设备;
②供给驱动程序拜访硬件的机制;
③答应软件其他部分拜访设备功用;
④在VxWorks体系中,完成设备驱动的模块化。
在VxWorks6.2版别发布前,设备驱动并不能被集成到VxWorks工程装备傍边,为了增加或移出设备驱动,需求有丰厚的BSP和驱动开发相关的常识。并且在驱动被增加或移出时要去做一些办理VxWorks工程的额定作业。作为VxWorks体系组件的一部分,VxBus消除了上面遇到的一些难题,各种驱动和支撑组件的增加与删去完全能够在Workbench工程中进行,而不需求BSP和驱动相关的常识,也不会在增加、删去驱动时增加办理VxWorks工程的额定作业。因而大大方便了BSP的开发。
ARINC429驱动选用第三方驱动程序的安排办法,VxWorks答应驱动程序开发厂商和开发者创立第三方驱动程序,不需求忧虑不同厂商的文件之间的命名空间抵触。每一个想供给VxWorks驱动程序的厂商有必要在3rdparty目录创立自己的子目录。
虽然一个驱动程序能够包括许多文件,比方多个源文件和多个头文件,可是一个规范的VxWorks驱动程序有一个最小的文件集,关于大多数VxWorks驱动程序最少要求6个文件,如表1所列。
一般情况下,CDF文件、dc文件、dr文件都被认为是驱动程序的装备文件,下面具体介绍这些文件。
1.1 驱动程序源文件
驱动程序源文件包括了驱动程序功用的完成逻辑,它们被放在目录installDir/vxworks-6.x/target/src/hwif,第三方驱动的源文件放在目录installDir/vxworks-6.x/target/3rdparty。许多VxWorks设备驱动程序只包括一个源文件,一个驱动程序能够包括一个或许几个可选的头文件;驱动程序能够包括多个源文件,此刻有必要在Makefile里边供给各个模块的依靠规矩。下面以文件leon2obt429.c为例来阐明VxWorks驱动程序的结构。
设备驱动程序的榜首部分是一个描绘VxBus初始化阶段要调用的例程的结构:
LOCAL struct drvBusFuncs leon2OBT429DrvFuncs={
leon2OBT429InstInit,
leon2OBT429InstInit2,
leon2OBT429InstConnect
};
接着就是描绘驱动程序所支撑的驱动办法的数据结构(每一种类别的驱动程序都有必要完成该类的驱动办法):
LOCAL device_method_t leon2OBT429Drv_methods[]={
{0,NULL}
};
然后描绘该驱动程序需求的注册信息的结构:
LOCAL struCt vxbDevRegInfo lcon2OBT429DrvRegistration={
NULL, /*后续设备指针*/
VXB_DEVID_DEV%&&&&&%E, /*设备ID号*/
VXB_BUSID_PLB, /*总线ID号*/
VXB_VER_4_0_0, /*VxBus版别号*/
“leon2OBT429Dev”, /*驱动称号*/
leon2OBT429DrvFuncs, /*驱动进口函数指针*/
leon2OBT429Drv_methods[0],/*设备办法组*/
NULL, /*设备勘探*/
NULL /*默许参数*/
};
在注册信息后边,驱动程序有必要供给一个例程来向VxBus注册,标明该驱动程序的存在:
void leon2OBT429DrvRegister(void){
/*驱动注册,此刻不需求真实的硬件*/
vxbDevRegister((struct vxbDevRegInfo *)
leon2OBT429DrvRegistration);
}
因为驱动程序注册办法被当作是驱动程序的榜首个进口点,VxWorks有必要被装备成:当该驱动程序向VxBus注册时,VxWorks知道调用该进口点。为了做到这点,VxWorks运用的之前说到的那几个驱动装备文件:CDF文件、dc文件、dr文件。
1.2 CDF文件
CDF文件的全称是Component Description File,组件描绘文件。依据VxBus规范开发的VxWorks设备驱动程序都被编译成一个独自的模块,能够运用VxWorks装备东西十分轻松地将驱动程序装备进BSP中。可是,有必要为你的设备驱动程序创立一个VxWorks组件。
一个组件是一个根本的功用单元,它能够独自装备进入VxWorks内核镜像中。为了能够独自增加和删去设备驱动程序到VxWorks中,驱动程序有必要能够被VxWorks装备东西识别成individual组件。为了让驱动程序能够在Workbench或许vxprj中是能够装备的,有必要创立CDF文件,CDF文件供给VxWorks装备东西所需求的信息。针对风河公司发布的设备驱动程序,其对应的CDF文件坐落以下目录: