背景:一个项目基于STM32F407开发,在实现一个功能模块时需要申请一大块内存用于数据存储,为了避免后期内存不足,事前需要做内存统计。
通过keil编译,我们可以看到目前已使用flash情况:
下面我们一一解读:
-
Code:是程序中代码所占字节大小;
-
RO-data:程序只读的变量,也就是带const的,和已初始化的字符串等;
-
RW-data:已初始化的可读写全局/静态变量;
-
ZI-data:未初始化的可读写全局/静态变量;
使用的flash为:Code + RO-data + RW-data
本程序已使用flash = 167168 + 7100 + 1544 = 175812B = 171k
通过以上计算,代码生成的bin文件和计算的flash大小一致。