基于CCS5.5的TMS320C6000程序Flash上电自举设计及三种固化方法对比

2017-07-10 07:21郇钲汪庆武赵锦君王宇
电脑知识与技术 2017年14期
关键词:用户程序存储器启动

郇钲+汪庆武+赵锦君+王宇

摘要:该文针对TMS320C6000系列支持的启动方式之一——EMIF boot启动,固化程序在片外Flash。解决了TMS320C6713B片内无非易失存储器,上电需从外部加载程序并启动的问题。介绍了基于CCS5.5平台,Bootload启动函数和Flash烧写程序的设计编制。整理总结了三种烧写Flash的方式方法,并进行了优缺点的对比。

关键词:DSP;TMS320C6713;CCS5.5;EMIF;Flash;软件固化;引导加载

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)14-0094-03

TMS320C6713B(以下简称C6713)是11公司推出的高性能浮点运算DSP,采用超常指令字(VLIW)结构。TMS320C67 13B支持Host boot/Emulation boot/EMIF boot。EMIF作为C6713与外部存储器之间的接口,可支持与各种外部器件无缝连接。EMIF存储器映射由4个(CEO-CE3)空间组成,这4个空间彼此独立,实现不同访问控制。C67 13包含从0×00000000地址开始的256KB内部RAM,但其内部无非易失性存储器,需要外扩Flash或ROM等非易失性存储器。

CCS(Code Composer Studio)的是TI公司提供的开放的集成软件开发平台,根据安装不同的硬件接口驱动可开发不同的器件。CCS5.5集成开发环境基于Eclipse开发平台,在开发过程中能够完成对工程的配置、建立、调试、跟踪和分析,能够加速开发进程,提高工作效率,支持JTAG加密功能、提供全覆盖的DSP代码跟踪、加强了统计分析及在小窗口绘制图形的性能。目前,TI已对CCS4、CCS5和CCS6免费开放,供用户开发使用。

1 TMS320C6713B与Flash的硬件连接

以AMD公司的AM29LV160DB为例,该Flash具有2Mx8bifflMxl6bit的存储空间,16位数据总线,支持程序写、擦除和悬挂。为最快的启动程序,数据吞吐量设置为最大,将AM29LV160DB的BYTE=1,设置为16位数据宽度。

遵照TI对C6713的内置启动设定,需将支持EMIF接口的Flash挂载CE1空间。HD[4:3]=“10”设定DSP处于16bit异步外部ROM boot方式。

其硬件连接原理示意如图1所示。

在当前配置下,C6713上电或复位时,位于外部存储空间CE1的FLASH中的1KB代码通过EDMA被拷贝到片内RAM地址0处,这就是片上Boot一次引导。然而,大多数的DSP程序并不仅限于1KB代码,因此需要开发用户引导程序将没有拷贝的代码拷贝到DSP的片内RAM。此用户引导程序即称为二级Bootloader。

该二级Bootloader程序实际在运行时,是在C6713的0×0000~0×4000地址空间,从0地址开始执行。从通用化角度,每次修改后,重新烧写的用户程序,只是程序长度发生变化,因此,只要将搬运长度独立出来,那么Bootloader程序就无需其他更改。为此,将C6713的片内地址空间划分开来,如表1所示。

3 TMS320C6713B用户程序的烧写到外部Flash

目前,常用的烧写C6713方法有三种,分别是:TI公司提供的FlashBurn软件烧录法、二次下载烧录法、程序bin镜像烧录法。

3.1 FlashBurn软件烧录法

通过TI公司提供的FlashBurn软件来对Flash存储器进行烧写。将FlashBurn与CCS、HEX文件转换工具以及FBTC程序(即通过一定的编程命令序列来控制FLASH的工作方式)配合使用,可以快速地将用户数据与程序写入Flash存储器。Flash-Burn采用图形化界面,使用方便,用户只需要简单配置几个操作参数,即可实现对FLASH存储器进行擦除、烧写和查看内存内存储器进行操作。

需要注意的是,FlashBurn软件需要与CCS版本匹配才能正常使用,FlashBurn 4才支持CCS4~CCS6。虽然FlashBurn有免费版本,但是仅能对DSK开发板进行烧录。要对自己的定制电路板烧写,需购买其收费版本。

3.2两次下载烧录法

基于CCS开发环境,编译链接生成的用户程序为*out文件,该文件为COFF格式,不能在DSP的RAM中直接运行。

两次下载法的实质为在设计调试过程中用仿真器下载进DSP的RAM区的程序,已经是程序的可执行机器码(该程序需包含boot函数)。因此,可以通过再编写一个Flash烧写程序,并下载进DSP运行,将RAM中的用户程序机器码写入Flash对应的空间,特别是Boot函数烧写到Flash的前1KB空间,即可完成烧录过程。

简言之,所谓“两次下载法”就是通过仿真器对DSP进行两次加载运行来完成用户程序的烧写。其实质是将用户程序当作“数据”写人Flash。

该方法的核心搬移函数如下:

需要注意的是宏“CODE_LEN”,对应BootLoad的空间定义,该处定义了用户程序所占用的字节长度。该长度可由用户程序map文件查询计算得到。

采用该方法的优点是,在用户程序调试正常后,接着加载Flash烧录程序即可将程序固化。其中最复杂的操作也仅仅是查询下用户程序map文件计算下程序的大小,修改下宏“CODE_LEN”而已。

但是,采用该方法需要注意的是用戶程序与Flash烧写程序在内存空间分配时不能重叠,即防止Flash烧写程序在下载时,修改或覆盖已经在DSP的RAM中的程序。而且当用户程序与Flash烧写程序的总大小大于RAM空间时,该方法就无法使用了。

3.3程序bin镜像烧录法

3.3.1基于CCS5.5置快速生成bin文件

上节已经提到CCS编译出的文件为*.out文件无法直接使用,但是TI公司在CCS安装包中同时也提供了Hex6x.exe等转换工具,可将*.out可配置的转换为*.hex和*.bin文件,其中*.bin文件内容即是DSP执行的机器码。

在CCS5.5中,提供了在程序编译结束后继续执行其他操作的接口,如图2所示。

采用该方法可完全不必考虑用户程序和Flash烧录程序的空间重叠问题,也完全不必考虑RAM空间大小,只要Flash足够大可以装载用户程序即可,也完全不用查询计算用户程序的字节长度,烧录程序可自行计算并烧写到对应位置,因此,采用此种烧录方法唯一要注意的就是用户程序*.bin的文件名和所在的PC系统路径。

4结束语

本文针对TMS320C6713B的EMIF boot方式进行启动,固化程序在片外Flash。基于CCS5.5平台,设计编制Boofload启动函数和Flash烧写程序。整理总结了三种烧写Flash的方法,并进行了优缺点的对比。

猜你喜欢
用户程序存储器启动
静态随机存储器在轨自检算法
嵌入式设备远程升级方案设计
雾霾来袭 限产再次启动
安发生物启动2017
俄媒:上合组织或9月启动扩员
存储器——安格尔(墨西哥)▲
C8051F410单片机BootLoader的实现
基于Nand Flash的高速存储器结构设计
MCF52223的多用户在线编程应用设计
一种存储器容错设计方法