基于CAN总线的TMS320F2812程序更新技术

2015-07-05 10:16蒋炯炜中国电子科技集团公司第58研究所江苏无锡214035
电子与封装 2015年5期
关键词:CAN总线

蒋炯炜,钱 浩,于 鹏(中国电子科技集团公司第58研究所,江苏 无锡 214035)

基于CAN总线的TMS320F2812程序更新技术

蒋炯炜,钱 浩,于 鹏
(中国电子科技集团公司第58研究所,江苏 无锡 214035)

摘 要:介绍了TI公司数字信号处理器TMS320F2812的引导方式、Flash编程方法、Flash启动流程。在此基础上提出了一种基于CAN总线的TMS320F2812程序的远程加载方案,并详细阐述了详细的实现过程。该方案摆脱了Flash编程时对JTAG接口、RS232接口的依赖,非常适用于军用领域,具有较大的实用价值。

关键词:F2812;CAN总线;远程更新;Flash编程

1 引言

TMS320F2812(以下简称F2812)是TI公司一款用于控制的高性能、多功能、高性价比的32位定点DSP[1],在控制领域得到了广泛应用。由于自动化设备大多安装在野外,给程序维护工作带来了极大困难。已安装的设备若出现程序缺陷,或者用户提出新的需求,需要对程序进行更新。传统的维护方法均是到实地取下设备,开盖后通过仿真器进行烧写维护,此方法效率低,而且在军用领域要求不拆机壳进行程序升级。由于F2812 片内自带有128 k 的Flash资源,可以用来存放程序代码,可多次擦除和写入数据,并且片内带有电荷泵,使其可在正常工作电压下对Flash进行逐段擦写,为程序的远程更新提供了基础。

目前最常用的是RS232方式实现远程加载,但是在军用领域,RS232通信方式是很少使用的。单独为了实现远程加载增加RS232接口对主机来说是一种负担,而CAN总线广泛应用于军用领域并且F2812自身就带有一路CAN总线接口。本文提出一种基于CAN总线的F2812程序远程升级技术。

2 F2812引导方式及Flash编程简介

2.1F2812引导方式

F2812上电后有6种不同的启动模式,主要通过GPIOF端口的4个引脚上电复位过程中所处的状态确定选择哪种方式启动,引导方式如表1所示。

表1 F2812引导方式

2.2F2812的Flash编程

F2812的Flash编程过程及方法如图1所示,除了使用仿真器下载Flash程序和数据外,还可以通过SCI、SPI或GPIOB下载,除了JTAG外,其他下载方式都是经过boot loader完成。所有过程Flash的算法都需要搬移至片内RAM中,然后再实现对Flash的编程工作。

图1 F2812 Flash编程

3 基于CAN总线的F2812程序更新方案

正如2.2节中所述,只需将Flash的编程算法通过CAN总线搬移至片内RAM中,再将从CAN总线上接收到的数据传送给编程算法,算法执行后便可实现Flash的更新。因此我们需要重新编写自己的boot loader,并将boot代码固化在片内非易失性空间即可。TI的boot loader是固化在ROM中,我们无法更改,因此只能固化在Flash中,在启动时从Flash启动。

3.1启动更新Flash程序方式

将烧写Flash的启动代码放入F2812自身Flash空间后,可以通过两种方式启动远程更新。

3.1.1软件启动

通过命令字来启动Flash烧写命令。方案优点:不涉及任何硬件外设及状态修改,烧写指令可根据用户需求协商而定。方案缺点:Flash烧写代码需要融入用户代码,程序执行过程中一直在进行是否需要执行Flash烧写的判断。

3.1.2硬件启动

系统上电时,通过外围硬件接口信号变化启动该段代码。方案优点:虽然Flash烧写代码段占据了一部分Flash空间,但是在用户代码程序执行过程中,该段代码不会执行。方案缺点:需要在硬件上有改动,执行Flash烧写前后需要对硬件信号进行修改。

3.2Flash程序更新整体结构

在设备不开盖的情况下,显然应该选择软件启动方案,虽然启动代码会占据一小部分Flash空间。如图2所示,F2812自身就带有一路CAN通讯接口,上位机与下位机之间仅通过一个协议转换器就能进行程序的更新。

图2 基于CAN总线的F2812程序更新整体结构

4 F2812 程序更新软硬件实现

4.1硬件实现

CAN-USB转换器使用的是蓝马电子A1+型产品,该模块体积小、价格便宜、使用方便,仅需2根线(CAN_H, CAN_H)就完成了与F2812的硬件连接。根据该模块提供的函数接口,开发了上位机软件,实现将CCS编译生成的.out文件转换成HEX格式通过CAN总线逐一发送给F2812。是否进行远程程序更新只需上位机软件发送指令即可。

4.2软件实现

软件上最核心的是固化到Flash中去的启动代码,为了使用方便可将启动代码生成库文件,CCS工程中调用即可。该代码的主要功能是在DSP上电后与上位机建立CAN总线通讯并设置CAN中断子程序。F2812上电执行完启动代码后自动跳转到用户程序入口,执行当前的用户程序。若在执行用户程序过程中接收到上位机发送的更新程序指令,则进入预先设置好的CAN总线中断程序从上位机接收数据烧写入Flash中(需要调用TI提供的库函数Flash281x_ API[2]),完成程序更新。以上即为整个boot loader过程。其流程图如图3所示。

图3 boot loader流程图

需要注意的是,Boot loader程序的入口地址位于0x3F7FF6处,用户代码程序入口位于0x3f5ff6处。用户代码程序入口地址可根据用户需要随意调整,但是Boot loader程序入口地址不能随意调整,必须是0x3f7ff6,这与F2812的Flash启动操作流程相关。

图4所示为F2812上电后详细启动过程。上电后F2812 Flash的启动遵循从1到6这6个步骤。可以发现当使用自己编写的boot loader时,第4步操作将不再是跳至_c_int00处,而是先跳转至用户启动代码处,执行用户boot loader代码后再跳转_c_int00处。

图4 F2812基于CAN总线的Flash启动流程

从上述可知,用户需要使用CAN总线更新程序时,每个工程中都必须调用自己编写的启动代码(库文件),这将占据一个sector段,对用户代码产生一定的影响。整个CAN总线更新Flash的算法库将占据sectorA段,将用户可使用的Flash大小进行压缩,只有120 k,适用于用户代码不超过120 k的系统。

4.3实际使用测试

如图5所示为基于CAN总线的Flash程序更新过程,操作简单,只需选择编译生成的.out文件,点击更新程序即可。采用了分块更新方式,具体更新状态也可从上位机上反映出来。

图5 基于CAN总线的Flash更新测试过程

5 结论

本文根据用户实际需求,提出了一种基于CAN总线的更新F2812 Flash程序的方法,并阐述了软件设计开发的流程,实际测试成功,对其他类似系统的程序远程加载具有借鉴意义。

参考文献:

[1] 顾卫钢. 手把手教你学DSP——基于TMS320X281x [M]. 北京:北京航空航天大学出版社,2008.

[1] TI. TMS320F281x Flash Programming API Revision Change [EB/OL]. www.ti.com.cn, 2005.

A Technology of Flash Programming to TMS320F2812 Based on CAN Interface

JIANG Jiongwei, QIAN Hao, YU Peng
(China Electronics Technology Group Corporation No.58 Research Institute, Wuxi 214035, China)

Abstract:Boot mode and flash programming method of digital signal processor TMS320F2812 which produced by TI were introduced in this paper, as well as start flow of flash. Based on the description, a method of long distance flash programming to TMS320F2812 based on CAN interface was proposed, the execution process was also expounded. The new programming method through CAN communication interface instead of JTAG and RS232 that is very suitable for the army used area and has great value in practice.

Key words:F2812; CAN communication interface; long distance programming; flash programming

中图分类号:TN402

文献标识码:A

文章编号:1681-1070(2015)05-0021-03

收稿日期:2014-12-18

作者简介:

蒋炯伟(1986—),男,硕士,现在中国电子科技集团公司第58研究所工作,研究方向为DSP芯片的应用与测试。

猜你喜欢
CAN总线
论网络通信技术
基于嵌入式的汽车辅助制动系统研究
CAN总线通信技术在电梯监控系统中的应用
基于CANoe的J1939协议在ECU通信中的应用
利用MC9S12(X)单片机构建CAN总线网络的研究
基于CAN总线的智能微喷灌监控系统中下位机的硬件电路组成与设计
基于CAN总线的变电站通讯网络设计
一种航空交换机中CAN总线的自动化测试方法