APP下载

基于多次加载方案的嵌入式飞控软件在线升级方法

2016-12-14黄彦勃鲁兴举郭鸿武

无线电工程 2016年12期
关键词:飞控控系统校验

黄彦勃,鲁兴举,郭鸿武

(国防科技大学 机电工程与自动化学院,湖南 长沙 410073)



基于多次加载方案的嵌入式飞控软件在线升级方法

黄彦勃,鲁兴举,郭鸿武

(国防科技大学 机电工程与自动化学院,湖南 长沙 410073)

在以DSP为核心的飞行器控制系统使用和维护过程中,经常需要对其嵌入式软件进行在线升级。通过JTAG接口进行软件升级的方式在飞控组件装机后变得非常不方便。研究了通过串行接口进行飞控软件在线升级的方法,基于DSP多次加载方案和双重校验机制在TMS320C6713B DSP系统上实现了飞控代码远距离、可靠的烧录和自启动,验证了方法的有效性。

DSP;飞控软件;串行接口;多次加载方案;在线升级

0 引言

现代飞行器所要完成的任务越来越复杂,其飞行控制方式由遥控飞行向自主飞行和智能飞行发展,对飞行控制系统也提出了多功能、低成本、高精度和小型化的设计要求。DSP(Digital Signal Processor)作为一种高性能、低功耗、实时性高且支持高级语言开发的处理器,成为飞行控制计算机的首选[1]。以DSP为核心的飞控软件开发过程中,常常使用仿真器通过JTAG(Joint Test Action Group )接口进行在线调试与加载。采用这种方法,程序载入速度快、连线简单,在分系统调试和各系统功能验证时非常方便。但在飞控系统整机试验、外场试验等环境下就暴露了它的弊端:由于JTAG信号是TTL电平,随着传输距离的增加,其信号变形会加剧,这就要求仿真器与DSP必须近距离连接。若产品已经组装好,就不得不进行拆分,近距离接上仿真器才能实现软件调试与上传升级。而拆分产品这一过程会给整个系统带来很多隐患,所以简化这一过程,降低软件调试与升级的风险显得尤为重要。此外,对于已经交付的飞控系统,也会有在线升级软件的需求。

针对DSP嵌入式软件在线升级这一需求,人们提出了多种可行的解决方案,包括通过串口[2-3]、PCI总线[4]、以太网[5]和USB总线[6]等接口进行DSP软件的远程更新。文献[7]中介绍了C6000系列DSP的二次加载方案,着重分析了各类DSP在二次加载时的方式与方法。文献[8]中进行了TMS320C641X系列DSP引导方法的研究,着重探讨了ROM引导与HPI(Host Port Interface)引导。文献[9]针对DSP在线烧写程序通用性不强的现象,从存储空间配置等方面出发设计了具有可快速移植的在线烧写程序。目前通过串口烧写用户程序存在一些技术限制:① 驻留程序代码容量受限,导致功能有限,比如有的无法对烧录进入FLASH中数据的正确性进行实时反馈;有的在结束时校验了程序体积,无法实时计算每一帧的校验和;② DSP片内资源有限,导致在串口通信的实现上比较繁琐等。

本文针对现有技术的不足,在DSP+FPGA的硬件架构下,基于多次加载方案设计了与飞控软件独立的驻留升级软件;基于双重校验机制实现了飞控软件的串口在线升级。

1 系统软硬件结构

1.1 硬件组成

本文使用TI公司的TMS320C6713B DSP处理器(以下简称C6713),通过数据、地址总线完成与FPGA的通信,是实现系统数模转换、数据加工和用户控制算法程序运行的硬件平台。由于C6713自带的接口资源不丰富,但具有很强的可扩展性,所以使用FPGA实现外围接口的扩展设计出DSP+FPGA的硬件结构。FPGA使用XiLinx公司的XC3S1000-4FT256I(以下简称XC3S1000),利用其硬件资源实现对C6713的硬件资源扩展。由于C6713上没有提供异步串行接口,只有同步串行接口,因而使用FPGA建立UART(通用异步串行接口)与地面站通信,然后通过数据、地址总线完成DSP对FLASH存储器的读写操作。基于串口的飞控软件上传系统结构如图1所示。

图1 基于串口的飞控软件上传系统结构

1.2 软件结构设计

目前有2种实现方案:① 将支持软件下载的模块与飞控软件的功能模块合并在一个程序中,通过设置飞控系统的状态来控制软件的功能;② 将上述2个模块分置于2个程序,通过运行指针跳转实现程序切换。

由于飞控软件自身具有多功能性、高集成性和高稳定性的特点,所以在飞控软件设计时应尽可能保持飞控软件功能的专用性。因此,为保证飞控软件的稳定性以及软件上传的可靠性采用驻留软件与飞控软件相独立设计的方案。驻留软件主要功能是实现飞控软件代码的接收及烧录功能。为确保烧录可靠性,在烧录模块中采用2次校验机制。驻留软件结构如图2所示。

图2 驻留软件结构

飞控软件的功能主要体现在2个方面:① 飞行控制,使飞行器按照预先设定的姿态角、高度、航线和航向等信息来改变飞机的飞行姿态和航迹,并使飞行器在空中保持稳定的飞行姿态和航迹;② 飞行管理,主要完成飞行参数的采集、导航数据计算、故障的诊断、应急情况的处理、无线通信、外部任务设备的管理和控制等工作[10]。飞控软件结构如图3所示。

图3 飞控软件结构

2 飞控软件在线升级方案设计

2.1 基于多次加载方案的嵌入式软件在线升级原理

以TI DSP C6713B为例,其加载方式有主机(Host)加载、仿真(Emulation)加载和EMIF加载3种。主机加载是由外部主机通过HPI初始化CPU的存储空间,在完成初始化工作之后通过HPI中断结束导引过程,CPU退出复位状态[11]。仿真加载是通过仿真器来设置DSPINT,使CPU在0地址处执行命令。EMIF加载是通过EDMA控制器将外部ROM中的一段固定大小的代码(通常为Bootloader)复制到内部RAM中加载完成后CPU开始从0地址执行。

由于驻留软件和飞控软件均存储在外部ROM中,通过各自的Bootloader实现自启动,因此,本文在EMIF加载方式的基础上,扩展形成多次加载方式。加载启动过程如图4所示。

图4 基于多次加载的飞控软件启动过程

具体步骤如下:① 使用DSP烧写软件将DSP驻留程序烧写进FLASH,待DSP下电重启复位后,DSP自动搬移FLASH始端的驻留软件的Bootloader至RAM中,然后Bootloader再将存储在FLASH中的驻留程序搬移至DSP内部RAM中运行,完成驻留软件的启动;② 驻留软件等待用户上传飞控软件,若在45 s内收到从地面站发来的飞控软件代码则驻留程序启动烧录功能,将上传的飞控软件烧写进FLASH中,若没有收到则自动跳转至指定的飞控软件的Bootloader起始地址执行;③ 通过飞控软件Bootloader启动飞控软件。若没有飞控程序可以执行则CPU进入IDLE状态。若系统已有飞控程序且无需上传新的飞控程序时可通过PC端发送启动飞控程序的指令直接运行飞控程序不在需要等待45 s。

2.2 存储空间分配

多次加载方案要求在FLASH中存储2个软件,分别为DSP驻留软件和飞控软件。2个软件烧录的方式如下:首先通过仿真器将驻留程序烧写至FLASH地址0x90000000处,给驻留软件预留的空间为256 K即对应FLASH地址为0x90000000-0x9003FFFF;通过驻留软件烧录的飞控软件代码储存在FLASH中的地址为0x90040000-0x901DFFFF。程序在加载时先将驻留程序搬移CPU零地址处运行,驻留程序的BOOT段位于RAM的零地址,中断向量表位于0x00000400处,飞控软件的BOOT段位于0x00005000处,中断向量表位于0x00005400处。故飞控软件向DSP搬移的起始地址为0x00005400。具体FLASH与片内RAM的使用情况如图5和图6所示。

图5 FLASH存储空间使用情况

图6 DSP片内RAM使用情况

2.3 DSP在线升级串口设计

飞控软件在线升级串口设计包括物理链路层和通讯协议层两方面内容。

本文的飞控系统通过RS-422接口与地面站进行通讯。具体通信方式采用全双工模式,传输波特率为921.6 kbps,帧长度为210 bytes,发送端和接收端之间采用光耦隔离。

在设计通信协议时,考虑到数据可能受到干扰,必须采取相应的措施保证驻留软件接收和烧录飞控程序代码时的可靠性。

干扰大致可分为2类:

① 通信传输过程中的干扰;

② 飞控计算机可能受到的电磁干扰。

由干扰产生的错误类型则大致分为3类:

① 随机错误,即代表传输信息的二进制码发生“0”“1”相互反转,且概率相等,错误位置随机,错误发生事件相互独立;

② 突发错误,特点为错误的二进制码之间具有较强的关联性,一旦突发,若干位将一起出错,存储器错误具有该特征;

③ 单向错误,即每个二进制码元发生“0”“1”反转的概率相等,但这2种错误不在同一组数据中同时发生[12]。

为确保地面站与飞控系统之间的通信可靠性,本文设计了双重校验机制,具体如下:

① 上传飞控程序由地面站单向发起。地面站每发送一个帧到飞控系统后等待飞控系统反馈数据并进行比对,校验正确后地面站再发送下一帧数据。如果数据有误则重发该帧。

② 飞控系统在确认数据帧接收正确后开始数据帧烧写,并在完成每一帧的烧写之后,进行回读和比对,然后向地面站反馈数据烧写状态。一旦状态异常则地面站重发该帧数据,飞控系统再次进行接收和烧写。

2.4 DSP驻留软件详细设计

驻留软件的任务是:从地面站接收命令以及飞控代码文件;对接收到的代码进行正确性校验,完成飞控代码的烧录;控制CPU向飞控软件跳转。

DSP驻留软件设计的难点在于:① 完成大规模数据稳定传输的同时,保证FLASH烧写的正确性;② 实现从驻留软件到飞控软件的跳转并实现飞控软件的自启动,跳转方式包括计时自动跳转与授命跳转;③ 尽量压缩程序体积,给飞控软件留有更大的空间。

如前所述,驻留软件采用了与飞控软件分离设计的方案,其具体实现为:在驻留程序启动后首先判断是否收到烧写用户程序的指令。收到指令后驻留程序进入烧写模式,首先将收到的数据进行校验并向地面站报文;其次为了提高传输效率在烧写第一帧数据前先将FLASH扇区进行擦除以方便后续帧的烧写;最后将接收到的校验正确的每一帧数据烧写进FLASH中,并从FLASH中回读与接收到的原始数据进行校验,并向地面站报文。驻留软件根据通信协议中的结束帧来判断用户程序上传结束。2次校验均根据通信协议建立数据帧错误重发机制,最多允许一帧数据连续错误3次。飞控软件在线升级流程图如图7所示。

跳转模块用于实现从驻留软件向飞控软件跳转。常见的实现跳转功能的方式有2种:① 通过设计外部开关量来实现远程加载模式和正常运行模式的切换[2];② 通过设计软件时间窗来实现程序的跳转。方案1由于存在占用有限I/O资源以及在应用中可能出现误操作等风险本文将采用方案2中的软件时间窗跳转方案。该功能的具体实现方案为:等待45 s,若在45 s内收到执行飞控软件命令则直接跳过剩余时间直接运行飞控软件,或是在45 s内收到从地面站传来的飞控软件则执行上传功能;如果在45 s内没有收到任何指令,则运行飞控软件。运行程序时将飞控软件的Bootloader搬入DSP并将CPU运行指针指向用户Bootloader程序搬入后的首地址。软件实现时使用了C语言和汇编语言的混合编程。

图7 飞控软件在线升级流程

2.5 地面站软件设计

地面站软件负责对整个飞控系统的硬、软件进行检测及升级维护。其中,升级维护模块负责飞控软件的在线升级,其主要功能包括串口配置、与目标机C6713驻留软件进行指令和数据传输等。

在进行飞控软件在线升级时,将生成好的十六进制形式的飞控软件代码逐帧发送给DSP驻留软件,并接收传回的帧校验信息,在必要时进行帧重发。升级完成后,飞控系统下电即可完成软件升级过程。

由于驻留软件启动后存在45 s的升级等待时间窗,地面站可通过指令启动飞控跳转,从而提前使DSP向飞控软件跳转。

3 试验验证

在实际中,利用不同批次的飞控计算机产品进行了多次飞控软件上传和烧写试验,以验证本文方法的可行性和可靠性。试验用飞控计算机主板如图8所示。

通过RS-422串口上传飞控软件过程如图9所示,其中绿线为飞控代码帧。总的飞控代码体积为 210 KB左右,在线烧写耗时为170±5 s。在实验过程中,地面站软件偶尔出现回传数据校验出错的提示,经过重发再校验后纠正了错误;而烧写过程全部成功,没有出现过错误。试验证明双重校验机制提高了飞控软件通过串口在线上传的成功率,并通过数据接收成功和数据烧录正确2个提示增强操作人员的信心。

图8 试验用飞控板

图9 飞控软件代码上传时的数据帧(最下方的波形)

在完成飞控软件升级后,系统即可断电重启,在等待时间窗内,DSP收到从地面站发来的启动用户软件指令之后,便可跳转并启动飞控软件。通过CCS开发环境中的时钟统计功能,可以得到飞控软件跳转及启动耗时380±3 ms。

4 结束语

本文针对DSP+FPGA嵌入式系统的程序在线升级问题,设计了一种通过RS-422串行接口的上传和烧录方案。在系统上电后的时间窗内,驻留软件可从串口接收地面站上传的飞控软件代码,并在烧写成功后利用多次加载方式实现飞控软件的跳转和启动。这种方案避免了通过拆机方式进行程序升级的困难,降低了系统的维护成本,对飞控系统开发及其他嵌入式应用系统的设计具有一定参考价值。

[1] 古新宇,李宗伯.基于双DSP架构的微小型无人机飞控系统[J].兵工自动化2010,28(8):79-85.

[2] 许少尉,刘 硕,景德胜.基于TMS320C6713B的远程软件加载设计与实现[J].航空计算技术,2013,43(4):122-128.

[3] 李声飞.基于串口通信的DSP程序动态加载技术[J].电讯技术,2011,51(6):121-124.

[4] 刘 宇,刘治斌,朱秀林.基于PCI总线的DSP系统应用程序的更新[J].现代电子技术,2013,36(6):113-117.

[5] 王 敏,黄战华,孙秋实.DSP系统程序远程更新的研究与实现[J].计算机工程与应用,2012,48(8):109-111.

[6] 吴海燕,张晓玲.一种基于TMS320C6000系列芯片的多DSP 程序动态加载方案[J].电子元器件应用,2008(12):17-19.

[7] 龙小民,王 维.一种基于DSP的二次加载程序方法[J].数据采集与处理,2012,27(S2):393-395.

[8] 黄 康.TMS320C641X系列DSP引导方法研究[J].现代电子技术,2010(21):207-209.

[9] 龚松显,王光辉,陈 勇.DSP在线烧写程序的可移植性设计[J].单片机与嵌入式系统应用,2013(8):29-31.

[10] HE Qing-hua,YANG Min.Design of a Small UAV Flight Control System Based on DSP[J].2008,36(1):254-257.

[11] TI.TMS3206713/6713BFloating Point Digital Signal Processors[M].USA:Texas Instrument,2004.

[12] 何国伟,王 纬.软件可靠性[M].北京:国防工业出版,1998.

[13] WOLFW.Computers as Components: Principles of Embedded Computing System Design(第2版)[M].北京:机械工业出版社,2009.

[14] 张雄伟,曹铁勇.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2001.

[15] 任丽香.TMS320C6000系列DSPs芯片的原理与应用[M].北京:电子工业出版社,2000.

黄彦勃 男,(1991—),硕士研究生。主要研究方向:飞行器制导与控制。

鲁兴举 男,(1978—),博士,讲师。主要研究方向:飞行器制导与控制。

An Online Upgrade Method of Embedded Flight Control Software Based on Multiple Loading Design

HUANG Yan-bo,LU Xing-ju,GUO Hong-wu

(CollegeofMechatronicEngineeringandAutomation,NationalUniversityofDefenseTechnology,ChangshaHu’nan410073,China)

The online upgrade is always needed for embedded control software in the process of using and maintaining a DSP-core flight control system.One way of software upgrade is realized by Joint Test Action Group(JTAG) interface,but this method has great inconvenience after flight equipment assembled.This paper studies an online upgrade method for flight control software through serial interface.Based on DSP’s multiple loading design and double checking mechanism,the code is burned and self-started remotely and reliably on TMS320C6713B DSP system,and the availability of this method is proved.

DSP;flight control software;serial interface;multiple loading design;online upgrade

10.3969/j.issn.1003-3106.2016.12.18

黄彦勃,鲁兴举,郭鸿武.基于多次加载方案的嵌入式飞控软件在线升级方法[J].无线电工程,2016,46(12):73-77.

2016-08-29

国家自然科学基金资助项目(61403407)。

TN391.4

A

1003-3106(2016)12-0073-05

猜你喜欢

飞控控系统校验
使用Excel朗读功能校验工作表中的数据
关于DALI灯控系统的问答精选
联调联试中列控系统兼容性问题探讨
民用飞机飞控通电自检测安全性研究
炉温均匀性校验在铸锻企业的应用
02 飞控技术与机场安保引关注
飞控系统故障告警实时监控软件的设计与实现
电子式互感器校验方式研究
一种新型列控系统方案探讨
民用飞机飞控驾驶舱控制系统偏航轴传动机构精度研究分析