0 引 言
在许多DSP应用系统中,都需要DSP芯片能够在加电后自动从外部设备加载程序,也就是引导(Boot-load)。TI公司的TMS320C6000系列芯片有三种引导方式可供选择,分别是不加载、ROM加载和主机加载,详细工作流程如下:
不加载:CPU直接从地址0处开始执行代码。如果该处内存是SDRAM,那么CPU会先挂起,等待SDRAM的初始化完成。
ROM加载:位于外部CE1空间的ROM中的代码首先通过DMA/EDMA被搬入地址0处。加载过程在复位信号撤销后开始,此时CPU内部保持复位状态,由DMA/EDMA执行一个单帧的数据块传输。对于C620x/C670x,DMA从CE1空间中拷贝64 KB数据到地址0处。传输完成后,CPU退出复位状态,开始执行地址0处的指令。对于C62x/C67x,用户还可以指定外部加载ROM的存储宽度,EMIF会自动把相邻的8 b/16 b数据合成32 b的指令。
主机加载:也就是HPI加载。CPU停留在复位状态,芯片其余部分保持正常状态。引导过程中,外部主机通过主机接口初始化CPU的存储空间。主机完成所有的初始化工作后,向接口控制寄存器的DSPINT位写1,结束引导过程。此时CPU退出复位状态,开始执行地址0处的指令。
1 ROM加载的实现
究竟使用哪种引导方式取决于芯片引导模式设置,而引导模式由BOOTMODE[4:0]管脚确定。系统加电后,RESET信号有效,DSP芯片复位,在RESET信号上升沿处锁存BOOTMODE[4:0]管脚上的设置值,以此决定DSP芯片内存映射方式、地址0处的内存类型以及复位后芯片的引导模式。本例中C6701的BOOTMODE值设为01101,即8 b ROM加载。
ROM加载是工程中最常见的加载方式,这种方式可以把程序代码段和数据段保存在ROM,FLASH等非易失存储器中,加载过程完全由DSP自动完成,在实际应用中十分方便。ROM加载的具体步骤如下。
1.1 分配存储空间,生成目标文件(.out)
TI代码产生工具产生的目标文件是一种模块化的文件格式——COFF格式。程序中的代码和数据在COFF文件中是以段的形式组织的。对于C语言文件,编译器生成的代码段名为.text。全局变量和静态变量分配在.bss段中,而局部变量或寄存器变量分配到.stack段或使用寄存器。在DSP的配置文件中必须将这些代码段正确地分配到C6701的地址空间中去。
在TI提供的DSP软件开发平台Code Composer Studio(CCS)中,编写DSP系统的工作程序,并对DSP芯片的内存空间、EMIF接口等进行正确的配置后,程序编译通过,CCS就会自动产生目标(后缀为.out)文件,这种.out文件即为COFF格式的。