Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_md.o
Error: L6406E: No space in execution regions with .ANY selector matching startup_stm32f10x_md.o(STACK).
移植程序的报错解决
1、错误提示
Error: L6406E: No space in execution regions with .ANY selector matching tartup_stm32f10x_md.o(STACK).
…
2、原因分析
在移植FreeRTOS操作系统时,完成后最终编译提示了如下错误:
Error: L6406E: No space in execution regions with .ANY selector matching tartup_stm32f10x_md.o(STACK).
大致看了下这些英文报错提示,大概的意思就是说堆空间不够,于是就去查了下该芯片的数据手册,发现我的芯片确实是很少存储容量。

最大只能用到20k的SRAM。
3、解决方法
.s 启动文件里面的堆栈大小默认可以不用修改。
在工程里面找到这个FreeRTOSConfig.h头文件,发现定义的堆大小确实是比我的芯片大了。

虽然使用的芯片有20K,但是实际上程序定义其它的变量也需要用到该内存,无法用到极限值,所以定义时需要根据工程实际情况来定义。
比如说,可以定义为15K,此时编译代码能通过则说明该大小空间没有问题,如果还是不行的话,继续改小该值直到能编译通过为止即可解决。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)