關於DSP中CMD檔案的解釋

2021-03-04 01:13:06 字數 3136 閱讀 5655

3>c語言的段

未初始化塊(data)

bss 存放全域性和靜態變數

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

stack 存放c語言的棧

sy**em 存放c語言的堆

esy**em 長呼叫的.sy**em(超過了64k位址限制)

初始化塊

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

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

pinit tables for global constructors (c++)(program)

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

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

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

3> 自定義段(c語言)

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

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

不能在函式體內宣告。

必須在定義和使用前宣告

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

3. 連線命令檔案(cmd)

1> memory指定儲存空間

memory

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

name:儲存空間名稱

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

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

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

2> sections分配段

sections

name:輸出段的名稱

sections:(在程式裡新增下面的段名如.vectors.用來指定該段名以下,另乙個段名以上的程式(屬於page0)或資料(屬於page1)放到「>」符號

後的空間名字所在的地方。

property:輸出段的屬性:

load=allocation(強制位址或儲存空間名稱)同》allocation:定義輸出段將會被裝載到**。

run= allocation(強制位址或儲存空間名稱)同》allocation:定義輸出段將會在**執行。

注:cmd檔案中只出現乙個關鍵字load或run時,表示兩者的位址時表示兩者的位址shi重合的。

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

例:ramfuncsload = 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堆疊為

4. .const段:

由關鍵字const限定的全域性變數(const限定的區域性變數不產生)初始化值,和出現在表示式(做指標使用,而用來初始化字串陣列變

量不產生)中的字串常數,另外陣列和結構體是區域性變數時,其初始值會產生.const段,而全域性時不產生。

例子在結合硬體的程式設計中,有些變數需要特定位址.

一般可以採用指標變數.

例如:unsigned int *ledreg = (unsigned int *)0x5f00;//發光二極體位址

*ledreg = 0xff;

但有些時候感覺不是太好時,可以像keil那樣

unsigned int ledreg at 0x5f00;//發光二極體位址

ledreg = 0xff;

這樣看著"比較順眼"~~~

但在tidsp的ccs環境下,不能採用at或__at等來定位位址.

不過ccs也提供了類似的手段,不過有些"麻煩".

具體實現:

1.在cmd檔案中

memory

sections

2.在c/c++檔案中

#ifdef __cplusplus

#pragma data_section("leddataregsfile") /*c++語言格式*/

#else

#pragma data_section(ledregs,"leddataregsfile");/*c語言格式*/

#endif

volatile unsigned int ledregs;

/*以下為c++語言格式*/

#pragma data_section("lcd***lregsfile")

volatile unsigned int lcd***l;

#pragma data_section("lcd***hregsfile")

volatile unsigned int lcd***h;

#pragma data_section("lcddatlregsfile")

volatile unsigned int lcddatl;

#pragma data_section("lcddathregsfile")

volatile unsigned int lcddath;

#pragma data_section("eintregsfile")

volatile unsigned int eintregs;

#pragma data_section("keyregsfile")

volatile unsigned char keyregs;

#pragma data_section("rclkregsfile")

volatile bool spirclkregs;

3.在應用程式中

extern unsigned int ledregs;

關於DSP精準廣告投放的問題

1 dsp廣告投放適合什麼行業呢?dsp是利用實時競價的方式購買展示廣告,廣告主可根據廣告交易平台所提供的資料,包括到訪問者來自的 及地區等,來決定是否競投該廣告展示及設定出價。由於dsp可大幅提公升投放的精準度,為廣告主提供跨媒介 跨平台 跨終端的廣告投放平台,通過資料整合 分析實現基於受眾的精準...

關於UGR的解釋

看得出來樓上兄弟是懂的,說的全對,但有點表述不出來,估計只有懂的朋友們才能明白您寫的意思,不懂的看完還是不懂,呵呵 我來簡化一下試試看樓主能否明白 1 只放乙個燈在房間裡面去算ugr是不對的,你試試看同樣還是那個燈,多排列一些燈具再看看ugr是不是下來了?2 這個 我基本只是拿來定性看看燈具的保護角...

關於09定額解釋中重要係數的總結

0.95 1 基礎回填砂夾石 灰土時,執行墊層相應專案,其人工乘以係數0.95。1.05 1 坡屋面混凝土按相應定額專案執行,混凝土用量乘以係數1.05。1.11 磚 石 牆身 基礎如為弧形時,按相應專案人工費乘以係數1.1。磚用量乘以係數1.025。2 現澆混凝土杯形基礎按現澆混凝土獨立基礎專案執...