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命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。關於程式...