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 現澆混凝土杯形基礎按現澆混凝土獨立基礎專案執...