STM32記憶體管理和mdk儲存段劃分

2021-09-01 03:01:25 字數 379 閱讀 2086

1. mdk下code,ro-data,rw-data,zi-data這幾個段:

code是儲存**的。

ro-data是儲存const常量和指令的。

rw-data是儲存初始化不為0的全域性變數和全域性陣列的。

zi-data是儲存未初始化的或初始化值為0的全域性變數和全域性陣列的。

2. 程式編譯完成後:

flash = code + ro-data + rw-data

ram = rw-data + zi-data

3.注意:

mdk程式中,zi-data占用特別大,可以通過查詢程式編譯後的.map檔案。檢視各檔案編譯後所佔flash和ram的大小,從而分析出程式中是否有全域性變數定義過多或全域性陣列定義過大的問題。

STM32記憶體管理

這是我的第一篇文章,寫的不好請多多見諒 針對stm32f429來進行講解,其他型號的也可以參照學習 相信很多新手在記憶體管理這個程式中比較疑惑,為什麼分配那麼大,可不可以更改大小?但是改大了編譯會錯誤又是為什麼?這裡將對大家心中的疑惑進行講解,並且教大家進行計算。當該項值為 0 的時候,代表對應的記...

讓MDK支援printf(基於stm32)

1 在option target 選項框裡選 use microlib 選項 2 在將要呼叫printf 的函式的 c檔案中包含標頭檔案 include stdio.h 3 在該c 檔案中新增如下函式 int fputc int ch,file f usart senddata usart1,u8 ...

stm32記憶體分配

原文 1 棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等,其操作方式類似 於資料結構中的棧。2 堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式結束時可能由作業系統 分配 方式類似於資料結構中的鍊錶。3 全域性區 靜態區 static 全域性變數和靜...