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

 

posted @ 2018-05-14 16:43  GaoLab  阅读(2124)  评论(0编辑  收藏  举报