●Code
經編譯器編譯後的所產生的bit或hex檔,會被存到Flash或ROM裡面.
●RO-data (Read-Only data)
程式裡宣告為常數的變數,存在ROM裡.
eq. const int a = 100;
●RW-data (Read-Write data)
程式裡宣告帶有初始值的變數,存在ROM裡,執行時會複製到RAM.
eq. int a = 100;
●ZI-data (Zero Initialie data)
程式裡宣告無初始值的變數,只佔RAM.
eq. int a;
ROM = Code + RO +RW
RAM = RW + ZI
----------------------------------------------------------------------------------
補充:
1. 函式(function)內無初始值的變數會被放在ZI-data,所以當進入函式(function)時會從RAM中的棧空間(Stack)申請空間給區域變數.
----------------------------------------------------------------------------------
ARM映像文件的組成:
1. ARM映像文件就是指燒錄到ROM中的bin或hex檔,也成為image,其包含了RO和RW.
2. image不包含ZI,因為ZI都是0.
嵌入式程序存儲結構及IAR段類型說明
IAR彙編指令SFB和SFE
IAR中如何定向把數組和函數放在指定的地址單元
參考:第48章 MDK的编译过程及文件类型全解
技術筆記 STM32 memory usage
#Keil#C#8051#RW#RO#ZI
沒有留言:
張貼留言