MDK编译生成的BIN文件占用FLASH大小
程序员文章站
2022-05-23 23:28:01
...
STM32烧写Flash时用到的BIN文件大小
在MDK中,通过fromelf.exe命令将hex文件转换成bin文件时,所占用的Flash空间是多大?
从哪里看呢?
1、资源浏览器中通过查看文件属性可以看到
上图中,大小一栏中的数字3716,即是BIN文件所占用Flash空间的大小。
2、相同功能的浏览器也可以看到
在TotalCommander中也同样可以通过文件的属性看到BIN文件的大小。
可以看到,BIN文件的大小同样是3716字节。
3、MDK编译后的信息中通过计算得到
compiling stm32f1xx_hal_cortex.c...
compiling system_stm32f1xx.c...
compiling stm32f1xx_hal_flash_ex.c...
compiling stm32f1xx_hal_pwr.c...
compiling stm32f1xx_hal_flash.c...
linking...
Program Size: Code=3340 RO-data=360 RW-data=16 ZI-data=1088
FromELF: creating hex file...
After Build - User command #1: fromelf.exe --bin -o "IAP_USER-APP_CubeMX\IAP_USER-APP_CubeMX.bin" "IAP_USER-APP_CubeMX\IAP_USER-APP_CubeMX.axf"
"IAP_USER-APP_CubeMX\IAP_USER-APP_CubeMX.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:14
如上所示,
Code = 3340 :是代码占用3340 的空间
RO-data = 360 : Read Only 表示只读常量,占用360字节,如const型,字符串常量
RW-data = 16 : RW-data 表示已经初始化的可读写变量,占用16字节
ZI-data = 1088 :ZI-data表示未初始化的可读写变量,ZI-data不占用FLASH。
烧写的时,占用FLASH的段为: Code + RO-data + RW-data
程序运行时,芯片内部RAM占用的空间为:RW-data + ZI-data
上电后,初始化时RW-data从FLASH拷贝到RAM。
结论:
最方便快捷的观察渠道,还是通过资源浏览器类的工具直接获取。
参考文章:
https://blog.csdn.net/kuangdoushi/article/details/69499933