0 引言
破片速度是战斗部爆炸效能评估的一个重要参数。传统的靶场破片测速系统多使用多路数据采集卡设置好的参数现场采集标靶的试验波形,试验完成后再交由计算机进行后期处理和解读以获取破片速度等参数。但随着军事科技的日新月异,靶场破片测速系统需要根据实际情况现场设置的参数越来越多,参数设置的灵活性越来越强,对系统工作的实时性要求越来越高;另一方面,战斗部爆炸试验在野外进行,条件恶劣,大型设备携带不便,并为靶场破片测速系统设计提供了一个新的思路。
1 系统硬件设计
系统使用arm+fpga的设计方式:arm处理器选用samsung公司推出的基于arm920t内核的s3c2440。s3c2440主频高达400 mhz,完全能够胜任系统工作要求。s3c2440集成了sdram和flash控制器,提供了串口,触摸屏接口,usb接口等多种接口,接口丰富、功能强大,是一款高性能,低价格的处理器,在嵌入式设备中获得了广泛的应用。fpga选用了altera公司stratixⅱ系列的ep2s15芯片,该芯片器件密度可达到15600等效逻辑元(le),能提供419kb片内trimatrix存储器,多达12个dsp区块共有48个(18×18 b)乘法器,用来实现高性能滤波器和其他dsp功能。
系统使用该芯片64 mb sdram作为系统内存,64 mb flash用于linux内核、文件系统、应用程序和试验数据的存储,为系统运行提供了充足的存储空间。
系统硬件结构图如图1所示。
在图1中,系统采用了32个标靶用于破片测速,一个标靶对应fpga的一个通道,每个通道对应一个32 b计数器。战斗部爆炸后,破片击穿标靶时产生的脉冲将作为起停信号,控制fpga中相应通道的计数。所有通道中最早触发的通道为基准通道,相应通道计数器值为0。从基准通道被触发时刻起,除基准通道外所有通道计数器开始计数,直到本通道收到触发信号或者最长计数时间时停止计数。停止计数时的通道计数值即为本通道的触发计数值。
fpga作为一个外部存储器挂载在arm的存储器总线上,这样arm处理器通过存储器指令可直接访问fpga,从而通过读写fpga的数据和控制寄存器实现对fpga的控制和对数据的读取。fpga设置了32通道通断寄存器、32通道输入触发器、通道触发计数器等多个数据寄存器,设置了最长记录时间寄存器等多个控制寄存器用于控制fpga的动作。
arm与fpga接口如图2所示。
为了便于交互,系统配置了一块5.7英寸带触摸屏的lcd显示屏作为显示控制设备,并且提供了usb口实现与主机通信。通过试验测试,本系统能够充分发挥arm的强大处理能力和fpga的并行处理能力,成功达到试验目的。
2 系统软件设计
系统软件结构图如图3所示。
在设计具体应用程序前首先要对操作系统进行裁减。gui为用户提供了与应用系统交互的可视化通道,在嵌入式软件系统中占据重要地位。针对嵌入式设备资源有限的特点,嵌入式gui要求提供这样一种交互接口,即它占用资源少且反应迅速,具备高度的可移植性和可裁减性。嵌入式linux内核,是一种完全开源、功能强大的操作系统内核,与时下流行的wi-nce等嵌入式操作系统相比,其优点之一就在于内核的可裁减性。目前国内主流的嵌入式gui系统有minigui,micro window,qt/embedded等几种,各有优缺点。综合比较各种gui系统的优劣,从gui系统的封装性、可移植性和系统设计的便捷性考虑,最终选取qt/embedded进行gui的设计。
qt/embedded(以下简称qt/e)是由着名的trolltech公司专门针对pda等嵌入式移动手持设备开发的开放源码的一套应用程序包和开发库,具有可视化强,界面美观,类库完善丰富,封装性好的优点。它通过qt api与linux i/o以及framebuffer直接交互,拥有较高的运行效率,而且整体采用面向对象编程,拥有良好地体系架构和编程模式,qt/embedded和qt一样,在4.5版本之后提供了三种不同的授权协议gpl, lgpl和commercial。qt embedded目前的版本通常为4.5,提供了两个版本,分别是qt for embedded linux,以及qt for windows ce。许多基于计算机qt的x window程序在交叉编译后都可以非常方便地移植为qt/e版本,查看效果后经交叉编译直接在嵌入式设备上运行,大大简化了开发流程,节约了开发时间。
3 嵌入式gui程序实现
3.1 qt/e具体程序设计
系统在试验前需要根据现场情况进行参数设置,尤为重要的是完成标靶的分组设置:在同一方向上的两个或多个标靶分为一组,靶间距事先确定,同一破片将先后通过同组标靶,产生触发信号,控制对应通道计数器的计数起停。破片测速完成后,fpga获得的通道触发计数值除以fpga计数频率即为通道的触发时刻值。在试验完成,获得测试数据后,经过运算,就可以表格和分布图两种方式给出破片的触发时刻值和速度值,快速直观。存储管理模块负责系统参数及测试数据的保存和读取,以进行试验数据的进一步分析。在试验前未连接标靶的情况下,脱机进行参数设置,设置完毕后可保存所有设置参数。试验时,只要选择保存的参数就可直接载入脱机设置的参数,极大增强了系统工作的灵活性。
根据系统测速过程,系统软件的工作流程如图4所示。
按照系统应用要求,将gui设计分为:参数设置模块、系统测试模块、结果查看模块和存储管理模块四个模块。参数设置模块负责对破片测速系统所需要的各种参数进行设置,主要包括标靶分组、标靶间距、标靶类型、最长计数时间。结果查看模块负责对测试结果进行显示。用同一标靶组内两个相邻标靶之间的间距除以相邻标靶之间触发时刻值的差值,即可得到破片在两个标靶之间的平均飞行速度。每个标靶组可测得一组破片穿过本标靶组时的速度值,通过进一步的计算,可获得破片的速度分布、速度降等参数。
3.2 qt/e程序优化
嵌入式设备的显着特点是cpu主频不高,资源有限。因为这个局限性,许多在计算机上运行流畅的qt/e程序在嵌入式设备上反应滞后,在极端情况下甚至会出现短暂的界面冻结现象。为了提高嵌入式gui的反应速度,对qt/e应用程序设计就提出了更高的要求。本文在界面设计中,针对gui运行中出现的问题,对qt/e程序进行了一些优化,经过优化后,界面的反应速度明显改善。
3.2.1 采用静态链接代替动态链接
与静态链接相比,动态链接的优势在于动态库可被多个进程复用,从而减少了对系统内存的使用。但是动态链接的这种优越性是有代价的,由于进程在初始化时要加载并且初始化大量的动态库,当需要加载的动态库比较多或者动态库比较庞大时,直接的影响就是降低进程启动速度;另外一个影响是系统运行时因为函数的链接也要耗费一些时间。嵌入式qt/e程序如果使用动态链接就面临这个问题。可以利用一下qwidgetstack或者自己做一个全屏窗口管理类,在初始化时候就把所有窗口对象全部建立起来然后用窗口管理来决定显示哪个窗口。
由于本系统设计为专用系统,仅有一个gui程序,可采取对qt/e库静态链接的方式来提高启动和运行速度。一般来说,为了保证程序的基本功能,即使经过裁减后,qt/e动态库也有将近10 mb大小,这些动态库在嵌入式平台上的加载将耗费大量时间。针对这个问题,一种解决方法是采用prelink预链接的方法先确定每一个动态库在内存的加载位置,从而省去动态库重定位这一过程。但是这种方法的步骤比较繁琐,使用上存在一些限定要求,在这里并不推荐。
当今,嵌入式系统的发展已经进入大融合的时代,其特点如下:通信、计算机及消费电子产品(3c)融合——趋向没有独立的3c,只有融合的3c,即信息产品(ia),数字模拟融合、微机电融合、电路板硅片融合及硬软件设计融合——趋向soc:和sip嵌入式整机的开发工作也从传统的硬件为主变为软件为主,激烈的市场竞争和技术进步呼唤着新颖的产品开发平台,特别是soc开发平台的出现。随着嵌入式技术的不断发展,嵌入式系统将更广泛应用于人类生活的各个方面。
3.2.2 使用基础控件代替复合控件
加快界面反应速度最直接有效的方法就是减少界面中的控件数,这里的控件数,准确地说,指的是qwidget等基础控件的数量。在实际程序设计过程中,一个有效设计方法是对一些复合控件尽可能使用基础控件代替。qt/e中提供了许多功能强大的复合控件,这些复合控件通常是由多个基础控件复合而成的,虽然操作方便,但是资源消耗也比较多,从而影响了整个界面的运行。以表格的绘制为例,如果表格使用复合控件qtablewidget实现,表格的每一个表项都作为一个子控件存在。而如果用基础控件qwidget实现表格,只需调用一次基础控件的paintevent()就可以在paintevent()函数中自定义实现表格的绘制,虽然书写代码量可能会大一些,但是函数调用次数少,并且可以做到对表格每一个局部刷新区域的有效控制,避免许多无用操作,在嵌入式平台上,反应速度明显加快。
3.2.3 采用延迟刷新方法
采用这种方法相当于把耗时复合控件的刷新延迟,而先让界面其他控件完成刷新操作,从而快速显示界面的刷新效果。其目的就是要把一切变得更简单、更方便、更普遍、更适用;通用计算机的发展变为功能电脑,普遍进入社会,嵌入式计算机发展的目标是专用电脑,实现“普遍化计算”,因此可以称嵌入式智能芯片是构成未来世界的“数字基因”。正如我国资深嵌入式系统专家—沈绪榜院士的预言, “未来十年将会产生头大小、具有超过一亿次运算能力的嵌入式智能芯片”,将为我们提供无限的创造空间。
由于在后台已完成了界面绘制,采用双缓冲绘图,可有效消除闪烁。参考双缓冲绘图的做法,为了解决耗时复合控件和整个界面在刷新时的矛盾,本文的思路是当界面,需要刷新时先不刷新复合控件,而是在背景上用一幅画布替代复合控件区域,这种方法特别适合于复合控件变化较小而整个界面需要刷新的情况。由于耗时复合控件的禁止刷新,整个刷新过程将会快速完成;最后再调用复合控件的setupdateenable(true)重新使能复合控件的刷新功能。更进一步的方法是,只有当耗时复合控件变化时才调用复合控件的setupdateenable(true)允许刷新操作,其余时刻均在背景上使用qpixmap绘制代替。具体做法是在确定了耗时复合控件后,构造一幅画布qpixmap,利用qpixmap::grabwindow()函数在画布上绘制出该复合控件所占区域图形。
4 结语
系统综合利用了arm和fpga的优点,为了增强靶场破片测速系统的便携性和实时性,提出了一种基于嵌入式技术的靶场破片测速系统设计方法。系统硬件上采用arm+fpga的架构,软件上不仅采用qt/embedded设计了图形界面,而且给出了嵌入式设备上qt/embedded程序的优化方法。系统设计结构清晰、条理严整、程序健壮,这种系统设计结构和对qt/e程序的优化思想对同类设计具有较大的参考意义。
首创后置三摄+三摄万物:华为联合京东这波海报666
物联网安全之Unicorn框架初探
高频闭锁方向保护的动作条件和闭锁条件是什么?
七月新机红米Pro2,屏幕占比史无前例,价格适中1999
华为Mate50“没电也能打电话”
基于S3C2440与EP2S15芯片实现靶场破片测速系统的设计
FLIR分离式热像仪的应用案例
直角坐标机器人&关节机器人的区别详解
美政府否决,芯片设备厂商巨头并购计划落空
创新MUVO2C防水蓝牙音响评测 近乎全能的超迷你音响怎能轻松错过
微型空气监测系统安装使用注意事项
微软打辅助,大众花两千亿能否推掉传统汽车这座高塔?
字节跳动想要进入电商领域?
运动跑步耳机哪种好,运动跑步耳机推荐
TD-SCDMA技术对无线网络规划的影响
三偏心蝶阀是什么?你了解三偏心蝶阀吗?
一文解读铝基板pcb制作规范及设计规则
大数据在应用程序监控中有什么作用
为何网络传输方式中的广播这么重要?有什么限制吗?
汽车照明的热管理方法是什么