张穗华,陈 浩,刘仪聪
(中国兵器工业第五八研究所,四川 绵阳 621000)
Hi3531A 是HUAWEI 海思开发的针对多路高清和标清DVR 产品应用的一款专业SOC 芯片,内置ARM-A9 双核处理器和H.264 视频编解码引擎,支持PAL 和SDI 接口视频信号输入,提供HDMI、VGA 高清显示输出能力,且集成有丰富的外围通信接口[1]。
Qt 是由QtCompany 开发的跨平台C++图形用户界面应用程序框架开发平台[2-3]。它具备优良的跨平台特性、组件编程和丰富的控件资源,可以为开发者提供健全且美观的用户界面功能[4-5]。
遥控武器战是一种可以应用于多平台的相对独立的模块化、通用化武器系统[6],其组成框图如下页图1 所示。
图1 遥控武器站系统组成框图
操控终端作为遥控武器站类型武器装备平台的重要组成部分,是系统人机交互的接口,主要用于警戒监控、状态显示、指令下发等功能的实现[7]。
整个软件的开发环境包括Linux 服务器(宿主机)、Windows 工作台(调试机)和Hi3531A(目标板)3 部分,三者同处于一个网络中,如图2 所示。
图2 开发环境连接示意图
整个操控终端软件的开发流程如图3 所示。
图3 开发流程示意图
海思官方发布的SDK 包中提供有两种编译工具链:基于uclibc 的工具链arm-hisiv300-linux 和基于glibc 的工具链arm-hisiv400-linux。本文选择前者,在Linux 服务器下安装对应工具链,具体步骤不再赘述,海思官方有详细的指导说明。
安装成功之后,会显示如图4 信息。
图4 交叉编译器安装成功示意图
Qt 支持组件编程,在进行源码编译时,可根据实际需要增删对应的功能模块。本文选择Qt4.8.1 作为开发库,编译指令如下:
#makeinstall
编译成功之后,会在对应路径的bin 目录下生成qmake 可执行文件。
配置开发工具QtCreator 如图5~图6 所示。
图5 QtCreator 配置示意图1
图6 QtCreator 配置示意图2
本操控终端外围通信接口包含3 路串口、3 路SDI 视频输入、1 路视频PAL 输入、1 路CAN 口、1路网口、2 路USB、1 路VGA 输出、1 路HDMI 输出。这里重点阐述PAL/SDI 视频驱动、CAN 驱动,以及触摸屏驱动的内核配置和对应源码修改。
Hi3531A 通过ITU-R、BT656/601/1 120 接口或DigitalCamera 接口接收芯片外的视频数据。它拥有5 个BT.1120 接口,前4 个BT.1120 接口每个对应2 个VI 设备,均支持1/2/4 路D1、960H 复合模式输入(BT.656 协议),以及2 路720P 复合模式。第5 个BT.1120 口是专用于级联的。
通过采用TVP5150 芯片,可实现外围PAL 视频输入接口到板级BT.656 接口的信号转换,采用TW6874 芯片可将3 路SDI 视频输入转为对应的BT.1120 口。
Hi3531A 并没有直接可用的CAN 接口,通过采用MCP2515 芯片可将外围的CAN 接口转为板级的SPI 通信口,但需要修改相关的源码文件,包括
driver/net/can/mcp251x.c 以及drivers/spi/spidev_info.c
等,并配置相关IO 引脚的属性。
Hi3531A 支持USB 触摸屏输入,但并没有eGalax 所需的HidMultiTouch 模块,因此,需要根据linux 内核版本修改相关源码并配置内核模块,详情请参考eGalax 的指导说明。
修改完源码,配置好内核,可生成内核文件,并烧写到Hi3531A(目标板)中。以上驱动既可编译到内核文件中,也可单独生成驱动文件,自行加载。
触摸屏驱动安装成功之后,并不能直接供Qt 程序调用。还需要通过Tslib 库将触摸屏的原始数据与界面像素坐标进行校准和映射,校屏后的结果测试如图7 所示。
图7 Tslib 校屏后的效果图
整个操控终端软件框架可分为4 层:驱动层、协议层、功能层、UI 层。其软件组成框图如图8 所示。
图8 操控终端软件组成框图
驱动层用于实现操控终端与外部设备之间的通信和数据采集,在软件设计阶段,可根据硬件通信接口模块化配置。
协议层主要用于实现对接口协议数据的解析、数据格式的转换以及数据库的查询等功能。
功能层主要由火控解算模块、日志记录模块以及图像处理模块组成。其中,图像处理模块可根据用户需求增删子模块:图像识别、图像跟踪、视频传输等。其功能是实现对目标的识别、跟踪,射击诸元解算、预判打击,操作日志和故障信息的记录等。
UI 层是人机交互的入口,主要用于操控指令的使能和下发、工作模式的切换、伺服位置的反馈显示、单体设备健康状态的监控以及功能开启、完成情况的显示等。
UI 界面依据简洁明了、操作便捷的设计风格,主要划分为视频监控、系统健康状态、射控、位置反馈、系统状态反馈、手柄使能反馈,以及功能按钮等区域。
系统健康状态区域布局如图9 所示,用于系统单体设备运行状态的显示。系统故障时,该区域会自动弹出,点击右侧“系统健康状态”图标,该区域可隐藏。
图9 系统健康状态区域布局图
射控区域布局如图10 所示,包含4 种射击模式,用于控制射击方式和射击频率。
图10 射控区域布局图
伺服位置反馈区域布局如图11 所示,图中“指针”会根据枪塔位置旋转。
图11 伺服位置反馈区域布局图
手柄触发反馈区域布局如图12 所示,其中左手柄的遥杆,上下用于调焦,左用于相机切换;按钮分别对应火控解算、图像跟踪、测距以及射击(后扳机连锁)等功能的触发;右手柄的遥杆用于实现伺服位置调转。
图12 手柄触发反馈区域布局图
功能按钮区域布局如图13 所示,主要用于操控指令的使能和下发。点击左侧翻页“<”图标,会跳转到“校零”区域。按钮的使能是根据工作模式来判断。
图13 功能按钮区域布局图
点击校零页面下的“步进校零”按钮,会弹出窗口如图14 所示,主要用于实现枪塔小范围角度调转到位后的零位烧写,步进值范围为0~127,点击界面中的四向键,会发送一帧数据给下位机,实现位置偏移调转。
图14 步进校零界面
操控终端软件主流程框架,如下页图15 所示。
图15 操控终端软件主流程图
简单介绍几个子模块的流程,系统自检模块,如图16 所示。UI 布局模块,如图17 所示。通信子模块,如图18 所示。
图16 系统自检子模块流程图
图17 UI 布局模块图
图18 通信子模块流程图
本软件以Hi3531A 为平台,基于Qt4.8.1 库,采用分层模块化的软件架构,能根据外设通信接口和使用场景自行配置驱动和功能模块。具备简洁明了的操控界面和稳定可靠的运行状态,满足武器装备实时监控警戒、火力打击、系统自检、安全可靠的战场需求。