(航空工业太原航空仪表有限公司山西太原030006)
摘要:本文介绍了基于1394B数据总线远程更新TMS320F2812片上FLASH的方法,该方法可以推广到RS-422A,ARINC429等航空常用总线,在不更改硬件设计的情况下,从上位机下载数据即可实现软件升级,为类似产品的设计提供参考。
关键词:1394B;TMS320F2812;远程加载
1.TMS320F2812概况
TMS320F2812是美国TI公司设计生产的32位定点DSP,最高主频150MHz,片内集成128KFLASH,18KSARAM,4KBootROM等。同时集成了事件管理器EV,A/D转换模块,SCI串行通信接口,SPI串行外设接口等功能模块。
2.1394B总线概况
1394B总线是新一代飞机采用的数据总线,总线拓扑中包括CC(主控端)和RN(节点端),总线数据由STOF包同步,CC与RN之间,RN与RN之间通过数据流包进行交互,最高传输速度可达400MHz。
3.上电引导过程
TMS320F2812具有6种不同的启动模式,通过GPIOF端口的4个引脚上电复位过程中所处的状态确定启动方式。
目前普遍采用从FLASH引导的方式,具体的流程如下:
a)系统复位后跳转到0x003FFFC0地址,该地址是DSP内部的BOOT-ROM地址;
b)BOOT-ROM执行跳转指令跳转到0x003FFC00(引导代码),引导代码主要完成基本的初始化任务和引导模式的选择;
c)在FLASH引导模式下,系统直接跳转到0x003F7FF6,此处为Flash存储空间的入口地址,包含跳转到c_int00函数;
d)c_int00函数完成C环境和全局变量的初始化;
e)c_int00函数执行完毕后,调用主函数main。
4.FLASH概况
TMS320F2812片上包括128KFLASH,可以划分为A~J10个扇区,各扇区可单独擦、编程,并根据需要可以进行合并。
5.BOOT程序
BOOT程序主要实现总线加载程序接收,FLASH在线编程功能,通过JTAG或RS-232串口固化到FLASH的A扇区中,系统上电运行FLASHA中的boot程序。Boot程序通过读取NVRAM或EEPROM存储的加载指令信息,判断系统是否继续处于boot状。
其中擦除编程FLASH通过TI开发的FLASH_API函数即可实现。接收上位机传输的加载数据复用1394B总线上的数据流包,加载校验完成后将加载状态回馈上位机后,上位机再发送下一组数据;程序跳转功能通过汇编语言实现(asm“LB主程序入口地址”);软件复位功能通过内部看门狗实现。
6.CMD文件
修改.cmd文件,使其FLASHA扇区用于存放BOOT程序,修改后的.cmd文件如下所示
其中BEGIN占据FLASHJ的2个地址空间,为主程序的入口地址。
7.格式转换
CCS编译生成的.out文件需要转换为16进制.hex才可进行在线编程,使用TI自带的hex2000即可实现该操作,具体的流程如下:
a)在C:\CCStudio_v3.1\C2000\cgtools\bin文件下找到hex2000,并将其与CCS编译生成的.out文件复制到同一个文件夹下;
b)在DOS环境下运行程序以下程序,生成.hex文件
c)上位机通过1394B数据总线上的数据流包传输.hex文件的内容,系统在boot模式下即可完成程序的远程加载。
8.结论
本文主要介绍了一种基于1394B数据总线更新TMS320F2812片上FLASH的方法,该方法可以推广到RS-422A,ARINC429,1553B等航空常用总线,在不更改任何硬件设计的情况下从上位机下载数据即可实现软件升级,可以为公司类似产品的设计提供借鉴。
参考文献:
[1]苏奎峰等.TMS320x281xDSP原理及C程序开发.北京:北京航空航天大学出版社
[2]IEEE1394B-2002IEEEStandardforaHighPerformanceSerialBus