基于Hi3531A 和Qt 的操控终端软件设计

2021-08-06 06:25张穗华刘仪聪
火力与指挥控制 2021年6期
关键词:内核布局终端

张穗华,陈 浩,刘仪聪

(中国兵器工业第五八研究所,四川 绵阳 621000)

0 引言

Hi3531A 是HUAWEI 海思开发的针对多路高清和标清DVR 产品应用的一款专业SOC 芯片,内置ARM-A9 双核处理器和H.264 视频编解码引擎,支持PAL 和SDI 接口视频信号输入,提供HDMI、VGA 高清显示输出能力,且集成有丰富的外围通信接口[1]。

Qt 是由QtCompany 开发的跨平台C++图形用户界面应用程序框架开发平台[2-3]。它具备优良的跨平台特性、组件编程和丰富的控件资源,可以为开发者提供健全且美观的用户界面功能[4-5]。

遥控武器战是一种可以应用于多平台的相对独立的模块化、通用化武器系统[6],其组成框图如下页图1 所示。

图1 遥控武器站系统组成框图

操控终端作为遥控武器站类型武器装备平台的重要组成部分,是系统人机交互的接口,主要用于警戒监控、状态显示、指令下发等功能的实现[7]。

1 交叉编译环境搭建

整个软件的开发环境包括Linux 服务器(宿主机)、Windows 工作台(调试机)和Hi3531A(目标板)3 部分,三者同处于一个网络中,如图2 所示。

图2 开发环境连接示意图

整个操控终端软件的开发流程如图3 所示。

图3 开发流程示意图

1.1 交叉编译器的安装

海思官方发布的SDK 包中提供有两种编译工具链:基于uclibc 的工具链arm-hisiv300-linux 和基于glibc 的工具链arm-hisiv400-linux。本文选择前者,在Linux 服务器下安装对应工具链,具体步骤不再赘述,海思官方有详细的指导说明。

安装成功之后,会显示如图4 信息。

图4 交叉编译器安装成功示意图

1.2 Qt 源码库的编译

Qt 支持组件编程,在进行源码编译时,可根据实际需要增删对应的功能模块。本文选择Qt4.8.1 作为开发库,编译指令如下:

#makeinstall

编译成功之后,会在对应路径的bin 目录下生成qmake 可执行文件。

1.3 QtCreator 的安装和配置

配置开发工具QtCreator 如图5~图6 所示。

图5 QtCreator 配置示意图1

图6 QtCreator 配置示意图2

2 海思内核配置和驱动加载

本操控终端外围通信接口包含3 路串口、3 路SDI 视频输入、1 路视频PAL 输入、1 路CAN 口、1路网口、2 路USB、1 路VGA 输出、1 路HDMI 输出。这里重点阐述PAL/SDI 视频驱动、CAN 驱动,以及触摸屏驱动的内核配置和对应源码修改。

2.1 PAL/SDI 视频输入

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 口。

2.2 CAN 通信

Hi3531A 并没有直接可用的CAN 接口,通过采用MCP2515 芯片可将外围的CAN 接口转为板级的SPI 通信口,但需要修改相关的源码文件,包括

driver/net/can/mcp251x.c 以及drivers/spi/spidev_info.c

等,并配置相关IO 引脚的属性。

2.3 eGalax 触摸屏输入

Hi3531A 支持USB 触摸屏输入,但并没有eGalax 所需的HidMultiTouch 模块,因此,需要根据linux 内核版本修改相关源码并配置内核模块,详情请参考eGalax 的指导说明。

2.4 驱动加载和配置

修改完源码,配置好内核,可生成内核文件,并烧写到Hi3531A(目标板)中。以上驱动既可编译到内核文件中,也可单独生成驱动文件,自行加载。

触摸屏驱动安装成功之后,并不能直接供Qt 程序调用。还需要通过Tslib 库将触摸屏的原始数据与界面像素坐标进行校准和映射,校屏后的结果测试如图7 所示。

图7 Tslib 校屏后的效果图

3 操控终端软件设计

3.1 软件框架

整个操控终端软件框架可分为4 层:驱动层、协议层、功能层、UI 层。其软件组成框图如图8 所示。

图8 操控终端软件组成框图

驱动层用于实现操控终端与外部设备之间的通信和数据采集,在软件设计阶段,可根据硬件通信接口模块化配置。

协议层主要用于实现对接口协议数据的解析、数据格式的转换以及数据库的查询等功能。

功能层主要由火控解算模块、日志记录模块以及图像处理模块组成。其中,图像处理模块可根据用户需求增删子模块:图像识别、图像跟踪、视频传输等。其功能是实现对目标的识别、跟踪,射击诸元解算、预判打击,操作日志和故障信息的记录等。

UI 层是人机交互的入口,主要用于操控指令的使能和下发、工作模式的切换、伺服位置的反馈显示、单体设备健康状态的监控以及功能开启、完成情况的显示等。

3.2 UI 界面设计

UI 界面依据简洁明了、操作便捷的设计风格,主要划分为视频监控、系统健康状态、射控、位置反馈、系统状态反馈、手柄使能反馈,以及功能按钮等区域。

系统健康状态区域布局如图9 所示,用于系统单体设备运行状态的显示。系统故障时,该区域会自动弹出,点击右侧“系统健康状态”图标,该区域可隐藏。

图9 系统健康状态区域布局图

射控区域布局如图10 所示,包含4 种射击模式,用于控制射击方式和射击频率。

图10 射控区域布局图

伺服位置反馈区域布局如图11 所示,图中“指针”会根据枪塔位置旋转。

图11 伺服位置反馈区域布局图

手柄触发反馈区域布局如图12 所示,其中左手柄的遥杆,上下用于调焦,左用于相机切换;按钮分别对应火控解算、图像跟踪、测距以及射击(后扳机连锁)等功能的触发;右手柄的遥杆用于实现伺服位置调转。

图12 手柄触发反馈区域布局图

功能按钮区域布局如图13 所示,主要用于操控指令的使能和下发。点击左侧翻页“<”图标,会跳转到“校零”区域。按钮的使能是根据工作模式来判断。

图13 功能按钮区域布局图

点击校零页面下的“步进校零”按钮,会弹出窗口如图14 所示,主要用于实现枪塔小范围角度调转到位后的零位烧写,步进值范围为0~127,点击界面中的四向键,会发送一帧数据给下位机,实现位置偏移调转。

图14 步进校零界面

3.3 工作流程

操控终端软件主流程框架,如下页图15 所示。

图15 操控终端软件主流程图

简单介绍几个子模块的流程,系统自检模块,如图16 所示。UI 布局模块,如图17 所示。通信子模块,如图18 所示。

图16 系统自检子模块流程图

图17 UI 布局模块图

图18 通信子模块流程图

4 结论

本软件以Hi3531A 为平台,基于Qt4.8.1 库,采用分层模块化的软件架构,能根据外设通信接口和使用场景自行配置驱动和功能模块。具备简洁明了的操控界面和稳定可靠的运行状态,满足武器装备实时监控警戒、火力打击、系统自检、安全可靠的战场需求。

猜你喜欢
内核布局终端
从电话到自媒体终端——信息的力量
2015-2021年成都终端管制区闪电时空分布特征
复杂线束在双BCI耦合下的终端响应机理
以专利布局洞悉泰雷兹发展与创新
活化非遗文化 承启设计内核
微软发布新Edge浏览器预览版下载换装Chrome内核
“吃人不吐骨头”的终端为王
布局著名变例典藏集锦
起马转中炮对屏风马布局探秘
医疗布局决定未来