[其他] 资源受限MCU Flash空间占用优化

[复制链接]
2846|8
 楼主| tpgf 发表于 2023-11-13 09:47 | 显示全部楼层 |阅读模式
资源受限MCU Flash空间占用优化步骤:

避免重复功能,排查软件工程中,重复功能的代码片段,抽象出来,重新进行封装;
减少内联函数inline,内联函数过大且过多的调用无疑会增加代码量,占用过多的flash,如果代码运行速度要求不高类似这样的内联函数,尽量改成函数调用;
开启最高优化,优化时应倾向于速度和代码量的平衡,不能一味地缩小代码量,因为这很可能会出现意想不到的问题,特殊源文件也可开局部优化功能;
减少运行库调用,编译器自带的运行库一般都过大而复杂,例如常用的printf调试打印,将会占用大量flash空间,因此设计代码时,应通过宏配置可禁掉类似printf的调试代码或直接通过UART发送字符功能打印调试信息;
自行实现标准库函数,简单的库功能如:memcpy、memset等功能自行实现也会减少标准库调用而导致占用过多的flash空间;
使用MCU本身的硬件特性,如果支持,尽量使用MCU的硬件乘法器或者浮点运算单元,这样会比直接进行乘法或者浮点运算运行减少很多代码量;
定义恰当的变量类型:C编译器支持变量的类有char、int、long等,定义恰当的变量类型,可以有效的减少代码和数据的长度,同时也能提高运行效率。
————————————————
版权声明:本文为CSDN博主「wangYH.air」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40297883/article/details/133872625

yangxiaor520 发表于 2023-11-14 07:47 来自手机 | 显示全部楼层
代码优化,减少不必要的存储空间占用。
 楼主| tpgf 发表于 2023-12-5 12:50 | 显示全部楼层
给大家分享的这个方法应该适用于所有单片机
nawu 发表于 2023-12-5 15:13 | 显示全部楼层
如果开启最高优化 很多结果就不可测了
tfqi 发表于 2023-12-5 15:54 | 显示全部楼层
无关紧要的调试用的代码完全可以去掉了
gwsan 发表于 2023-12-6 09:07 | 显示全部楼层
是调用库函数节省空间还是自己写的函数节省空间呢
aoyi 发表于 2023-12-6 10:00 | 显示全部楼层
这个问题在选型的时候就应该考虑到
zljiu 发表于 2023-12-6 11:01 | 显示全部楼层
请问一下什么叫做内联函数的  它的作用是什么呢
caigang13 发表于 2023-12-6 11:13 来自手机 | 显示全部楼层
所以软件架构设计很重要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2416

主题

17757

帖子

21

粉丝
快速回复 在线客服 返回列表 返回顶部