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