TMS320VC55x系列DSP在线烧写方法研究

发布时间:2010-10-10 21:16    发布者:eetech
关键词: dsp , TMS320VC55x , 烧写 , 在线
1 引言

随着数字信号处理技术的快速发展,DSP越来越广泛地应用于各种数字信号处理系统中。由于TMS320VC55x系列DSP的内部存储器没有可供用户使用的Flash,而最终开发的系统要想脱离仿真器运行。必须将程序代码存储在非易失性存储器中,所以要对DSP外接存储器。Flash存储器以其大容量和可在线编程等特点已成为DSP系统的一个基本配置。如何将程序烧写入Flash,并在上电时加载到DSP内部的RAM,是Flash在DSP系统中应用的两个基本技术问题。

以基于TI公司的TMS320VC5502和SST公司的SST39VF200开发的系统为背景,详细介绍了系统引导相关的硬件设计,烧写软件设计以及自举引导等实现方法。

2 TMS320VC5502的自举引导

2.1 TMS320VC5502的存储区以及Bootloader

TMS320VC5502的存储区是统一分配地址,即对程序和数据的访问在相同的物理空间。TMS320VC5502的存储区共分为4个区,即CE0,CEl,CE2,CE3,其字节地址分别为000000h-3FFFFFh,400000h~7FFFFFh,800000h~BFFFFFh.C00000h"FFFFFFh。片内存储器共48 K字节,可分为32 K的16位字的RAM和16 K的16位字的ROM,片内RAM的字节地址为000000h~00FFFFh,位于CEl区;片内ROM的字节地址为FF8000h~FFFF00h。

片内ROM从FF8000h开始的区域包含Bootloader,该程序在系统上电或复位后可以将用户代码自动搬移到片内RAM运行。

2.2 自举加载模式选择

TMS320VC5502的引导模式选择是通过3个模式选择引脚BOOTM[0:2]配置完成的。BOOTM[0:2]引脚分别与GPl00,GPl01,GPl02相连。自举加载模式选择如表1所示。



TMS320VC5502每次上电复位后,在执行完一系列初始化工作后,根据预先配置的自举模式,通过固化在ROM内的Bootloader程序进行程序引导。系统设计中,采用EMIF(外部存储接口)并行引导模式(16位数据宽度),只需将BOOTM[2:0]设置成011即可。

2.3 TMS320VC5502的引导表

Bootloader允许应用代码存放在慢速非易失性的外部存储器中,然后再将代码搬移到高速的片内存储器执行。应用代码以一种Bootloader能够理解的特殊格式编码,这种格式就是自举加载表。Boofloader在引导程序时,程序代码是以自举加载表形式加载。自举加载表包含了将要搬移的代码段、程序段,以及这些段将要被搬移到的地址和加载完成后程序要执行的地址(即程序入口地址)和其他一些配置信息。

TMS320VC55x系列DSP的自举加载表结构如表2所示。



其中,程序入口地址是自举加载表加载结束后用户程序开始执行的地址;寄存器配置数目决定了后面有多少个寄存器需要配置:只有当延时标志为0xFFFF时,延时才被执行;延时长度决定了在寄存器配置后延时多少个CPU周期才进行下一个动作;段长度、段起始地址和数据则为用户程序中定义的各个段的内容,并且可以重复添加;最后以0x00000000(32个01作为引导表的结束标志。

若要生成引导表,可用CCS最终编译生成的.out文件通过CCS自带的hex55.exe转换程序得到。将hex55.exe文件、.out文件、.cmd文件放在同一个文件夹中,通过DOS命令调用hex55.exe和.cmd文件,即可完成.out文件到.hex格式的引导表文件的转化。.cmd文件用于提供引导表的相关配置信息,以下为一个.cmd文件实例。
  • boot:表示生成一个自举加栽表
  • v5510:2:生成C55x格式的自举加载表
  • parallell6:加载模式是16位外部异步存储器
  • a :要求的输出格式是ASCII格式
  • o mvbso.hex:指明输出文件名
  • bso.out:指明输入文件名

经hex55.exe文件转化后的.hex格式的自举加载表文件是不能直接导入CCS中,CCS只支持将特别规定的DAT格式文件通过LDADDATA导入内存。所以在导入之前必须先将自举加载表转化成DAT格式文件,这个工作可以用VC编写简单的C语言转化程序实现。

2.4 TMS320VC5502和Flash的连接

EMIF为外部存储接口,通过EMIF接口可灵活地和各种同步或异步存储器件无缝连接。通过EMIF接口可以将TMS320VC5502的存储空间扩展到128 Mbit。存储空间被分为CE0"CE3四个区.每区占用不同的地址。在EMIF的并行引导模式下,ROM固化的Bootloader程序是以字地址0x200000为首地址开始加载程序。Ox200000即为CEl空间的首地址,所以Flash必须接在DSP的CEl空间上。

TMS320VC5502的EMIF有内部和外部两种地址总线。内部地址总线为A[21:2],外部地址总线为A[19:0]。EMIF根据所用的存储器数据线大小自动将内部地址总线移位,以便与外部地址总线连接。外存储器的地址总线应该总是连接在EMIF、的以A2开始的地址线上。例如一个8,16或32位的异步存储器的地址总线A[n:0](其中n表示外存储器的地址线个数)应该连接EMIF的地址线A[n+2:2]。图1给出TMS320VC5502和Flash的连接实例。表3为TMS320VC5502的内部总线和外部地址总线的映象关系。






3 并行Flash的烧写

3.1 数据烧写程序设计

Flash的数据可直接读取,但对Flash的编程和擦除操作则需要通过一系列命令才能进行。SST39VF200的写操作只能将1变成0,而O变成l必须通过擦除操作进行。所以每次写Flash之前必须进行片擦除,使存储单元值变成0xFFFF才能进行编程。擦除命令需要6个周期,编程命令需要4个周期,操作命令如表4所示H。



编程和擦除操作都需要一定周期的时间(SST39VF200的单字编程时间是14μs,整片擦除时间是70 ms)。用户可以通过查询标志数据线DQ6和DQ7确定编程或擦除是否完毕。当器件正处于编程或擦除状态时,连续读任意单元的值,D06的值将一直在O、l之间交替变化。当编程或擦除结束时,读DQ6则得到一个恒定值。这里即通过此方法判断操作是否结束。

根据Flash的编程和擦除命令,编写了相应的C语言程序,其中在TMS320VC55x系列1)SP中,对外接存储器的访问要调用库函数far_poke()和far_peek()。这2个函数包含在<extaddr.h>头文件中,并且寻址的地址为字地址。以下给出擦除程序,写操作与此类似。表5为对外接存储器读写的库函数。






3.2 程序的烧写实现

系统在CCS仿真环境下对Flash进行在线编程。先建立一个Flash的烧写工程,并在工程中将要烧写进Flash的自举加载表文件通过CCS的LOADDATA功能直接加载进DSP的内存。根据加载的首地址和数据长度,在仿真环境下烧进Flash中。当然也可以直接在程序中定义一个数组,将DAT文件中的数据赋值给该数组的元素,然后将该数组的每个元素写入Flash。在运行烧写程序之前,要先对EMIF进行设置,因为EMIF默认的是接8位异步存储器,可以通过调用GEL菜单中Init_CE0_Async_16命令完成。

4 结语

阐述了一种针对TMS320VC55x系列DSP简单有效的Flash烧写方法,并提出了程序自举加载的实现方法。讨论的加载方法包括硬件设计及相关程序,已在笔者实际开发的高精度数据采集项目中使用并成功运行。
本文地址:https://www.eechina.com/thread-31284-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表