DSP CMD檔案的編寫

2021-06-06 09:53:55 字數 2580 閱讀 1869

dsp cmd檔案的編寫

1.      coff格式

1>    通用目標檔案格式(commonobject file format)是一種流行的二進位制可執行檔案格式,二進位制可執行檔案包括庫檔案(lib),目標檔案(obj)最終可執行檔案(out)。,現今pc機上的windows95和nt4.0以後的作業系統的二進位制檔案格式(pe)就是在coff格式基礎上的進一步擴充。

2>    coff格式:詳細的coff檔案格式包括段頭,可執行**和初始化資料,可重定位資訊,行號入口,符號表,字串表等,這些屬於編寫作業系統和編譯器人員關心範疇。而對於c只需要了解定義段和給段分配空間就可以了。

3>    採用coff更有利於模組化程式設計,程式設計師可以自由決定願意把哪些**歸屬到哪些段,然後加以不同的處理。

2.      section目標檔案中最小單位稱為塊。乙個塊就是最終在儲存器映象中佔據連續空間的一段**或資料。

1>    coff目標檔案包含三個預設的塊:

.text可執行**

.data已初始化資料

.bss為未初始化資料保留的空間

2>    彙編器對塊的處理

未初始化塊

.bss       變數存放空間

.usect    使用者自定義的未初始化段

初始化塊

.text      彙編指令**

.data     常數資料(比如對變數的初始化資料)

.sect      使用者自定義的已初始化段

.asect    通.sect,多了絕對位址定位功能,一般不用

3>c語言的段

未初始化塊(data)

.bss       存放全域性和靜態變數

.ebss     長呼叫的.bss(超過了64k位址限制)

.stack    存放c語言的棧

.sysmem 存放c語言的堆

.esysmem     長呼叫的.sysmem(超過了64k位址限制)

初始化塊

.text      可執行**和常數(program)

.switch  switch語句產生的常數**(program/低64k資料空間)

.pinit     tables for globalconstructors (c++)(program)

.cinit     用來存放對全域性和靜態變數的初始化常數值(program)

.const    全域性和靜態的const變數初始化值和字串常數,(data)

.econst 長.const(可定位到任何地方)(data)

3>    自定義段(c語言)

#pragma data_section(函式名或全域性變數名,"使用者自定義在資料空間的段名");

#pragma code_section(函式名或全域性變數名,"使用者自定義在程式空間的段名");

不能在函式體內宣告。

必須在定義和使用前宣告

#pragma可以阻止對未呼叫的函式的優化

3.      連線命令檔案(cmd)

1>    memory指定儲存空間

memory

page0:  

name 0 [attr]   : origin =constant, length = constant   

page n:  

name n [attr]   : origin =constant, length = constant   

page n:標示儲存空間,n<255;page 0為程式儲存空間;page 1為程式儲存空間

name:儲存空間名稱

attr:儲存空間屬性:唯讀r,只寫w,可包含可執行**x,可以被初始化i。

orgin:用來定義儲存空間的起始位址

lenth:用來定義儲存空間的長度

2>    sections分配段

sections

name            : [property,property,……]

name:輸出段的名稱

property:輸出段的屬性:

page = n,段位於那個儲存頁面空間。

例:ramfuncs            : load = flashd,

run = raml0,

load_start(_ramfuncsloadstart),

load_end(_ramfuncsloadend),

run_start(_ramfuncsrunstart),

page = 0

3>    直接寫編譯命令

-l rts2800_ml.lib     連線系統檔案rts2800_ml.lib

-o filename.out              最終生成的二進位制檔案命名為filename.out

-m filename.map     生成對映檔案filename.map

-stack 0x200           堆疊為512字

4..const段:

由關鍵字const限定的全域性變數(const限定的區域性變數不產生)初始化值,和出現在表示式(做指標使用,而用來初始化字串陣列變數不產生)中的字串常數,另外陣列和結構體是區域性變數時,其初始值會產生.const段,而全域性時不產生。

DSP CMD連線命令檔案資源配置

dsp的儲存器的位址範圍,cmd是主要是根據那個來編的。cmd 它是用來分配rom和ram空間用的,告訴鏈結程式怎樣計算位址和分配空間.所以不同的晶元就有不同大小的rom和ram.放使用者程式的地方也不盡相同.所以要根據晶元進行修改.分兩部分.memory和sections.memory secti...

C6678多核DSP CMD檔案介紹

cmd檔案編寫 cmd 鏈結器配置檔案,存放鏈結器的配置資訊,cmd檔案使開發者可以通過自己定義的儲存器模組來配置系統儲存器,說白點也就是cmd是用來分配rom和ram空間用的,告訴鏈結程式怎樣計算位址和分配空間。memory命令 描述系統實際的硬體資源 section命令 描述 段 如何定位 其中...

makefile檔案的編寫

簡單的說,makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至可以在makefile中執行shell指令碼。makefile帶來的好處就是 自動化編譯 一旦寫好,只需要乙個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。關於程式...