對Keil 5 編譯記憶體資訊的解析說明

2021-10-24 02:53:33 字數 1324 閱讀 9628

keil 編譯記憶體資訊:

program size: code=54734 ro-data=1006 rw-data=744 zi-data=7168

詳細說明一下 1、code     2、 ro-data     3、rw-data    4、zi-data

1、code 是**占用的空間。

2、ro-data   唯讀常量的大小,如const型。

3、rw-data  可讀可寫的變數,就是初始化時候就已經賦值了的,rw + zi就是你的程式總共使用的ram位元組數。

4、zi-data  沒有初始化的可讀寫變數的大小,就是程式中用到的變數並且被系統初始化為0的變數的位元組數,keil編譯器預設是把你沒有初始化的變數都賦值乙個0,這些變數在程式執行時是儲存在ram中的。

mcu執行過程是先將rw從rom中搬到ram中,因為rw是變數,變數不能存在rom中。然後將zi所在的ram區域全部清零,因為zi區域並不在image中,所以需要程式根據編譯器給出的zi位址及大小來將相應得ram區域清零。zi中也是變數,同理:變數不能存在rom中。rom中的指令完成了這兩項工作後c程式才能正常訪問變數。否則只能執行不含變數的**。

用keil編譯器實際測試學習。(借助別人的例子)

1、目前我的這個工程編譯後記憶體分配大小如下:

2、現在我在程式裡面加入乙個int   program_size[10]= ; 乙個 int 占用4個位元組。如下圖所示,rw-data增加了40個位元組,因為這個陣列已經初始化了,**放到rw-data。

3、如果是加入乙個int   program_size[10];陣列不進行已經初始化,如下圖所示,zi-data區增加40個位元組。

3、如果是加入乙個int   program_size[10]=;陣列進行已經初始化都是0,如下圖所示,zi-data區增加40個位元組,說明初始化都是0和進行已經初始化,都是放zi-data區。

定義乙個陣列

keil5 編譯不成功

學習使用stm32標準庫的時候,會使用各種各樣的標頭檔案,使用標頭檔案時要在keil介面魔術棒配置裡面新增檔案路徑,我在模仿編寫例程時,沒有把所有標頭檔案路徑包含進去,導致編譯不成功 另外就是檔案路徑包含了中文,keil5也會找不到相關標頭檔案。我挺佩服st的韌體庫的,利用巨集定義大大增加了程式的可...

keil5除錯常見的問題

唉 真無語 我們總想著跑快點卻忘了 自己走路還不是很穩 在學stm32時候 總是會出現各種問題,這麼多 你不可能 心算就能算出來 出了問題 所以 會除錯就顯得特別的重要,但是我一開沒去研究除錯 導致遇到問題時 只能乾瞪眼 一點點對比 猜測 這樣做實在是浪費時間 所以這次寫一篇文章 記錄下自己的學習之...

修復Keil5的選單欄字型

用keil5已經相當長的時間了,一直覺得keil5的選單欄字型看著不順眼,應該只有 座才會注意到吧?特別是把windows 7主題設定為經典主題之後,系統字型已經變為宋體,搞開發的電腦螢幕解析度又不高,且dpi為96的硬體條件下,用宋體做系統字型比較清晰。因為宋體在字型大小為9 13這個範圍時,使用...