提高DSP代碼運行性能的研究
1 引言
隨著微控制器技術的發(fā)展,以TI公司TMS320C2000系列為代表的DCS型數字信號處理器DSP應用廣泛。該類型DSP內部集成Flash存儲器,可將二進制代碼同化到其內部的Flash存儲器直接運行。這種運行方式在傳統(tǒng)嵌入式應用設計中很有效,但在一些算法比較復雜、系統(tǒng)響應要求快速、通訊任務比較繁重的嵌入式應用中,這種運行方式會導致控制系統(tǒng)響應遲緩、通訊異常、I/O操作緩慢等問題。針對這些情況,提出一種新的解決方案,來提高DSP代碼運行性能。
2 問題分析及設計方案
由于應用程序在Flash中運行速度遠低于在RAM中,因此在復雜嵌入式應用中會出現控制系統(tǒng)響應遲緩、通訊異常、I/O操作緩慢等問題。為了避免這些問題,只能讓程序在RAM中運行。TI公司的TMS320C2000系列DSP有2種工作模式:微處理器模式和微控制器模式。當DSP處于微控制器模式時,在RAM中程序運行速度達到峰值,但掉電后程序丟失,系統(tǒng)無法重新自動運行,因此這種程序運行方式僅適用于仿真調試階段。因此,DSP必須工作在微處理器模式下,使用片內Flash作為運行程序的存儲和運行介質,才能保證系統(tǒng)上電后自動運行。但其程序運行效率低。因此必須把這2種工作模式相結合:首先將應用程序固化到片內Flash存儲器,當系統(tǒng)上電后由專門設計的裝載器(Bootloader) 負責將應用程序南Flash搬移到RAM,然后Bootloader將DSP控制權交給應用程序,從而實現DSP運行速度最高和上電后應用程序自動運行,解決了因程序在不同介質的不同效率所導致的系統(tǒng)響應遲緩、通訊異常、I/O操作緩慢等問題。
以TMS320LF2407 DSP為例進行說明:該DSP具有獨立的數據存儲空間和數據總線,以及程序存儲空間和程序總線。只有程序空間的程序才能被DSP視為是可執(zhí)行程序,數據空間上的程序將被DSP視為操作數據,因此將應用程序直接從片內Flash拷貝到數據空間的RAM后應用程序是不能運行的。若使拷貝后的應用程序能夠被 DSP視為可執(zhí)行程序還必須做一些輔助工作。
通過對TMS320LF2407的存儲映射結構分析可發(fā)現:程序空間和數據空間的擴展區(qū)域有部分地址可配置成相同存儲介質(Flash或者RAM),通過某種辦法可以實現共享,也就是說DSP可以將從Flash中拷貝到共享RAM的應用程序視為可執(zhí)行代碼。
3 設計方案實施
3.1 TMS320LF2407存儲空間配置及CMD文件編寫
為實現程序空間與數據空間共享RAM的存儲器配置方案,首先要熟悉C語言7個存儲段對存儲介質的要求,其具體要求如表1所示。
從表1可以看出:“.bss”、“.sysmem”、“.stack”段的存儲介質必須是RAM,且使用數據空間地址;而“.text”、“. swtich”、“.cinit”段的存儲介質可以是RAM或ROM,但必須使用程序空間地址?!埃畉ext”是用來存放應用程序的可執(zhí)行代碼的專用段,它既可運行在RAM中,也可在Flash中,該段的運行介質決定應用程序是否能夠達到最大性能。根據DSP命令鏈接文件(CMD文件)對匯編段的管理方式可知,“.text”可配置成裝載與運行分離的工作模式。這種模式可以使應用程序存儲在Flash中,運行在RAM中從而實現DSP上電后全速運行。
評論