《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > DSP系统的CAN总线远程升级方法
DSP系统的CAN总线远程升级方法
2016年微型机与应用第13期
刘瑞
(中国电子科技集团公司第五十四研究所,河北 石家庄050081)
摘要: 针对通过JTAG接口在外场升级DSP困难的问题,研究了一套基于CAN总线的远程升级方法。首先对DSP芯片TMS320F28335的硬件资源和启动过程进行了简要介绍和分析,接着说明了该方法的基本原理并提出了具体实现过程,最后通过工程证明该方法简便可靠,并对前景进行了展望。
Abstract:
Key words :

  刘瑞

  (中国电子科技集团公司第五十四研究所,河北 石家庄050081)

  摘要:针对通过JTAG接口在外场升级DSP困难的问题,研究了一套基于CAN总线远程升级方法。首先对DSP芯片TMS320F28335的硬件资源和启动过程进行了简要介绍和分析,接着说明了该方法的基本原理并提出了具体实现过程,最后通过工程证明该方法简便可靠,并对前景进行了展望。

  关键词:DSP;TMS320F28335;CAN总线;远程升级

0引言

  数字信号处理器(Digital Signal Processor,DSP)是一种在数字信号处理技术基础上发展起来的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。美国德州仪器公司(Texas Instruments,TI)是目前世界上最大的DSP芯片供应商,其产品被广泛应用于工业控制、移动通信、军事安全等领域。近年来随着电子技术的发展和用户需求的提升,对已投入使用的DSP设备的升级越来越频繁,传统的升级方法是取下设备通过JTAG仿真器来在线更新程序[1]。该方式简单方便,但当DSP安装于诸如密封、远程、高空等难以拆卸的设备中时,就十分不便,因此开发高效便捷的远程升级技术迫在眉睫。鉴于伺服系统大多使用CAN总线通信,本文研发了一套基于CAN总线的远程升级系统,并成功应用于基于TMS320F28335的伺服控制系统中。

1TMS320F28335简介及其启动过程

  TMS320F28335是TI公司推出的一款具有强大的控制和信号处理能力的32位浮点型信号处理器,其主频高达150 MHz,片上集成了256 KB的Flash存储器,34 KB的SARAM,8 KB的Boot ROM,1 KB的OTP ROM以及CAN接口、串口、并口等多种先进的外设接口[2]。

  在进行系统设计之前,首先要了解TMS320F28335上电复位后的运行过程。该款DSP在出厂前就由厂家固化了一段程序,当系统上电复位后,固化程序会从中断向量表中读取复位中断的中断向量0x3FFFC0,并跳转到该地址处开始执行。此处为厂家在Boot ROM中的固化程序,其作用主要是完成对芯片的初始化,并调用模式选择函数SelectBootMode,该函数通过读取固定GPIO管脚的逻辑电平来确定引导类型,默认选择类型为Jump to Flash,即片上Flash引导模式。程序随后转向片上Flash中的0x33FFF6处开始执行,用户需要将编写好的程序烧写在0x33FFF6起始地址处,如图1所示[3]。

 

001.jpg

2远程升级基本原理

  基于CAN总线的远程升级方法主要涉及三个程序,分别是底层程序、上位机程序和应用程序。底层程序和上位机程序是固定不变的,是远程升级系统的组成部分,应用程序是DSP使用者编写的用以完成特定功能的代码。远程升级的实质是通过“程序”来烧写“程序”,即使用底层程序来烧写应用程序。相比其他诸多远程升级系统,该方法的好处在于升级过程中不需要改变DSP的启动方式,直接采用默认的片上Flash启动方式即可。

  底层程序是指运行于DSP指定空间、对编程用户保护的、不允许被修改或擦除的一段代码。其主要作用有以下三个方面:(1)对DSP的工作环境和CAN接口进行基本的初始化;(2)与上位机通信,接收上位机发来的待升级应用程序和程序存储地址等信息,并将程序写入指定区域;(3)升级完成后,从底层程序跳转到用户程序。

  上位机程序的主要作用是对编译完成的.out文件进行格式转换、信息提取和打包发送。由TI自带的开发工具CCS编译完成的目标代码在DSP中并不是从起始地址开始连续分布的,而是分成若干个大小不同的代码块交叉分布于程序和数据空间,且CCS产生的.out文件的组织形式是一种对象文件格式,不能直接用于Flash烧写,因此上位机程序首先需要对编译完成的.out文件进行格式转换和信息提取。这就需要将其转换成含有块地址、块容量和块内容等信息的.hex文件,并对每一块的信息进行提取,按照协议打包组帧最后通过CAN总线传输。

3具体实现方法

  3.1上位机程序

  为了获得代码在Flash中的存储结构等信息,上位机程序首先对编译完成的.out文件进行格式转换和信息提取,对于C2000系列DSP,TI公司提供了文件格式转换工具hex2000.exe可将.out文件转换为.hex文件,具体方法为:创建MSDOS型批处理文件transhex.cmd,内容为:

  appication.out// appication.out为编译完成的.out文件

  -memwidth16//16位宽存储器

  -datawidth32//DSP字长32位

  -boot

  -sci8

  -o appication.hex//生成名为appication的.hex文件

  将批处理文件transhex.cmd和转换工具hex2000.exe以及appication.out拷贝到同一目录下,在MSDOS命令行中将路径指定到该目录,输入hex2000.exe transhex.cmd即可自动生成相应的appication.hex文件,该文件符合bootloader数据流格式。其中第1、2个字节为关键字,表示该数据流为8 bit或16 bit宽,接着的16个字节为保留位,然后接着的4个字节包含22 bit的程序入口地址,然后为每块程序的尺寸,在Flash中存储的起始地址以及相应的数据,具体结构如表1所示[4]。按照上述固定格式,通过对表内容的解析就可以获得应用程序在Flash中的存储结构。

003.jpg

  在上位机程序中点击“选择文件”来读入该文件,程序会自动根据表1的格式对其内容进行分析并完成信息提取,做好向下位机传输的准备,并将提取结果显示在右侧信息栏中,如图2所示。该示例应用程序由6块组成,列出了每块的起始地址和容量大小等信息,最后第7块的全零信息仅表示结尾,没有实际内容。

 

002.jpg

  3.2底层程序

  底层程序的作用是将上位机发送的应用程序数据烧写至Flash的指定区域,涉及到应用程序的定位以及跳转等诸多问题,是整个系统的重点。由于系统是Flash启动,DSP复位后固定跳转到0x33FFF6处开始执行,故底层程序必须预先烧写到此处。底层程序在系统上电复位后首先运行,并在规定时间内通过接收上位机发来的固定帧判断上位机程序是否启动,如果是则等待上位机发送的待升级应用程序代码,否则跳转到已有应用程序处执行。该过程采用绝对地址跳转,主要代码如下:

  #define Jumpgxcx(void(*)(void))0x337FF6//定义应用程序的起始地址

  If(guc_updata ==’1’)

  {main();}//如果收到升级指令则跳转到底层程序主函数

  Else {(*Jumpgxcx)();}//否则跳转到现有应用程序处执行

  底层程序收到升级指令后首先将Flash存储器上的旧应用程序删除,并将收到的代码缓存到片上RAM中,由于片上RAM容量有限,一次缓存的容量设定为2 048 B,因此上位机会将代码按照2 048 B打包,每发送2 048 B的应用程序代码后就发送一帧烧写指令,DSP调用Flash_API函数缓存代码写入指定Flash区域,完成一次烧写后,底层程序会向上位机程序发送烧写完成信息,随后上位机开始发送下一包数据,循环此过程直至全部发送烧写完毕,然后跳转到新程序入口处开始执行。流程图如图3所示。

004.jpg

4结束语

  经过实测,升级约40 KB的应用程序用时约3 min。速度虽然较JTAG接口慢一些,但是免去了拆除设备的麻烦,大大缩短了总体工作时间,提高了工作效率。目前基于CAN总线的远程升级系统已在工程中成功应用,给工程安装调试人员的现场升级工作带来了极大的方便。随着需求的增多,可以扩展出串口、网口等多种外围接口的升级方式,也可以将待升级硬件由DSP系统扩展为单片机或ARM等多种可编程器件。

参考文献

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

  [2] Texas Instruments.TMS320F28335 digital signal controllers data manual[S].2007.

  [3] 杨宣兵,陈明,彭义.基于TMS320F28335的程序从FLASH到RAM的移植与运行[J].湖南理工学院学报(自然科学版),2011,24(4):3335.

  [4] 汪晶晶,苏建徽,孙佩石.基于串口通信的DSP应用程序在线升级方法[J].微型机与应用,2013,32(14):1517.


此内容为AET网站原创,未经授权禁止转载。