STM32——獲取Flash學習的空間占用


  這段時間使用STM32F103C8T6芯片做項目,要使用芯片中的Flash存儲用戶信息,其Flash有128K Bytes(其中64KB還是未檢測,但是可用的),很大一部分用於存儲程序代碼以及相關的變量等,剩下的可以作為斷電保存數據的存儲,要知道什么位置可用,需要知道代碼的所占用的空間大小。

  燒寫到單片機所占用的空間,可以看編譯結果的中的Program Size項獲取,之前對Keil編輯后的Program Size比較困惑,它們代表了些什么,這回有了了解。

圖1 存儲模式示意

  • Code

代碼占用空間,占用Flash空間;

  • RO-data (Read Only)

只讀常量,如const類型的常量,也占用Flash空間;

  • RW-data (Read Write)

可讀寫數據,一般是全局變量,先要保存在Flash中,初始化后,再由Flash拷貝到RAM,占用Flash空間和RAM空間;

  • ZI-data

棧空間(Stack)及堆空間(Heap)所需的空間,申請的內存空間用於局部變量進行堆棧處理,只占RAM空間。

舉例:

  Program Size: Code=22640 RO-data=2856 RW-data=1280 ZI-data=3464 (單位:字節)

  Flash size:Code + RO-data + RW-data=22640+2856+1280=26776字節;

  RAM size:RW-data + ZI-data=1280+3464=4744字節;

  知道了這些后,就可以合理安排Flash的空間了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM