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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM