雾膜软件-大胡子刘师傅
(省流版)
(网站建设中,仅部分功能可用)
工程中实用的导航设备,需要在采集传感器数据后进行在线计算,立刻输出导航结果。出于体积和功耗的考虑,导航计算过程一般在诸如DSP或单片机等嵌入式处理器中进行,而非在通用计算机中进行。上述条件下,在线导航程序的调试具有较大的难度。经常发生的问题是,在线导航程序计算结果不对,但是技术人员不会调试。
造成在线导航程序的调试困难的原因有:(1)在线计算难以回溯故障点。在发现导航结果异常时,产生异常的软件故障点已经运行完毕了、难以找到。(2)嵌入式系统难以输出波形图、数据存储容量较小,不利于调试。(3)传感器采样的问题,与数据计算的问题混在一起,难以分开。
制作嵌入式组合导航程序的关键,是要做到数据采集与计算过程的分离,实现高内聚低耦合。研发在线导航程序时,为了便于调试,应该按照这样的步骤:(1)嵌入式系统的程序,采集传感器数据,并输出至通用计算机;通用计算机实时记录传感器原始数据。(2)利用Matlab程序,离线处理传感器原始数据,输出导航结果;应当在这一步完成算法部分的调试,确保计算结果正确。(3)编写C语言程序,离线处理传感器原始数据;这一步要达到C语言输出与Matlab输出相符的效果。(4)将C语言程序移植到嵌入式处理器,进行在线计算实验;这一步应该尽可能不更改组合导航算法部分的程序代码。(5)输出传感器原始数据和导航结果至通用计算机,利用传感器原始数据离线复算,验证在线计算的结果与离线复算的结果一致。
上述操作规避了在线调试算法的难点。经过上述操作后,可以确保嵌入式程序的算法部分是正确的。如果再有软件异常问题,那么可以排除算法部分的故障,而是专门关注其余可能的问题。
研发在线导航程序时,还需要注意几个嵌入式处理器可能存在的问题:(1)嵌入式处理器应当具有硬件FPU(浮点数处理单元);如果没有硬件FPU,容易发生计算速度不够的问题。(2)注意内存堆栈容量;组合导航需要矩阵计算,如果堆栈容量偏小,可能发生堆栈溢出的问题。(3)合理设计时序,避免数据传输过程占用时间过长、耽误计算;可以合理利用DMA(直接内存访问)等方式实现数据传输,为计算预留更多时间。
如需引用本文,请引用《组合导航应用笔记》,东南大学出版社,2025。
备案号