基于VxWorks目标跟踪系统的接口板设计
术的研究已经成为提高坦克火控系统性能研究的主要方向。本文以研制坦克目标自动跟踪系统信息处理平台为背景,设计了基于 VxWorks的目标自动跟踪系统的 PCI总线接口板,实现了坦克火控计算机与坦克火控系统之间的数据通信。其中以桥接芯片 PCI9054为核心的设计尤为重要。使目标自动跟踪系统具备了能够捕获和跟踪较复杂背景下的无伪装的坦克和装甲车的能力,以及在跟踪状态下出现目标被遮挡时,系统进入记忆跟踪状态的能力。
2 目标自动跟踪系统的硬件电路设计
在基于 VxWorks嵌入式系统下,根据坦克目标自动跟踪系统的总体技术要求,需要完成 I/O板硬件结构电路的设计;PCI9054的配置;接口驱动程序的编写以及系统主程序的设计,实现目标自动跟踪计算机与坦克火控系统之间的数据通信。
下面就坦克目标自动跟踪系统总体设计进行论述。坦克目标自动跟踪系统包括通用视频跟踪器的所有功能,系统硬件由跟踪器主机、瞄准线功率驱动模块、视场图像及相关信息显示器、前端图像采集系统和连接电缆等几部分组成。跟踪器主机由主机板、 DSP板、图像图形板、I/O板、电源板和机箱、无源底板、插接件组成,主要完成图像采集、处理并输出控制;瞄准线驱动控制模块主要对跟踪器主机输出的控制信号进行功率放大来驱动瞄准线;显示器用于显示视野图像及相关信息;前端图像采集系统主要指火控系统光学改造部件及图像采集器 CCD;连接电缆用于实现目标自动跟踪系统各部件的信号连接。坦克目标自动跟踪系统组成如图1:
从图 1中可知,系统通信与控制模块(亦称 I/O板)是通用型的目标自动跟踪器与火控系统相连接的桥梁,在目标自动跟踪火控系统中具有极其重要的作用。它要求实时处理 DSP板传送的目标现在点和瞄准线中心的偏差量,最终转化为对瞄准线的控制量。将瞄准线控制量传送给瞄准线驱动控制模块,实现高精度控制瞄准线,使之始终对准目标。
3 在 VxWorks下的驱动程序设计
3.1设备驱动程序的设计与实现
应用程序必须通过驱动程序才能与硬件进行数据通信,而驱动程序的编写与操作系统密切相关。在 VxWorks操作系统中, BSP板级支持包向 VxWorks提供与硬件环境的接口,负责完成加电时的硬件初始化、为 VxWorks访问硬件驱动程序提供支持、将 VxWorks中与硬件有关以及与硬件无关的软件进行集成。因此在 VxWorks下编写驱动程序时首先要对 BSP进行修改配置。根据本系统的实际情况需要修改 config.h头文件:
#define DEFAULT_BOOT_LINE "fei(0,0)host: VxWorks h=172.16.21.100 e=172.16.21.253 u=chb pw=123456"在 VxWorks中,设备驱动程序有查询方式和中断方式二种。无论采用哪一种方式,设备驱动程序的基本流程都是相同的,如图 2:
从图 2中可以看出,编写设备驱动程序的第一步是获取硬件接口参数,包括内存映射地 址、I/O端口和系统中断控制器的输入(IRQ)。获取这些参数的方法由硬件的接口方式决定。例如,PCI总线作为一种即插即用的总线结构,在 BIOS和操作系统的支持下,能够自动为设备分配合适的硬件接口参数。其部分程序代码如下:
1) 定义常量和全局变量 #define PCI9054_DEVICE_ID 0x9054 #define PCI9054_VENDOR_ID 0x10B5 #define PCI9054_MEMSIZE 0x00001000 #define PCI9054_INIT_STATE_MASK (VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE) #define PCI9054_INIT_STATE (VM_STATE_ VALID | VM_STATE_ WRITABLE | VM_STATE_ CACHEABLE_NOT) Typedef struct pci9054Info { UNIT pciBus,pciDevice,pciFunc; Char irq; }PCI9054_INFO; LOCAL PCI9054_INFO pci9054InfoTable={-1,-1,-1,-1};
2)获取硬件接口参数 Void sysPci9054Init(void) {int pciBus, pciDevice, pciFunc; Int intdex = 0; UINT32 membaseCsr; Char irq; PCI9054_INFO pciRes; pciRes = &pci9054InfoTable; //利用供应商标识和设备标识确定设备的总线号、设备号和功能号,在系统中查找设备 pciFindDevice(VENDER_ID, DEVICE_ID, 0, &pciBus, &pciDevice, &pciFunc) == DDRESS_1, &membaseCsr); //确定映射到系统中的设备基地址 membaseCsr&= PCI_MEMBASE_MASK; //获得设备的 IRQ pciConfigInByte (pciBus, pciDevice, pciFunc,PCI_CFG_DEV_INT_LINE, &irq); //将设备映射到内存中 sysMmuMapAdd((void)membaseCsr, PCI9
- 一种基于OMAP5910的低压保护测控装置(09-01)