ARM分散載入檔案

2021-10-10 22:59:15 字數 1586 閱讀 1484

可以將**放入不同的儲存空間。

了解分散載入檔案之前,首先需要了解code、ro-data、rw-data、zi-data。

#define    num    (0x2000)               

/*ro-data*/

char

const flage =5;

/*ro-data*/

char str=

"str"

;/*rw-data*/

char a;

/*zi-data*/

下圖為keil的map檔案

rw-data既佔rom,又佔ram原因:(rw-data與zi-data儲存不同原因)

zi段資料:程式只需要根據編譯器分配給zi段的基位址以及大小,將對應的ram全部初始化為0即可。

rw段資料:首先編譯器需要將rw段資料的所有初始值儲存在rom中,程式在執行時,再將rom中儲存的資料搬到ram中。因此,rw段資料兩者都占用空間,並且大小相同。

zi段與rw段資料初始化

在執行main()函式之前,程式會執行__main()函式。該函式只要包括_main()與_rt_entry()函式

_main():完成**與資料的拷貝,將zi段資料清零。

_rt_entry():將堆、棧等初始化。之後該函式會跳轉到main()函式分散載入檔案由乙個載入時域與多個執行時域構成。基本結構如下圖:

ARM分散載入檔案

一 原理 arm的聯結器提供了一種分散載入機制,在連線時可以根據分散載入檔案 scf檔案 中指定的儲存器分配方案,將可執行映象檔案分成指定的分割槽並定位於指定的儲存器實體地址。這樣,當嵌入式系統在復位或重新上電時,在對cpu相應暫存器進行初始化後,首先執行rom儲存器的bootloader 根據連線...

ARM分散載入檔案

摘要 從arm elf目標檔案主要構成出發,詳細介紹了分散載入的基本原理 分散載入檔案的語法 分散載入時聯結器生成的預定義符號及要重新實現的函式等 以定位目標外設和定義超大型結構體陣列兩項應用案例加以說明,並給出完整的工程例項和bootloader 這些都已經在實際工程中多次應用和驗證,是筆者實際工...

關於分散載入檔案

分散載入 scatlerloading 即工程裡的.scf檔案。在scatterfile中可以為每乙個 或資料區在裝載和執行時指定不同的儲存區域位址,scatlertoading的儲存區塊可以分成二種型別 裝載區 當系統啟動或載入時應用程式的存放區。執行區 系統啟動後,應用程式進行執行和資料訪問的儲...