Error: L6406E: No space in execution regions with .ANY selector matching通过map文件缩小代码量

本文探讨了解决芯片存储资源不足的方法,如调整heap和stack大小,检查数组声明和printf使用,参考芯片手册调整内存分配。建议根据实际需求和map文件分析来优化代码以减少无用库并减小程序大小。
摘要由CSDN通过智能技术生成

芯片FLASH或者RAM不够了

有人推荐去启动文件里面更改heap 或者steak

不建议 堆栈改小了局部变量多了,函数嵌套过多容易堆栈逸出

尽量细节修改

没有link成功的话,map文件虽然会生成 但是只生成了Section Cross References

和 Removing Unused input sections from the image. 部分 ,看不出来具体的代码大小

去模仿棒里面把ROM和RAM改大,

再编译就成功了

FLASH中的被占用的空间为:Code + RO Data + RW Data

芯片内部RAM使用的空间为: RW Data + ZI Data

自己去看使用的芯片手册的FLASH和RAM是多少

如果相差很大,建议重新选芯片

相差不大可以再改改

map文件里面可以看到

Image Symbol Table【变量占比】

Image component sizes 【每个文件的总计】

可能是某个数组声明太大了,printf函数也可以去掉,尽量根据项目需要修改

一般来说没有用的库不会编译到生成代码里面,尽量看变量声明有没有可以减小的空间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值