基本概念:
代碼段(text):顧名思義是代碼存放位置,在STM32中代碼段一般存放於內置FLASH中;
已初始化數據段(data):已初始化數據段會分別體現在FlASH中和RAM中。因爲是全局變量,運行過程中需要進行讀寫操作,因此佔用一段RAM空間。又因爲有初始值,其初始值需要佔用FlASH空間。
未初始化的數據段(bss):bss與data相同的地方時它也是全局變量,運行過程中需要進行讀寫操作,因此佔用一段RAM空間。又因爲沒喲初始值,因此不佔用FLASH空間。
堆空間:STM32使用SylixOS lite版系統,應用堆棧全部由內核堆分配。硬件總內存大小首先分配給數據段(data+bss),剩餘的分配給內核堆,其總大小與使用情況可由free命令查看。
text、data、bss三部分的大小可在bsp生成文件bspstm32f767.siz中查看
資源使用情況:
STM32的資源使用情況及當前的FlASH與RAM的使用情況
FlASH使用情況計算:
不考慮應用程序對flash的額外使用,當前flash完全用於存放系統bin文件,即bin文件大小。
FLASH佔用 = bin文件大小 = test + data
RAM使用情況計算:
當前的ram使用由data、bss、已使用的內核堆三部分組成,空閒的部分爲未使用的內核堆
RAM佔用 = data + bss + 已使用的內核堆