OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4388|回复: 1

基于STM32CUBEIDE平台,如何缩小生成的hex文件大小?

[复制链接]

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
金钱
2107
注册时间
2017-2-11
在线时间
307 小时
发表于 2020-11-23 17:19:38 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 jiangyy 于 2020-11-23 17:45 编辑

  用KEIL5软件做工程,编译的hex文件大概在380kb大小,将工程移植到STM32CUBEIDE上,编译的hex文件大小在992kb大小,将近 2.6倍的大小,查看内存数据,发现cc936.c很占用内存。如果做IAP升级的话,就无法满足我目前的需求。贴友们有谁知道如何缩小STM32CUBEIDE上编译的hex文件大小?

hex大小

hex大小

内存占用

内存占用
截图20201123174437086.jpg

最佳答案

查看完整内容[请看2#楼]

FATFS 移植的过程中,主要用到三个文件:ff.c、diskio.c、ffconf.h。移植FATFS不需要过多的操作,过程很是方便,步骤为: [*]补全 diskio.c 中的存储介质底层驱动文件。(一般为SD卡、SPI-Flash,直接copy别人的就行) [*]修改 ffconf.h 中的配置。包括 磁盘数目、文件名语言、存储介质的块大小。 [*]实例化 逻辑磁盘的结构体FATFS、文件对象结构体FIL(这两个实例化对象占用RAM,大小取决于 ffconf.h 中配置的存储介质的块大 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2107
金钱
2107
注册时间
2017-2-11
在线时间
307 小时
 楼主| 发表于 2020-11-23 17:19:39 | 显示全部楼层

FATFS 移植的过程中,主要用到三个文件:ff.c、diskio.c、ffconf.h。
移植FATFS不需要过多的操作,过程很是方便,步骤为:

  • 补全 diskio.c 中的存储介质底层驱动文件。(一般为SD卡、SPI-Flash,直接copy别人的就行)
  • 修改 ffconf.h 中的配置。包括 磁盘数目、文件名语言、存储介质的块大小。
  • 实例化 逻辑磁盘的结构体FATFS、文件对象结构体FIL(这两个实例化对象占用RAM,大小取决于 ffconf.h 中配置的存储介质的块大小)
  • 使用 f_mount 挂载磁盘,使用 f_open、f_read、f_write、f_opendir、f_readdir、f_closedir、f_size、f_mkdir、f_unlink、f_rename、f_mkfs、f_getlabel、f_setlabel 等函数对磁盘进行操作。
移植好后编译,发现占用的 Flash 和 RAM 资源过多。


ROM 占用过多的为 cc936.c,占用170多KB。对于Flash大小只有 128/64KB 的MCU来说肯定是不够用的。

cc936 是对中文文件名的支持包,可以不要,只使用英文文件名。

将 ffconf.h 中的 #define    _USE_LFN,由3改为0(建议直接打开.ioc文件,图形设置),移除掉语言包的支持,修改后的文件系统只支持英文文件名。

Tips:cc936.c 中的数据类型均为const,所以也可以编译好后放入外部存储介质,不占用MCU-Flash。

编译后成功缩小了一倍大小,接近keil5工程的hex大小。如果继续缩小hex文件大小,就要考虑不使用动态内存。


https://blog.csdn.net/Mark_md/article/details/108386706

借用了这位贴友的帮助,希望后期对大家有帮助。喜欢点个赞哦!



编译后内存占用情况

编译后内存占用情况

编译后_USE_LFN大小

编译后_USE_LFN大小

设置_USE_LFN大小

设置_USE_LFN大小
20200904085005407.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-14 13:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表