摘要为实现数字信号处理器的加栽,介绍了TMS320C6455的各种加载模式,尤其是对外部ROM的引导方式,以及一种无需数据转换即可通过数据加载将用户程序写入Flash的方法。以TMS320C6455为例,同时结合LED灯闪烁实例验证自动加载的可行性。
数字信号处理器(DSP)在数字信号处理中有着广泛的应用,尤其是与FPGA结合的设计,增加了应用的灵活性和可升级性,能够充分发挥其信号处理的优越性。在设计以DSP为处理器的信号处理模块时,DSP的加载方式是必须考虑的问题。本文将以TMS320C6455为例来研究DSP的自动加载。
TMS320C6455是TI推出的一款较为高端的定点型数字信号处理器。TMS320C6455的时钟频率为1.2 GHz,16位定点处理能力为9 600MMAC /s,采用了Serial Rapid IO接口技术,这些特点决定了TMS320C6455在通信、图像处理、雷达等领域得到广泛应用。
1 TMS320C6455加载模式
C6000系类DSP的主要加载方式包括无引导模式、主机引导模式和EMIF总线引导模式3种。3种加载模式各有其优越点:无引导模式仅限于存储器0地址不是必须映射到RAM空间的器件,否则在RAM空间的初始化之前CPU会读取无效代码而导致错误;主机引导模式则要求必须有一部外部主机控制DSP的初始化,这增加了系统的复杂度和成本,在设计中较少采用。EMIF引导方式DSP与外部ROM的接口较为自由,但需要二次加载。TMS320C6455在以上加载方式的基础上还有主I2C、从I2C和SRIO引导方式。本文主要讨论易于实现的EMIF加载方式。
DSP的内部ROM空间有限,不能将所有的用户代码存储到内部ROM中。因此需要通过二次搬移完成用户程序的加载。TMS320C6455的地址空间0x100000~0x107FFF间集成了32 kB的内部ROM,Bootloader是其中的一段引导代码,作用是在DSP上电时,DSP将一段存储在外部ROM的用户代码(长度为1 kB)搬移到内部的RAM单元中执行。这种自动加载技术不仅利用了本身有限的ROM资源,而且充分发挥了DSP内部资源的利用率。
2 外部ROM引导
在外部ROM引导模式下,对TMS320C6455而言,CPU上电后将自动从CE3空间拷贝1 kB到CPU的内部RAM并且运行。对于大多数的应用程序,1 kB大小的代码量无法满足系统的要求,如果将代码放在外部Flash中运行,则又浪费了DSP的高速性能。因此,当用户代码长度>1 kB时,需要使用Bootloader进行二次加载。Bootloader程序是一个“搬移数据”的程序,主要功能是将用户程序从CE3的其他空间搬移到内部RAM供CPU运行。DSP的二次加载程序的加载过程如图1所示。
DSP的CPU复位阶段,程序指针自动指向Bootloader,这个程序将CE3空间的1 kB(对应外部Flash中二次加载代码)搬移到CPU的内部RAM中;CPU退出复位后正常启动,运行二次加载程序,将用户程序的部分拷贝到RAM中,完成数据的搬移后跳转到_c_int00处,初始化C运行环境;待C运行环境初始化完成后,指针跳转到main()函数处。
3 用户程序的烧写和存储区域分配
文中重点介绍直接利用CCS开发工具将用户程序编译连接的.out文件,通过JTAG仿真器下载到DSP内部的RAM中,只要不运行程序,此时RAM中存储的程序就是.out文件对应的二进制格式存储的机器码,将其另存为.dat文件格式,则直接可以通过在线烧写的方法完成Flash的烧写。一定要修改工程文件中的原链接器,命令文件中存储空间的划分和COFF段属性的设置,避免烧写程序的存储空间与用户程序相冲突,并在两个程序中留有一定的间隔用于保护程序的相互独立性。
4 二次加载程序的编写
TMS320C6455片内的Boofloader自动载入CE3空间的前1 kB空间,在实际应用中,DSP的应用程序一般1 kB,因此需要加入二次引导代码。其实现的功能是将用户程序的剩余部分拷贝到RAM中。程序运行的步骤为:(1)根据复制表中各段的加载和运行地址等信息,对变量进行初始化。(2)根据信息将代码从Flash搬移到RAM的相应位置。(3)将程序的指针跳转到C程序入口函数_c_int00处。
5 Flash的烧写
Flash的烧写以一个GPIO口的LED闪烁的程序为例。设计采用的Flash型号为S29GL512N,其接法如图2所示。
调试步骤为:(1)通过JTAG口将编译生成的.out文件下载到DSP内部的RAM中,不运行,将RAM中的数据保存成.dat文件(注意保存的长度应该不小于用户程序的长度)。(2)进行Flash的擦除,采用整体擦除,擦除结束后采用循环检测DQ7引脚是否置1,置1代表完全擦除。(3)进行Flash的烧写,将上面保存的.dat文件Load到DSP的CE2地址段(注意修改起始地址和长度),编写程序,从CE2的地址读取数址位(注意写入长度不能小于.dat数据的长度),完成Flash的烧写。(4)重新通电,LED闪烁,表面DSP完成外部ROM加载,实现DSP的自启动。
6 结束语
DSP广泛应用于各种数字信息产品中,对于其加载模式的要求也越来越高,通过Flash存储器加载DSP的方法是实际应用中有效而简单的方法。本文介绍了TMS320C6455从外部ROM加载的模式,给出了硬件连接方式和软件的核心代码,通过实验验证其运行良好。