A-A+

STM32——获取Flash学习的空间占用

2017年10月28日 STM32 暂无评论 阅读 103 views 次

这段时间使用STM32F103C8T6芯片做项目,要使用芯片中的Flash存储用户信息,其Flash有128K Bytes(其中64KB还是未检测,但是可用的),很大一部分用于存储程序代码以及相关的变量等,剩下的可以作为断电保存数据的存储,要知道什么位置可用,需要知道代码的所占用的空间大小。

烧写到单片机所占用的空间,可以看编译结果的中的Program Size项获取,之前对Keil编辑后的Program Size比较困惑,它们代表了些什么,这回有了了解。

 

图 存储模式示意

  • 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的空间了。

 

 

标签:

给我留言