KEIL工程編譯輸出信息中有一個語句“Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=112316 ”
Code:
即代碼域,指編譯器生成的機器指令,這些內容被存儲到ROM區。
RO-data:
Read Only data,即只讀數據域,指程序調用的只讀數據,被存儲在ROM區,例如const關鍵字(C語言)定義的變量就是典型的RO-data。
RW-data:
Read Write data,即可讀寫數據域,指初始化爲“非0值”的可讀寫數據,程序剛運行時,這些數據具有非0的初始值,且運行的時候它們會常駐在RAM區,因而應用程序可以修改其內容。
ZI-data:
Zero Initialie data,即0初始化數據,指初始化爲“0值”的可讀寫數據,它與RW-data的區別是程序剛運行時這些數據初始值全都爲0,而後續運行過程與RW-data的性質一樣,它們也常駐在RAM區,因而應用程序可以更改其內容。定義時被賦予“0值”給該變量進行初始化,若定義該變量時沒有賦予初始值,編譯器會把它當ZI-data來對待,初始化爲0;RW-data和ZI-data在程序運行時放入芯片內部RAM。
佔用FLASH空間的爲:Code,RO-data,RW-data,即ZI-data未初始化不佔用ROM空間,其只在RAM中運行,這也是爲何要區分RW-data和ZI-data的原因吧。