基本概念:
代码段(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 + 已使用的内核堆