基于串口的TMS320F28335应用程序在线升级技术的应用

2015-01-13 02:04戴桂木
化工自动化及仪表 2015年3期
关键词:看门狗仿真器批处理

沈 润 张 喆 徐 琼 戴桂木

(东南大学电气工程学院,南京 210096)

TMS320F28335数字信号处理器是TI公司推出的一款浮点DSP控制器。相比以往的DSP,该器件是目前专门用于控制领域的最高性能的芯片,该器件具有精度高、成本低、功耗小、外设集成度高、数据和程序存储空间大及AD转换更精确快速等特点。很容易将系统的多种控制功能集中在一个芯片上完成,目前已广泛应用于电机控制、仪器及仪表等工业。

TMS320F28335内嵌256KB的Flash和34KB的SRAM,用于用户存放程序代码和运行数据。但对于大部分控制系统而言,需要升级和完善程序,通常Flash写入的方法有:通过编程器写入,这种方法简单快捷,但是对于贴片Flash,器件一旦焊上,不便再取下来使用编程器写入程序;在研发阶段,TMS320F28335的应用程序通常都是通过仿真器和CCS集成开发环境来下载到DSP的内部Flash单元。而利用仿真器的方式下载程序,对升级环境要求较多:计算机上必须安装专业的CCS开发环境,必须配置仿真器,并需要安装仿真器的驱动程序。需要专业技术人员才能完成,所以当需要修改程序时,往往需要技术人员到设备的现场进行操作,显然,这种方式工作量极大,费时费力,增加了设备的维护成本[1,2]。

为了解决这个问题,就需要嵌入式系统具有软件的在线升级功能。方案是使用DSP系统的外部接口,用PC机,通过RS232标准串口将升级软件转换成的二进制文件传输给DSP的外部RAM,这里选择外部RAM,因为大多数情况下,程序的数据量比较大,内部RAM空间一般不足,然后再由外部RAM烧写到内部Flash,实现DSP的在线升级。

1.1 可传输的二进制文件的生成

利用TI公司的DSP集成软件开发环境对用户程序进行编译和连接生成的是通用目标文件格式(COFF)的文件。这种格式的目标文件结构复杂,不仅包含了程序代码,还包含了头文件、符号表、段地址及初始化段入口等其他的信息,而且不能用常规方法打开为用户可读的形式[3]。COFF文件不能通过串口传输,因此必须转换成普通的bin文件。方法是使用hex2000.exe将COFF文件转化为hex文件,然后采用hex2bin.exe转换为bin文件。

TI公司提供的hex2000工具可以将COFF格式的目标文件转化成常见的16进制格式的数据流文件,包括ASCII-Hex、Intel MCS-86、Motorola-S、TI-Tagged及Tektronix等类型。hex200的使用方式有命令行方式和批处理方式:

命令行方式 hex2000 [options] filename

批处理方式 hex2000 command_filename

批处理方式可以多次使用,比较方便,本项目中使用的批处理文件内容为:

TestPrj.out -boot -order MS -sci8 -map TestPrj.map -o TestPrj.hex -I

具体命令含义如下:

-boot 转换所有段为可启动形式

-order MS 指定输出文件为大模式

-ci8 通过SCI启动,8位模式

-map 创建映射文件

-o 指定一个输出文件名

-I 指定输出文件为Intel格式

通过上面的处理可以得到TestPrj.hex的16进制文件。此时hex文件的内容就包括要烧写到Flash的代码数据,数据结构见表1,为了便于通过串口传输可以通过hex2bin得到TestPrj.bin文件。

表1 hex文件内容

hex文件内容根据批处理文件内命令的不同略有不同。

1.2 上位机软件的实现

上位机端程序首先读取数据流文件,按照数据流文件格式和DSP端程序的通信协议将数据流的段部分分解成多帧数据,并给每帧数据加上协议的报头等信息,上位机端的程序与DSP端核程序通过RS232总线方式进行通信。上位机软件用于选择升级的文件,其界面如图1所示。

图1 上位机升级界面

1.3 DSP端底层程序

针对上述串口数据流,在SCI的中断函数中将串口接收到的数据分别存放在外部RAM空间中。新代码下载到DSP的RAM后调用TI对Flash的接口函数库中的函数,将新代码烧写到指定的Flash区域中,从而实现在线升级,其程序流程如图2所示。

图2 串口接收中断流程

能否成功调用Flash_API是在线升级的关键所在,TI公司提供了专用的Flash库文件,用于在线烧写Flash。由于DSP芯片只有一个Flash区域,而Flash的结构体系限制了同一时刻Flash只能执行一个操作,同时Flash的库函数对时序的要求比较严格,这两个因素要求必须把Flash的API函数拷贝到内部RAM运行,为了提高各个部分的运行速度,把整个程序都拷贝到内部RAM运行,同时也满足了Flash API的运行环境。存储与运行空间的分布在cmd文件中有所体现,.text段放在内部RAM运行,具体代码如下:

.text: LOAD = FLASHA, PAGE = 0

RUN=RAM_L0L1L2L3,PAGE=0

LOAD_START(_text_loadstart),

RUN_START(_text_runstart),

SIZE(_text_size)

同样的方法把.bss、.cinit、.const及.econt等段都下载到Flash内,但都是从RAM区域运行。Flash API除了在RAM运行外,在调用相关函数前还需进行一些初始化,如添加库文件初始化PLL等常规操作。同时对于Flash_CPUScaleFactor和Flash API回调函数的初始化也应注意,即使不使用回调函数,也应进行初始化,防止程序陷阱。

Flash使用的库函数有:Flash_Erase,Flash_Program和Flash_Verify。为处理方便,定义了结构体变量供函数使用,定义的结构体struct HEADER{ Uint32 BlockSize; Uint32 DestAddr; } BlockHeader,升级函数通过BlockHeader结构体,将升级程序写进Flash内。

1.4 DSP的软件复位

升级程序烧写完成以后,利用TMS320F28335自带的软件看门狗实现软件复位重启,TMS320F28335的看门狗框图(WDRST方式)如图3所示。

TMS320F28335的看门狗有两种方式:WDINT的中断唤醒方式和WDRST方式,可以在SCSR寄存器中选定其中一种[4]。这里是要求系统复位重启,而WDINT是实时监控系统的,并不能按要求实现软件复位,所以需要WDRST。复位模式下,当看门狗计数器达到最大计数值时,WDRST信号将会持续拉低XRS引脚512个信号周期,从而使得控制器复位[4]。

图3 TMS320F28335的看门狗框图(WDRST方式)

2 实验效果

用笔者提供的方法生成bin文件,使用编写的上位机软件,通过串口向DSP烧写更新程序,升级成功界面如图4所示。

图4 升级实验效果

经实验验证,通信稳定,升级效果较好。

3 结束语

介绍了基于串口通信的DSP程序升级方法,产品安装到现场后,程序的升级和维护可以通过串口方式来完成,简单明了的升级界面给用户良好的使用体验,给产品的升级和维护带来了极大的方便,提高了系统可维护性、可扩展性和灵活度,具有较好的使用价值,在其他系列的DSP上也有很强的通用性。对于不便到达现场的设备,如果加上GPRS模块或者网络接口可以实现远程升级,更加提高了工作效率,给维护升级带来极大便利。

[1] 吴小朦,李正宇,周进松.通过RS232串口实现DSP并行FLASH程序升级[J].通信技术,2012,45(1):141~143.

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

[3] 苗军,倪奇志.COFF文件分析提取器的实现及其应用[J].现代电子技术,2009,32(2):42~44.

[4] 苏奎峰,吕强,常天庆,等.TMS320C281x原理及C程序开发[M].北京:北京航空航天大学出版社,2008.

猜你喜欢
看门狗仿真器批处理
一种嵌入式计算机系统的看门狗设计
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
AI仿真器将大大提高科学领域的仿真模拟速度
把他叫醒
基于多用户无线仿真器系统的研究
PyroBatchFTP
借助批处理 让Cortana变聪明
分析利用仿真器(RTDS)测试小电流接地选线装置的可行性
把它叫醒
把它叫醒