日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单的启动代码 IMPORT |Image$$RO$$Limit|

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单的启动代码 IMPORT |Image$$RO$$Limit| 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單的啟動代碼

IMPORT |Image$$RO$$Limit|
?IMPORT |Image$$RW$$Base|
?IMPORT |Image$$ZI$$Base|
?IMPORT |Image$$ZI$$Limit|

?IMPORT Main ; 聲明C程序中的Main()函數

?AREA Start,CODE,READONLY ;聲明代碼段Start
?ENTRY ; 標識程序入口
?CODE32 ; 聲明32位ARM指令
????????????
?Reset LDR SP,=0x40003F00
??
; 初始化C程序的運行環境
?LDR R0,=|Image$$RO$$Limit|
?LDR R1,=|Image$$RW$$Base|
?LDR R3,=|Image$$ZI$$Base|
?????????
?CMP R0,R1
?BEQ LOOP1
LOOP0 CMP R1,R3
?????????LDRCC R2,[R0],#4
?????????STRCC R2,[R1],#4
?????????BCC LOOP0
LOOP1 LDR R1,=|Image$$ZI$$Limit|
???????MOV R2,#0
LOOP2 CMP R3,R1
???????STRCC R2,[R3],#4
???????BCC LOOP2
???????B Main ; 跳轉到C程序代碼Main()函數
????????END

|Image$$RO$$Base|?
表示RO輸出段運行時起始地址,也可以說是程序代碼存放的起始地址,由-ro-base這個參數指定;
|Image$$RO$$Limit|
表示RO輸出段運行時存儲區域界限,其值可通過|Image$$RO$$Base|+Code sizes+RO Data sizes+4計算得出; 是編譯器內部產生的變量,也就是只讀屬性的程序段的最后一個字句的地址,
|Image$$RW$$Base|
表示RW輸出段運行時起始地址,記得是運行時的地址,而不一定是加載時的存放地址,因為RW輸出段在加載時可能是在ROM中并緊跟著RO輸出段存放的,當程序運行時才移動到RAM起始地址為|Image$$RW$$Base|的區域,由-rw-base這個參數指定;未指定的話,默認緊跟RO輸出段,那么|Image$$RW$$Base|=|Image$$RO$$Limit|;
|Image$$RW$$Limit|
表示RW輸出段運行時存儲區域界限,其值可通過|Image$$RW$$Base|+RW Data sizes+4計算得出;
|Image$$ZI$$Base|
表示ZI輸出段運行時起始地址,它是運行時在RAM中生成的,緊跟著RW輸出段存放,其值和|Image$$RW$$Limit|一樣;
|Image$$ZI$$Limit|
表示ZI輸出段運行時存儲區域界限,其值可通過|Image$$ZI$$Base|+ZI Data sizes+4計算得出。

一個程序包括只讀的代碼段和可讀寫的數據段。在ARM的集成開發環境中,只讀的代碼段和常量被稱作RO段(ReadOnly);可讀寫的全局變量和靜態變量被稱作RW段(ReadWrite);RW段中要被初始化為零的變量被稱為ZI段(ZeroInit)。對于嵌入式系統而言,程序映象都是存儲在Flash存儲器等一些非易失性器件中的,而在運行時,程序中的RW段必須重新裝載到可讀寫的RAM中。這就涉及到程序的加載時域和運行時域。簡單來說,程序的加載時域就是指程序燒入Flash中的狀態,運行時域是指程序執行時的狀態。對于比較簡單的情況,可以在ADS集成開發環境的ARM LINKER選項中指定RO BASE和RW BASE,告知連接器RO和RW的連接基地址。對于復雜情況,如RO段被分成幾部分并映射到存儲空間的多個地方時,需要創建一個稱為“分布裝載描述文件”的文本文件,通知連接器把程序的某一部分連接在存儲器的某個地址空間。需要指出的是,分布裝載描述文件中的定義要按照系統重定向后的存儲器分布情況進行。在引導程序完成初始化的任務后,應該把主程序轉移到RAM中去運行,以加快系統的運行速度。

總結

以上是生活随笔為你收集整理的简单的启动代码 IMPORT |Image$$RO$$Limit|的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。