1. 程式人生 > >stm32計算編譯完的程式的大小及資料儲存起始位置判斷

stm32計算編譯完的程式的大小及資料儲存起始位置判斷

一、keil編譯完後會產生以下資料:


其中,code代表可執行程式碼,程式中定義的所有函式都位於此處;

RO-data代表可讀資料,程式中所有的全域性常量資料和字元都位於此處;

RW-data代表已經初始化的讀寫資料,程式中所有定義並且初始化的全域性變數和靜態變數均位於此處;

ZI-data代表未初始化的讀寫資料,程式中定義了但是沒有初始化的全域性變數和靜態變數位於此處;

二、在map檔案的最後可以看到如下資料


從這個表裡可以看到ROM SIZE裡包含了Code RO-data RW-data,但是沒有zi-data。是因為zi-data的值沒有在程式裡進行初始化,所以上電執行後會直接被賦值為0,所以這個值也就沒有必要儲存的ROM空間裡了。

三、程式空間大小計算

7828byte=0x1E94byte;

那麼資料儲存從0x800 0000+0x1E94=0x800 1E94開始都是安全的。