某型北斗终端设备定位信息故障分析

2018-09-10 05:52曹佩武冯云折雷孔琦郭文辉
航空维修与工程 2018年12期
关键词:内存定位

曹佩武 冯云 折雷 孔琦 郭文辉

摘要:针对某型北斗终端设备不输出定位信息故障现象进行研究分析,查找故障原因,进行故障复现.提出改进措施并进行措施验证,对提高北斗终端设备工作可靠性有重要意义。

关键词:北斗终端设备;定位;内存;栈区

某型北斗终端设备加装于某型武器系统,为装备展开阶段提供快速准确的定位定向基准,为装备作战使用阶段提供精确稳定的时间信号和信息,还提供北斗短消息通信、导航手段,缩短各型武器装备作战准备时间,提高武器系统作战效能;摆脱了对全球定位系统(GPS)的依赖,提高了某型武器系统的自主性和一体化联合作战能力。

1故障现象

该型北斗终端设备设计时,要求设备开始工作至获得准确的定位信息不超过120s。常规测试中,终端设备各项性能指标均为正常;但某项试验要求设备连续工作24小时以上,当试验进行到约2小时,设备出现不输出定位信息的故障;对同型号其他设备进行了相同试验,均在工作约2小时出现不输出定位信息的故障。

2故障原因分析

为了便于分析问题,查找故障原因,列出该型北斗终端设备与定位数据信息输出相关的部件,并明确各个部件之间的信息交互,如图1所示。

该型北斗终端设备接收处理系统包含一个全功能板卡、一个抗干扰天线、两个定向天线和配套的射频电缆。接收处理系统的数据输出逻辑设计为通过串134输出定位、定向和时间等信息,串口1、串132、串口3分别用于定位和定向的PRM芯片和Ic芯片的加注。

接收处理系统中的全功能板卡接收抗干扰天线和定向天线接收到的卫星信号,经过解算得到当前的位置、速度、时间等信息,完成组帧后,按照1Hz的频率通过串134向外输出至综合处理板,综合处理板再将定位信息分别输出至综合显控和标准显控。

抗干扰天线和定向天线与全功能板卡之间只有一根射频电缆,用于传输射频信号并向天线馈电,本身并没有数据与全功能板卡交互,可排除抗干扰天线和定向天线的故障。

根据该设备的定位数据输出逻辑,列出可能造成故障现象的所有情形,故障树如图2所示。

2.1 x1:综合处理板异常排查

接收处理系统通过串口4将定位数据输出至综合处理板,综合处理板再将定位数据输出至综合显控和标准显控,从综合显控和标准显控上查看均无数据输出。同时接收处理系统也通过串口1直接将定位信息输出至测试设备并通过电脑进行显示,电脑显示接收处理板的串口1也无定位数据输出。由此可排除底事件xl。

2.2 E1:全功能板卡异常排查

全功能板卡为某型北斗终端设备的核心部件,属软硬件协同设计,所以很难把硬件、软件完全隔离开,为了更有效地孤立故障部位,以确定是硬件故障还是软件故障,对设备的工作履历进行了查询,发现设备在出现故障之前分别进行过两次1.1、1.2版本软件升级,两次软件升级之前并未出现目前的故障现象。

为了进一步确定故障部位,结合设备工作履历记录情况,又分别进行了X2硬件故障和X3软件故障排查。

1)X2:硬件故障排查

为了验证全功能板卡是否存在硬件故障,对同批次的编号为18-001、18-002两台设备同时進行通电测试,并进行连续拷机试验,在工作至1小时50分时,产品的串口1和串口4均无定位数据输出。对同批次的编号为18-003、18-004和18-005三台设备进行拷机测试,也出现相同问题。

根据试验结果和经验判断,五台设备同时出现硬件故障的概率几乎为零,因此可排除底事件X2:硬件故障。

2)X3:软件故障排查

为了验证全功能板卡是否存在软件故障,将编号为18-001~18-005的定位接收机程序还原至1.0版本,同时进行连续拷机试验,工作24小时以上,产品工作正常,未出现死机现象。为了进一步查清是否由于软件升级导致的定位信息故障,将编号为18-001的全功能板卡连接DSP仿真器,在线load版本为1.2的定位接收机程序,进行连续拷机试验,实时监控DsP芯片内部运行内存的运行状况。当拷机至1小时55分时,DSP程序死机,同时观察到程序内存地址数据出现异常。经分析,DSP程序死机多为内存地址分配不合理造成。

根据定位接收机DSP程序执行逻辑,运行内存分为栈区和堆区。栈区由编译器自动分配释放,存放函数的参数值、局部变量的值等,其操作方式类似于数据结构中的栈。每当一个函数被调用,该函数返回地址和一些关于调用的信息,如某些寄存器的内容被存储到栈区。然后这个被调用的函数再为其自动变量和I}缶时变量在栈区上分配空间,这就是c实现函数递归调用的方法。每执行一次递归函数调用,一个新的栈框架就被使用,这样这个新实例栈里的变量就不会和该函数的另一个实例栈里的变量混淆。而堆区用于动态内存分配,堆在内存中位于bss区和栈区之间,一般由程序员分配和释放,若程序员不释放,程序结束时有可能由OS回收。

栈区和堆区的主要区别如下。

1)管理方式不同

栈编译器自动管理,无需程序员手工控制;而堆空间的申请释放工作由程序员控制,容易产生内存泄漏。

2)空间大小不同

栈是向低地址扩展的数据结构,是一块连续的内存区域。栈顶的地址和栈的最大容量是系统预先规定好的,当申请的空间超过栈的剩余空间时,将提示溢出。因此,用户能从栈获得的空间较小。

堆是向高地址扩展的数据结构,是不连续的内存区域。因为系统是用链表来存储空闲内存地址的,链表的遍历方向由低地址向高地址。由此可见,堆获得的空间较灵活,也较大。栈中元素都是——对应的,不会存在一个内存块从栈中间弹出的情况。

3)是否产生碎片

对于堆来讲,频繁的malloe/free(new/delete)势必造成内存空间的不连续,从而造成大量的碎片,使程序效率降低(虽然程序在退出后操作系统会对内存进行回收管理)。对于栈来讲,则不会存在这个问题。

4)增长方向不同

堆的增长方向是向上的,即向着内存地址增加的方向;栈的增长方向是向下的,即向着内存地址减小的方向。

5)分配方式不同

堆都是程序中由mallocO函数动态申请分配并由freeO函数释放的;栈的分配和释放由编译器完成,栈的动态分配由allocaO函数完成,但是栈的动态分配与堆不同,是由编译器进行申请和释放的,无需手工实现。

6)分配效率不同

栈是机器系统提供的数据结构,计算机会在底层对栈提供支持,分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行。堆则是c函数库提供的,它的机制很复杂。例如,为了分配一块内存,库函数会按照一定的算法在堆内存中搜索可用的足够大的空间,如果没有足够大的空间,就需要操作系统重新整理内存空间,以便分到足够大小的内存,然后返回。显然,堆的效率比栈低得多。

根据对DsP芯片内部运行内存运行情况的监控结果,分析得出DsP程序运行死机的原因。因为程序中大量使用malloeO函数动态申请分配并由freeO函数释放,并且申请的空间与收星个数有关,如果收星个数越大,一次申请的内存越大,如果分配的堆区空间小,有可能造成内存溢出,导致接收机程序运行速度减慢甚至系统崩溃等严重后果。因此,可判断是由于产品升级优化时为了满足增加定位、定向補偿存储功能需求,在程序1.0版本升级至1.2版本后,增加了部分代码,导致运行内存栈区和堆区分配不合理,以至内存溢出而出现死机现象。

3解决措施及验证

3.1故障解决措施

针对内存分配不合理的问题,对DSP程序的运行内存栈区和堆区重新进行分配。具体为:适当减小栈区,由Ox00008000调整为Ox00006000,增大堆区,由Ox00005000调整为Ox00008000,其他代码均未作任何改动,程序版本升级至13,如图3、图4代码所示。

对编号为18-001的全功能板卡烧入13版本的定位接收机DSP程序,进行拷机试验,连续工作24小时以上,未出现死机现象,设备定位信息输出正常。

3.2验证情况

为了验证故障解决措施的有效性,又分别对该批次的编号为18-002~18005的4台设备进行了程序1.3版本升级,程序升级后又分别进行了连续工作24小时以上的拷机试验,均未出现死机现象,设备定位信息输出等其他各项功能均正常。

4结论

根据不输出定位信息的故障现象,从软硬件的角度分别进行了故障查找,确定了故障根源,并进行了故障复现和改进措施验证,问题得到了解决。根据此次产品暴露的故障,应吸取经验教训,在后续产品升级优化过程中,要进行充分的验证,在满足产品功能升级需要的同时应确保产品工作的可靠性。

航利集团荣获2018中国科协企业创新服务成果展“十佳参展单位”奖

11月21日,2018中国科协企业创新服务成果展在湖南省长沙市开幕。航利集团的院士工作站创新服务成果参展项目,获得2019中国科协企业创新服务成果展“十佳参展单位”奖。本次成果展以“促进产学融合、服务企业创新”为主题,展览面积近6000平方米,参展单位200余家,各参展单位全面展示了企业科技创新的最新成果和显著成效。航利集团的院士工作站创新服务成果参展项目,由四川省科学技术协会从四川省众多院士工作站中优选、推荐参加2018中国科协企业创新服务成果展,并从全国200余家参展企业中脱颖而出,获得“十佳参展单位”奖,获此荣誉的还有中国航空工业成都飞机工业(集团)有限责任公司、中车长春轨道客车股份有限公司等。(张良成)

猜你喜欢
内存定位
隐超DDR5 5600AOFRUS DDFR55200 16GBx2内存套装实战
为十二代酷睿而生 KingstonFURY野兽DDR55200内存实战体验
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
紧绕目标定位 开发研学课程
难与易
巧用“余数定位”,突破周期函数的计算问题
内存搭配DDR4、DDR3L还是DDR3?
莫要浪费大内存 活用“内存硬盘”为PC提速
上网本为什么只有1GB?
理想的定位