Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
固件编译出来的bin文件过大,有什么办法缩小些?
发布于 2021-11-08 22:58:24 浏览:5209
订阅该版
我使用的stm32的一个bsp,增加了比较多我自己的应用代码,现在编译出来的固件bin文件大小超出了所能接受的范围,大家有没有什么办法可以在尽量不删除我的应用代码的前提下,减小bin文件的大小?
查看更多
李肯陪你玩赚嵌入式
认证专家
2021-11-09
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
在进行优化之前,建议你通读下RRT官方提供的关于程序内存分布的一个[介绍文档](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/basic/basic?id=rt-thread-%e7%a8%8b%e5%ba%8f%e5%86%85%e5%ad%98%e5%88%86%e5%b8%83)。 有这个文档的基础之后,我来谈谈我的思路: 1.首先如果你使用的是gcc编译器的话,务必保证编译选项开启了gc-sections机制(默认是关的),具体可以参考之前我分享的[一篇文章](https://club.rt-thread.org/ask/article/3134.html); 2.由于固件bin大小我们可以通俗认为就是ROM所占的大小,而ROM的大小包含了 Text Code 及 RO-data, 还有RW Data;所以要减小bin文件只能从这三方面入手; 3.代码段的优化, 1)段回收,减少不必要的**垃圾代码**; 2)选中恰当的编译优化等级,比如常用的Os级别,再严格点上O3,但上O3有风险,曾经试过写的代码用Os没问题,一上O3就各种逻辑问题,不可能变成了现实;总的来说,O3优化对代码的质量要求比较高; 3)代码模块裁剪,这个就是如果有用了一些可有可无的组件,直接就裁掉;还有一些你用不到的功能特性,可以适当裁剪; 4.RO-data的优化:这块主要针对的是全局已初始化的,带const修饰的全局变量,全局数组这些;这块可操作行不大; 5.RW-data的优化:这块主要是已初始化的非0的全局变量/全局数组;这块倒是可以把初始化的部分使用init代码来进行,把这部分RW-data转换为ZI-data,这样是可以减少ROM size,但需要注意的是,不是每个RW-data都可以这样玩。 以上几点建议,可以参考下,希望可以帮助到你。
4
个回答
默认排序
按发布时间排序
RTT_逍遥
认证专家
2021-11-08
https://github.com/supperthomas
@scan 可以看下官方文档,写的已经很详细了。 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/application-note/system/optimization/Optimize-code-size/an0049-optimize-code-size
出出啊
2021-11-09
恃人不如自恃,人之为己者不如己之自为也
放弃标准版系统,换 nano 版。不用设备框架能节省不少空间。
小小李sunny
2021-11-09
这家伙很懒,什么也没写!
启用最高优化等级-O3能缩小不少,实在不行只能裁剪了,把finsh等不需要的功能组件关掉。
撰写答案
登录
注册新账号
关注者
0
被浏览
5.2k
关于作者
scan
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread使用hwtimer不工作的问题
2
rt-thread中STM32L431 的LPUART1 open失败的原因
3
STM32L031 使用外部时钟卡死的问题,不能正常启动的原因
4
NXP MCXA156测评之 HWTIMER
5
MCAX-156 CAN测评
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
GD32
ADC
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
12
个答案
3
次被采纳
踩姑娘的小蘑菇
8
个答案
3
次被采纳
xiaorui
3
个答案
3
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
12
个答案
1
次被采纳
本月文章贡献
arthurly888
5
篇文章
2
次点赞
catcatbing
3
篇文章
5
次点赞
jinchanchan
3
篇文章
5
次点赞
lizimu
2
篇文章
9
次点赞
alight
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部