摘要:该文针对基于DSP的野外及外场数字设备更新升级提出了一种基于多通信方式的DSP程序在线编程的新方法.该方法同时具备有线.无线多种通信能力,可以根据具体环境灵活选择.使用可扩展通信协议栈,支持对通信接口和通信协议的扩展.程序更新基于DSP/BIOS实时操作系统,根据预设算法,更新指定存储区的可执行程序,实现对原程序替换和升级.
实践表明,把该方法应用于系统的目标程序在线编程,程序功能稳定可靠,使DSP程序的更新脱离了仿真器,满足了现场更新的时效性.可扩展性和便携性要求.
现代商业及工业嵌入式电力电子产品出于美观.安全和可维护性方面的考虑,对系统维护的时效性和便携性要求越来越高.基于DSP开发的野外及外场数字设备程序维护困难,已安装的设备若用户提出新需求,需要对内部程序进行脱机更新.
针对DSP在线编程问题,张谦等提出的基于硬件标志位控制的方法,编写了文件转换工具,实现了DSP在两套程序之间的选择加载,避免了对FLASH的反复烧写;王宏义等提出了基于PCI总线使用单个FLASH存储器同时实现DSP引导加载和FPGA配置的方法;刘铁提出的基于CAN总线程序在线升级的方法,使DSP代码的更新可以脱离仿真器,大大提高了DSP系统程序升级的效率;沈军等提出了基于RS422串行通信远程更新DSP程序的方法,在系统不掉电的情况下实现了DSP程序的远程更新与自启动;陶维青等提出了基于TMS320F2812 DSP的软件更新方法,但通过串口实现的4 kbyte/min的更新速度显然不能满足野外系统的要求.以上方法都具有一定的局限性:通信方式单一,不能满足野外数字设备复杂性及多变性的要求.
针对上述问题,本文提出了一种基于多通信方式的DSP程序更新方法,介绍了方案的实现要点,本方法已经成功应用于某型数字测风经纬仪系统中.
1 实现原理系统的MCU选用的是TI公司的TMS320C6747(以下简称C6747),C6747是业界功耗的浮点DSP,C6747自带USB.串El.网络和CAN总线等接口,无需外扩芯片.次更新程序时,需要使用仿真器将目标程序更新至FLASH分区l中,此时系统即可运行.系统需要更新程序时,系统首先响应中断并读取多通信模块信息,然后等待用户按键选择需要更新的程序,接着从相应通信设备中读入目标程序及其大小数值,放到内部RAM缓存中,然后系统判断当前程序的入口地址,如为FLASH分区l,则把目标程序更新至FLASH分区2中,并把程序的人口地址设置为FLASH分区2;反之则对FALSH分区1采取相同操作.系统通信设备的信息读取由多通信模块完成.这样就实现了程序更新并且保存了更新前的原程序.系统程序在线编程的软件流程图如图l所示.
2多通信方式模块设计图1 系统程序在线编程的软件流程图目前工业界通信协议具有复杂性和多样性的特点,传统的多种通信功能的实现仅仅致力于通信方式接口的开发与实现,可移植性差,并且远远不能满足复杂环境下的需求.本文多通信模块的设计思想:
将数据收发的过程与数据内部表示的信息分离.数据收发由抽象的收发器接口表示,在硬件中具体实现,比如基本TCP/IP.无线网络接口.RS232,485接口等.协议也具备可扩展性.协议的可扩展性由专门的协议管理层实现,管理层具有协议注册和匹配功能.协议层由一组平等的协议集合构成.当需要添加新协议时,在协议层实现协议并向协议管理层注册.
基于模块化设计方法,提出了可扩展多通信方式模块如图2所示.本模块主要由五个部分组成,协议层.协议管理层.数据收发层.传输层和接口层,同时具备有线.无线多种通信能力,可以根据具体环境灵活选择.使用可扩展通信协议栈,支持对通信接口和通信协议的扩展.下面分别对各个层进行介绍.
接口层和传输层主要对应于硬件设备,每种接口对应于某类传输层,如RS232.RS422.RS485均属于串口传输层.数据收发层主要负责底层设备的数据接收和发送,采用数据统一收发的协议方式,可以有效地实现应用程序与底层接口驱动的隔离.协议管理层主要负责协议的匹配,并对已收到和待发送的指令帧的指令类型.目的地址和包数据帧数进行解析.协议层主要负责数据帧和应答帧的分类处理和编制.软件流程图如图3所示.
3 基于DSP/BI0S实现DSP程序更新DSP/BIOS是一个用户可剪裁的实时操作系统,主要由三部分组成:多线程实时内核.实时分析工具.芯片支持库.利用DSP/BIOS,可以方便快速的开发复杂的DSP程序.多线程实时内核调度多线程的运行,将定制的系统算法作为一个嵌入系统线程.
DSP/BIOS以模块化方式提供给用户对线程.中断.定时器.内存资源.所有外设资源的管理能力都可以根据需要剪裁.实际应用时把相应的算法作为一个线程插入DSP/BIOS的调度队列,由DSP/BIOS进行调度.本设计是基于DSP/BIOS R1′F's(The DSP/BIOS Real-Time File System)开发实现的.
3.1编译环境的搭接为了能够使用Rtfs Api程中加入环境变量,主要需要修改两部分内容:
Project.Build和Options-Compiler.修改方法参见RTFS相关文档.然后需要编写DSP/BIOS配置文件,配置文件的关键配置程序为:bios.ECM.ENABLE=1;bios.GBL.C64PLUSMARl28t0159=0x0000ffff.
3.2 A璐文件及解析CCS编译生成的木。Out需要通过AISgen软件转化为木。MS文件才能为DSP所识别,AISgen forD800K003软件在产生MS文件时需要根据需要对时钟管理器.EMIFB管理器.系统上电管理器以及引脚复用管理器进行配置,具体配置方法如图4所示.
AIS文件生成后需要对其进行解析和修改以确定上电boot后对加载程序分区定位,AIS文件是一个二进制文件,其基本架构为:4字节命令头+命令+..+结束跳转指令.对AIS文件的修改主要包含对段连接命令地址内容和跳转结束命令地址内容的修改.段连接命令的作用是段人口点的指定,其形式为:0×58535901+段连接地址+段大小+段数据.
在AIS文件中找到0×58535901,修改其后面的段连接地址为程序在FLASH中的存放地址.跳转结束命令的作用是AIS文件结束的标志并跳转到用户应用程序(此处为已更新程序的地址),其形式为:0×58535906+跳转地址.修改其跳转地址为已更新程序的存放地址.至此AIS文件修改完毕.
3.3 EDMA方式实现程序更新本设计程序更新方式在程序更新过程中采用双缓冲方式处理数据,在对程序数据进行搬移时,由EDMA方式控制时序,不占用CPU资源,实现无开销地交换内外存数据,从而减轻了CPU的运行负担,增加了程序的并行性,从而实现程序数据传输和FLASH写入处理的同步进行,提高效率并且使系统可以处理流水式输入的目标程序数据.其具体实现流程如下:
(1)在内存中设置双缓冲区,分别为A和B;(2)将一帧目标程序数据(大小为1 kbyte)从通信模块中搬到缓冲区A;(3)对缓冲区A中的数据进行FLASH写入的同时,将后续的一帧数据从通信模块中搬到缓冲区B;(4)将缓冲区B中的数据写入FLASH的同时,将后续的一帧数据从通信模块中搬到缓冲区A;如此循环进行,可以使数据的搬移与处理实现并行,极大地提高程序更新的执行效率.
4应用实例数字测风经纬仪系统主要由3部分组成:数字测风经纬仪.计算机计算平台和手持计算器.在使用时,气象员通过经纬仪的光学望远镜跟踪测风气球,测风经纬仪使用光电码盘自动记录时间.仰角.方位角信息,然后把测风数据传送给计算机平台或手持计算器,计算机或手持计算器便计算出各种气象通报.测风经纬仪的某些参数会随时间而改变,高空风计算模型种类繁多,每种模型计算非常复杂,需要定时标定和验证,及时修改某些参数.升级程序时,用户借助计算机终端通过CAN总线.485总线或者网络远程向经纬仪发送代码数据(需要编写上位机在线升级模块),也可以现场直接使用u盘更新程序,即可完成测风经纬仪的程序升级工作.
该程序功能稳定可靠,对几种高空风计算模型的程序更新测试结果如表1所示.
5 结论本文针对现有单通信方式程序更新的不足,提出了基于可扩展多通信方式的DSP程序在线编程方法,该方法将数据收发的过程与数据内部表示的信息分离,同时具备有线.无线多种通信能力,可以根据具体环境灵活选择,并支持对通信接口和通信协议的扩展.本文还对DSP67Zl-7可执行AIS文件进行了深入的分析,提出了EDMA方式实现程更新.实践表明,本方法具有更好的可扩展性和可维护性,使DSP在线编程脱离仿真器,能够适用于更广泛的应用场合.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。