提高DSP代码运行性能的研究
1 引言
随着微控制器技术的发展,以TI公司TMS320C2000系列为代表的DCS型数字信号处理器DSP应用广泛。该类型DSP内部集成Flash存储器,可将二进制代码同化到其内部的Flash存储器直接运行。这种运行方式在传统嵌入式应用设计中很有效,但在一些算法比较复杂、系统响应要求快速、通讯任务比较繁重的嵌入式应用中,这种运行方式会导致控制系统响应迟缓、通讯异常、I/O操作缓慢等问题。针对这些情况,提出一种新的解决方案,来提高DSP代码运行性能。
2 问题分析及设计方案
由于应用程序在Flash中运行速度远低于在RAM中,因此在复杂嵌入式应用中会出现控制系统响应迟缓、通讯异常、I/O操作缓慢等问题。为了避免这些问题,只能让程序在RAM中运行。TI公司的TMS320C2000系列DSP有2种工作模式:微处理器模式和微控制器模式。当DSP处于微控制器模式时,在RAM中程序运行速度达到峰值,但掉电后程序丢失,系统无法重新自动运行,因此这种程序运行方式仅适用于仿真调试阶段。因此,DSP必须工作在微处理器模式下,使用片内Flash作为运行程序的存储和运行介质,才能保证系统上电后自动运行。但其程序运行效率低。因此必须把这2种工作模式相结合:首先将应用程序固化到片内Flash存储器,当系统上电后由专门设计的装载器(Bootloader) 负责将应用程序南Flash搬移到RAM,然后Bootloader将DSP控制权交给应用程序,从而实现DSP运行速度最高和上电后应用程序自动运行,解决了因程序在不同介质的不同效率所导致的系统响应迟缓、通讯异常、I/O操作缓慢等问题。
以TMS320LF2407 DSP为例进行说明:该DSP具有独立的数据存储空间和数据总线,以及程序存储空间和程序总线。只有程序空间的程序才能被DSP视为是可执行程序,数据空间上的程序将被DSP视为操作数据,因此将应用程序直接从片内Flash拷贝到数据空间的RAM后应用程序是不能运行的。若使拷贝后的应用程序能够被 DSP视为可执行程序还必须做一些辅助工作。
通过对TMS320LF2407的存储映射结构分析可发现:程序空间和数据空间的扩展区域有部分地址可配置成相同存储介质(Flash或者RAM),通过某种办法可以实现共享,也就是说DSP可以将从Flash中拷贝到共享RAM的应用程序视为可执行代码。
3 设计方案实施
3.1 TMS320LF2407存储空间配置及CMD文件编写
为实现程序空间与数据空间共享RAM的存储器配置方案,首先要熟悉C语言7个存储段对存储介质的要求,其具体要求如表1所示。
从表1可以看出:“.bss”、“.sysmem”、“.stack”段的存储介质必须是RAM,且使用数据空间地址;而“.text”、“. swtich”、“.cinit”段的存储介质可以是RAM或ROM,但必须使用程序空间地址。“.text”是用来存放应用程序的可执行代码的专用段,它既可运行在RAM中,也可在Flash中,该段的运行介质决定应用程序是否能够达到最大性能。根据DSP命令链接文件(CMD文件)对汇编段的管理方式可知,“.text”可配置成装载与运行分离的工作模式。这种模式可以使应用程序存储在Flash中,运行在RAM中从而实现DSP上电后全速运行。
评论