Image RO Limit 等常量的問題

2021-04-13 13:24:49 字數 1558 閱讀 9665

image$$ro$$limit|等常量的問題

|image$$ro$$limit|是不是指資料段,在flash中的起始位址阿(如果**燒在flash中的話)!

|image$$rw$$base|是不是flash中的資料段的在sdram的執行起始位址阿![!21ki@][@21ki!]

|image$$zi$$base|是不是sdram中0位址區起始阿!

|image$$zi$$limit|是不是sdram中0位址區的結束位址阿 !

如果照我理解的沒有錯的話,下面那段**把flash中的資料段複製到了sdram中的某個位置,[!21ki@][@21ki!]

然後再sdram中初始化了乙個0區域,這個0區域的作用我不是很清楚,猜測是為c程式的變數做準備的,不知對不對!

那麼還有乙個問題,能不能把**段也搬到sdram中執行,這樣**的執行速度不是更快了麼?我看了好幾個版本的啟動**,為什麼大家都不這麼做!謝謝

啟動**裡面有這樣一段:

ldr r0, =|image$$ro$$limit| ;get pointer to rom data[!21ki@][@21ki!]

ldr r1, =|image$$rw$$base| ;and ram copy[!21ki@][@21ki!]

ldr r3, =|image$$zi$$base| [!21ki@][@21ki!] ;zero init base => top of initialised data[!21ki@][@21ki!]

cmp  r0, r1             ;check that they are different[!21ki@][@21ki!]

beq  %f1         ;若相等則跳轉到1,相同,則不拷貝該區間,初始化零資料區

0  

cmp  r1, r3                      ; 如果r0不等於r1,r1和r3比較,copy init data[!21ki@][@21ki!]

ldrcc   r2, [r0], #4      ; --> ldrcc r2, [r0] + add r0, r0, #4   [!21ki@][@21ki!]

strcc   r2, [r1], #4     ; --> strcc r2, [r1] + add r1, r1, #4[!21ki@][@21ki!]

bcc  %b0   ;當無符號數r1[!21ki@][@21ki!]

1  [!21ki@][@21ki!]

ldr   r1, =|image$$zi$$limit|  ;top of zero init segment,     mov   r2, #0     ;r2=0[!21ki@][@21ki!]

2  [!21ki@][@21ki!]

cmp   r3, r1        ;比較r3和r1,注意這個時候r1是|image$$zi$$limit|,zero init[!21ki@][@21ki!]

strcc   r2, [r3], #4   ;當無符號數r3strcc r2, [r3] + add r3, r3, #4[!21ki@][@21ki!]

bcc     %b2     ;當無符號數r3

關於常量指標 指標常量等

在學習c語言中,我們會很頭疼指標這一東西,可以說指標是c語言的靈魂。不懂指標,就相當於c語言不過關。接下來,我將簡要說下指標,重點放在指向指向非常量資料的非常量指標 指向常量資料的非常量指標 指向非常量資料的常量指標 只想常量資料的常量指標。指標 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶...

《C 》關於指標限定(指標常量 常量指標等)

int const int const const int 常量指標 指向常量的指標 const int const 常量指標常量 只能讀取不能修改。const 修飾的只是限定指標的操作!但不能限定空間上的實體的可改變性。因為 乙個實體可能被不止乙個變數所關聯,所以實體被其他關聯變數的改變是有可能的...

2 注釋 常量 變數 轉移字元 等

2 注釋 常量 變數 轉移字元 等 標籤 空格分隔 未分類 注釋 可以注釋多行,但是不能巢狀注釋 可以巢狀 注釋單行 字串 hello word 這種由雙引號引起來的一串字元稱為字串字面值 string literal 或者簡稱字串。由於一些符號有他們特殊的功能 因此當你想列印出它們本身時需要用反斜...