提高DSP代码运行性能的研究
其次由于存储空间使用装载与运行分离的配置模式,因此必须重新设计链接文件(CMD文件)。在设计新的CMD文件之前,首先介绍常用的分离配置链接命令指示器:“.label”定义一个可重定位代码段标签,该标签表明代码段内部地址都是相对的,在链接时重新定义该段分配的首地址。相应的段地址为“首地址+ 段内偏移地址”。利用该汇编指示器可提供代码装载地址。“.global”汇编指示器定义全局符号,该符号表示全局地址,链接器利用该汇编指示器定义的运行时全局地址,为程序提供在RAM中运行时的人口地址。“.”汇编指示器表示当前代码的运行地址,它用来帮助计算运行代码的长度。在CMD文件中定义可执行代码的运行时首地址标签_fun_run和代码长度标签_fun_len;在存储空间配置时定义COPYCODE段用来装载应用程序的可执行代码:在存储空间配置时定义DATA0段做为应用程序可执行代码段的运行介质。
具体存储空间配置及CMD文件编写代码如下:本文引用地址://m.amcfsurvey.com/article/152359.htm
3.2 Bootloader装载器软件及硬件设计
设计Bootloader装载器时应注意两点:首先关闭看门狗,否则可能因为搬移时间过长导致DSP被不断复位,系统无法正常工作;必须定义 Bootloader装载器的入口标签_c_int0和出口标签wfc_int0,实现Bootloader装载完成搬移工作后顺利进入用户应用程序。
考虑到DSP上电工作顺序:从系统复位指令处跳转至运行时支持代码;创建C语言运行环境;用户程序入口 main();完成用户初始化及应用代码。因此负责从Flash将应用程序代码拷贝到RAM的Bootloader装载器必须在恰当的时间工作,否则应用程序不能上电自动运行。由DSP上电工作顺序可以发现,系统上电复位时的复位地址是,固定的但跳转指令所指的地址是由用户指定的,也就是说,可以让该复位跳转指令指向所设计的Bootloader装载器的首地址完成代码搬移工作(其工作原理见图1),然后Bootloader装载器将DSP的控制权交给运行支持库,完成C语言环境建立并进入用户程序入口main()开始用户程序。为此必须对运行支持库做如下修改:
从运行支持库rts.rc源文件中提取boot.asm.将boot.asm的入口地址_c_int0修改为wfc_int0地址,重新编译boot. asm生成boot.obj文件,把boot.obj归档到C语言运行支持库rts.2xx.1ib。将修改后的运行支持库添加到工程中,实现Boot- loader装载器先于运行支持库代码执行。
Bootloader装载器利用装载地址、运行地址以及链接器提供的代码长度等信息,使用读表指令“TBLR”将代码从程序空间拷贝到数据空间,然后跳转到运行支持库入口地址开始执行程序。DSP的这种搬移指令特点仅适合将数据表从程序空间拷贝到数据空间,要实现全部设计功能必须配合相应的硬件设计,由 TMS320LF2407DSP的存储器映射结构可以看出程序空间与数据空间是物理分离的,即有3个独立的空间片选信号PS、DS、CS。为实现RAM共享,首先必须将PS和DS信号进行“与“操作,然后将其输出信号作为共享RAM的片选信号,实现程序空间与数据空间的统一编址。根据 TMS320LF2407DSP的存储器映射结构,具体的存储空间配置如下:0x0000~0x7FFF片上RAM、外设寄存器和保留的地址区,该区域必须作为数据地址使用;利用图2所示的硬件结构实现0x8000~0xFFFF区域程序空间和数据空间共享RAM。共享RAM配置如下:数据区 0x8000~0xBFFF;程序区0xC000~0xFFFF。
评论