前言
我在使用STM32F4的FreeRTOS做项目实验过程中遇到报错:提示内存大小不足以存储当前代码,简单的说就是:芯片的存储空间不够
一、错误分析
linking…
…\OBJ\LED.axf: Error: L6406E: No space in execution regions with .ANY selector matching heap_4.o(.bss).
…\OBJ\LED.axf: Error: L6406E: No space in execution regions with .ANY selector matching spi.o(.bss).
…\OBJ\LED.axf: Error: L6406E: No space in execution regions with .ANY selector matching malloc.o(.bss).
。。。。。。
…\OBJ\LED.axf: Error: L6406E: No space in execution regions with .ANY selector matching spi.o(.data).
…\OBJ\LED.axf: Error: L6407E: Sections of aggregate size 0x12554 bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 31 error messages.
“…\OBJ\LED.axf” - 31 Error(s), 3 Warning(s).
Target not created.
Build Time Elapsed: 00:00:17
错误原因:我是用到了 malloc 内存管理,申请了大量空间,但我再把想要的程序都移植到这个工程中,就显示报错。
二、解决方法
找到 malloc.h
文件,将最大管理内存
先改小,然后再改大选择合适的。比如我这里先改成20K,也就是(20*1024)就能正常运行,然后我有改成了40K就有报错,说明最大管理内存不能超过40K,否则就报错;其次改成了35K就能正常运行了。
最大管理内存改为 35K,根据自己code的情况来决定
最后就解决错误了!
三、其它报错原因
将大容量的芯片程序移到小芯片容量程序可能也会报错,比如原程序是在STM32F103VET6这种大容量芯片移植到STM32F103RBT6这块中等容量的芯片:
STM32F103VET6:FLASH size 512kb RAM : 64Kb
STM32F103RBT6:FLASH size 128Kb RAM : 20Kb
这里很明显存储大小都不一样,也可能会报错文章来源:https://www.toymoban.com/news/detail-730739.html
当然还有其它的错误原因,遇到问题先看是什么原因导致报错的再进行度娘解决。文章来源地址https://www.toymoban.com/news/detail-730739.html
到了这里,关于Error: L6406E: No space in execution regions with .ANY selector matching xxx.o(.xxx).的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!