STM32 keil5编译优化

本文介绍了如何通过STM32 Keil5的编译优化选项来减小程序占用的Flash空间。勾选使用微库、设置优化级别为Level 3以及启用One ELF Section per Function功能,可以显著减少代码大小。实验结果显示,优化后代码大小从4152字节降至1376字节,并通过map文件对比展示了优化的细节,包括删除未使用的函数,从而减少了3760字节的程序大小。
摘要由CSDN通过智能技术生成

本来是写个IAP程序,Flash中只规划了4K字节,但是代码编写完后有6k,所以寻找优化方案,优化完在1.7k左右。

STM32 keil5编译优化,可以勾选一下几项:

1、Options for Taeget-->Target

勾选使用微库

 

2、Options for Taeget-->Target

①选择优化级别Level 3(-O3)

②勾选One ELF Section per Function

3、关于One ELF Section per Function的作用特别说明下:

①编译器在处理一个 c 文件的时候呢,如果这个选项不选,那么这个C文件中的所有函数在编译后只会产生一个叫 .text 的输出节:

AREA ||.text||, CODE, READONLY, ALIGN=2 
如果选了呢,那么每个函数将会产生一个输出节,如果你用C写了一个叫PRTL_HeadGet()的函数,那么编译器将会产生一个叫 i.PRTL_HeadGet 的输出节,具体如下:
AREA ||i.PRTL_HeadGet||, CODE, READONLY, ALIGN=2
 PRTL_HeadGet PROC
勾选后,编译器产生的输出节,粒度小多了,便于找到没有使用的函数,将它从最后输出文件中删除。这样,你最后产生的可执行文件大小将会变小。

②代码大小对比:

没勾选:Program Size: Code=4152 RO-data=216 RW-data=36 ZI-data=6148  

勾选后:Program Size: Code=1376 RO-data=200 RW-data=0 ZI-data=6144  

③map文件对比:

工程右击open map file.

没勾选:

Removing Unused input sections from the image.该部分内容是去除项目中没有使用的函数。没勾选前是按照文件优化的。

====================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值