S698-T处理器的VxWorksARINC 429总线模块应用

分享到:
12701
下一篇 >

摘要:ARINC429总线是航空专用总线,应用非常广泛。本文以S698-T处理器为平台,从底层驱动程序入手,详细讲述了针对S698-T处理器的VxWorks ARINC429总线驱动模块的应用与开发过程。给出了通过VxWorks VIP工程调用ARINC429驱动,完成数据收发的过程,可为后续的应用、开发工作提供帮助。

引言

VxWorks操作系统作为一种嵌入式实吋操作系统

&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文件位于以下目录:

installDir/vxworks-6.x/target/config/comps/vXWorks

在风河提供的驱动程序中,一个CDF文件可能包含着描述多个设备驱动程序的信息,对于第三方驱动,其CDF文件路径是在驱动程序目录下。

40leon2obt429.cdf文件的主要数据结构如下:

Component DRV_LEON2 OBT429{

NAME LEON2 obt429 VxBus driver

CDF文件使用上述语句来定义一个组件ID。VxWorks中的每个组件必须用Component关键字来描述,驱动程序的ID一般以DRV_开始,并在ID中包含该驱动程序的描述性信息,每一类的驱动程序对组件ID都有着相同的命名习惯。设备驱动程序组件标准的命名习惯应该是DRV_CLASS_ NAME。组件名字必须是**的,而DRV_CLASS_NAME中的DRV和CLASS都有可能相同,这就要求NAME必须**才行。

2 8698-TARINC429驱动应用编程

ARINC429是普通I/O设备,设备打开、关闭通过标准open()、close()函数完成。数据的收、发通过标准write()、read()函数完成,而通道的配置、选择等需要通过ioctl()函数完成。由于S698-T中的429模块总共有6个通道:4个接收通道、2个发送通道。为了进行区分,软件在进行收、发操作之前要先进行通道选定,以下分别是调用ARINC429驱动完成ARINC429数据收、发操作的一般软件流程,如图1、图2所示。

以下示例调用ARINC429的驱动,完成ARINC429数据的发送、接收操作。示例需要新建一个VIP工程,新建429test.c文件中输入的程序代码略一一编者注。

3 S698-TARINC429应用执行结果

首先选择“wrleon23_sparcleon”BSP包创建一个VIP(VxWorks Image Project)工程。

完成工程的创建之后还需对内核进行配置。在Workbench左侧的Project Explorer窗口中点击创建的工程,再双击Kernel Configuration进入到内核配置界面。

为了让编译的镜像文件具有ARINC429功能,需添加ARINC429组件,首先查找到组件“LEON2 obt429 VxBus driver”,并将其添加到工程中。

将上节中编辑好的429test.c文件添加到工程中,*后要修改usrAppInit函数,增加对OBT429AppInit函数的入口调用。

编译整个工程,再通过dsumon调试器下载VxWorks映像到目标板上运行。

下载运行的步骤如下:

①确保S698-T开发板上的DSU口和UART0已连接到PC机;

②先打开超级终端,打开相应的串口,用于S698-T程序运行时的显示输出;

③再打开cygwin终端,进人工程目录,连接dsumon;

④将生成的Image文件下载进目标板。

命令描述如下:

$ dsumon-i-u

$ lo VxWorks

$ run

在超级终端上可以观察到运行VxWorks的运行结果,如图3所示。

从程序输出结果中可以看出,接收通道1完全接收了发送通道1发出的20个帧数据,前7帧为非0数据,后13帧为全0;由于选择的是25位字长模式,接收到的数据与发送数组中的数据存有差异,为(tempbuf[n]&0x1FFFFFF),实际值与预期值完全相同。

另外还可以在VxWorks Shell中输入devs和vxBusShow命令来观察ARINC429硬件驱动的挂载情况,如图4所示。

结语

针对S698-T处理器内部的ARINC429总线模块,开发了基于VxWorks6.7的ARINC429驱动程序,该驱动程序是标准I/O设备驱动,使用方便、处理灵活。本文详细给出了通过VxWorks VIP工程调用ARINC429驱动,完成数据收、发的过程,并给出了相关参考代码,以及对应的验证结果,可为后续的应用、开发工作提供帮助。

你可能感兴趣: 设计应用 图片 处理器 总线 操作系统
无觅相关文章插件,快速提升流量