DSP的CMD檔案解讀

2021-08-05 20:47:11 字數 2062 閱讀 1591



我們以問答的方式來分析一下cmd檔案作用以及如何設定

1、為什麼dsp裡面有cmd檔案,而普通的微控制器卻沒有呢?

通常dsp內部整合了儲存器或外部擴充套件儲存器。儲存器統一對映到程式空間或者資料空間。dsp中,儲存器對映空間除sram和flash外還有保留空間(可用於擴充套件外部儲存器與外設),比較雜亂。dsp的編譯器自身不能定位執行**位置,因此設計人員需要自己去定義**存放和載入位置。微控制器就比較簡單了,編譯器自身會定位**位址,所以一般無需去定位位址。

2、cmd由幾部分組成,各有什麼功能?

cmd由memory和sections兩部分組成。memery用於定義每個儲存器塊的名字、起始位址和長度。sections主要用於描述哪個段對映到了哪段儲存空間(包括所在段的頁型別,其中page0規定為程式儲存區,page1為資料儲存區)。

3、cmd檔案中有哪些段?各自作用?

cmd檔案裡有兩個基本的段:初始化段和非初始化段。初始化段包含**和常數等必須在dsp上電之後有效的數。故初始化塊必須儲存在如片內flash等非易失性儲存器中,非初始化段中含有在程式執行過程中才像變數內寫資料進去,所以非初始化段必須鏈結到易失性儲存器中如ram。

已初始化的段:.text,.cinit,.const,.econst,.pinit和.switch..

.text:所有可以執行的**和常量

.cinit:全域性變數和靜態變數的c初始化記錄,包含未用const宣告的外部(extern)或靜態(static)資料表

.const:包含字串常量和初始化的全域性變數和靜態變數(由const)的初始化和說明

.econst:包含字串常量和初始化的全域性變數和靜態變數(由far const)的初始化和說明,與.const不同的是.const分配範圍被限制在低64k 16位資料區,而.econst的分配範圍是4m 22位資料區

.pinit:全域性構造器(c++)程式列表

.switch:包含switch宣告的列表

非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,這些段就是儲存空間而已)

.bss: 為全域性變數和區域性變數保留的空間,在程式上電時.cinit空間中的資料複製出來並儲存在.bss空間中。

.ebss:為使用大暫存器模式時的全域性變數和靜態變數預留的空間,在程式上電時,cinit空間中的資料複製出來並儲存在.ebss中,與.bss不同的是.bss分配範圍被限制在低64k 16位資料區,而.ebss的分配範圍是4m 22位資料區

.stack:為系統堆疊保留的空間,用於和函式傳遞變數或為區域性變數分配空間。

.sysmem:為動態儲存分配保留的空間。如果有malloc函式,此空間被巨集函式占用,如果沒有的用到,將不產生該段

.esysmem:為動態儲存分配保留的空間。如果有far malloc函式,此空間被相應的占用,如果沒有的用到,將不產生該段

4、修改cmd檔案時應該注意什麼?

不同dsp的儲存空間對映位址差異很大。我們看一下2407、28035、2812的儲存器空間位址

儲存到相簿

2015-4-26 00:13 上傳

儲存到相簿

2015-4-26 00:13 上傳

儲存到相簿

2015-4-26 00:13 上傳

故修改cmd檔案中memory時注意,需比照相應dsp的儲存器位址,來修改段。各個段的位址不能跨界;資料段空間不要對映到程式段位址。保留空間如用於外擴外設或儲存器方可使用,如外部未使用保留空間,則不能使用保留空間

section中,通常,.text、.cint、.switch等初始化段連線至rom或ram空間,且必須位於程式儲存器空間(page0)。.const塊可以鏈結至rom或ram空間,且必須是資料儲存器空間(page1)。而.bass、.ebass、.sysmem、.eysmem等未初始化段必須連線至ram空間,且必須位於資料儲存器空間(page1)。

DSP2812的標準CMD檔案

memory sections econst load flashb page 0,run raml0l1 page 1 sysmem ramh0 page 1 allocate iq math areas iqmath flashi page 0 math code iqmathfasttable...

DSP28335的CMD檔案的空間分配

仔細思考一下這個問題!帶著疑問進行下面的解答。首先我們已經有了配置好的暫存器資料,這個時候我們需要把配置好的暫存器資料傳遞給實際的物理暫存器中,這樣晶元才 能根據我們想 要的功能進行工作。這裡分兩個步驟進行 第一步 將暫存器檔案分配到資料空間的某個資料段中。第二步 在cmd檔案中將這個資料段直接對映...

DSP(28035)CMD使用總結

dsp 28035 cmd使用總結 1.程式空間 這種 資料 有兩個特點 a 只要使用者程式編寫完成,這些 資料 就已經是可知的 可預期的,是由使用者編寫的程式 和編譯器共同決定的。b 在系統執行過程中,這些資料的內容不會發生任 何變化,只會被讀取,不會被修改。一般使用rom類儲存器 2.資料空間 ...