Keil MDK編譯器下檢視佔用Flash和SRAM空間大小

Sun_Shine_999發表於2018-04-10

在Keil MDK編譯器編譯後,資訊欄都會顯示編譯情況,這其中就包含了FLASH跟SRAM的資訊。如下圖所示,

這裡寫圖片描述

/***********************************************************************************/

檢視FLASH跟SRAM的佔用空間問題主要看下面的語句。

Program Size: Code=29864 RO-data=123592 RW-data=60 ZI-data=3900

/***********************************************************************************/

其中 要著重注意的是Code、RO-data、RW-data、ZI-data所代表的意思

Code:表示程式所佔用 FLASH 的大小( FLASH)。
RO-data:即 Read Only-data, 表示程式定義的常量,如 const 型別( FLASH)。
RW-data:即 Read Write-data, 表示已被初始化的全域性變數( SRAM)
ZI-data:即 Zero Init-data, 表示未被初始化的全域性變數(SRAM)

/***********************************************************************************/

那麼FLASH和SRAM佔用情況的計算方式如下所示:

flash = Code + RO-data + RW-data = 29864 + 123592 + 60 = 153516 bytes

sram = RW-data + ZI-data = 60+ 3900= 3960bytes

還有一個要特別注意的是程式的大小不是.hex檔案的大小,而是編譯結果的Code+RO-data。

在程式初始化的時候,RW-data會從FLASH中拷貝到RAM中。
/***********************************************************************************/

相關文章