C6202 ROM引导装载方式的研究
关键词:引导装载 DMA DSP
DSP系统的引导装载(Bootload)是指系统加电时,DSP将一段存储在外部的非易失性存储器的代码搬移到内部的高速存储器单元中执行。这样既利用了外部的存储单元扩展DSP本身有限的ROM资源,又充分发挥了DSP内部资源的效能。尽管用户代码可直接掩膜到内部ROM中,但一方面受容量和价格的限制,另一方面则不具有扩展性和不易升级。FLASH是一种高密度、非易失性的电可擦写存储器,十分适合低功耗、小尺寸和高性能的便携式系统。除了可以采用专用的硬件编程器把代码灌入FLASH中,也可以利用现成的DSP通过软件编程实现同样的功能,因此对整个系统的软件升级很方便。
图1 C62X方框图
TMS320C6000系列是TMS320系列产品中的新一代高性能DSPs芯片。由于其结构上(如图1)的特殊性,与C54系列的引导方式有很大差别。本文以C6202为例,介绍如何实现DSP正常的ROM引导。
1 C6202的ROM引导模式
C6202有两种存储器映射方式MAP0和MAP1。通过扩展总线的XD[4:0]利用上拉/下拉电阻进行复位时的芯片启动模式设置。本文将存储器映射方式设置为MAP1,即地址0处的存储器在内部,芯片自加载方式为8bit ROM方式,如图2的硬件连接。
(凹丫丫范文网fanwen.oyaya.net收集整理)
设置完芯片加载方式后,ROM加载的具体过程是:位于外部CE1空间的ROM(即图2中的FLASH)中的程序首先通过DMA搬入地址0处,尽管加载过程是在芯片复位信号被释放后才开始的,但是当芯片开始复位时,就开始准备上述传输了。用DMA进行的这一加载过程是一个单帧的数据块传输,数据块的大小为64KB。EMIF会根据芯片自加载方式的设置将相邻的8bit或16bit数据合为32bit指令。传输完成后,CPU退出复位状态,开始执行地址0处的指令。
2 硬件设计
本文仅给出DSP(TMS320C6202)与一片FLASH(AMD29VF040)的连接图,如图2。由DSP的相关输出管脚控制FLASH的擦除和读写。C6202的EMIF含有四个CE空间寄存器,由于ROM加载程序是从CE1空间搬入的,因此DSP的/CE1与FLASH的片选/CE相连。图2中只用到DSP的低8位数据线,如果自加载方式设置为16位或32位,可以通过DSP最低两位EA1和EA0的译码BE[3:0]片选,或者选用16bit或32bit的FLASH。
3 软件设计
由于C6000的特殊结构,可以实现8条并行指令同时执行,除非对硬件结构非常了解的专业人员,才能充分利用硬件资源,将汇编语言的高效率发挥出来。若对实时性要求不是很高,采用C语言编程完全可以满足需要,且C6000的优化器优化效率很高。这样可以降低编程工作量,缩短开发周期,可移植性好。本文以通用的C语言编程为例,介绍DSP对FLASH编程以实现正常的ROM引导。
3.1 系统初始化
在运行C语言前,必须建立C运行时间环境(C runtime environment),确保C程序的正常运行。运行时间支持源程序库(runtime-support source library)rts.src包含一个boot.asm模块可以实现此功能。在连接器命令中使用-c或-cr选项,且将rts6200.lib作为其中一个连接文件,连接器自动调用boot.asm模块产生c_int00函数。在硬件复位中断产生以及系统工作时,先执行此函数。
函数c_