在用stm32F103C8T6移植Fatfs文件系统时编译报错:..OBJFATFS.axf: Error: L6406E: No space in execution regions with .ANY selector matching cc936.o(.constdata).
与它类似的错误共有78个
最后还有个 ..OBJFATFS.axf: Error: L6407E: Sections of aggregate size 0x3edc8 bytes could not fit into .ANY selector(s).
程序是改mini板(RCT6)的例程
ALIENTEK MINISTM32 实验29 FATFS文件系统实验
已经改了device为stm32f103c8;也改了C/C++中的define为
STM32F10X_MD,USE_STDPERIPH_DRIVER;还改了Debug里flash download为128k,仍出现问题。
同时也参考了
MDK在链接时提示空间不够(No space in execution regions with .ANY selector... )的解决方案总结中的方法但是还是没有解决。
另外Target设置如下需不需要改动?
改这个地方发现还是有问题。
原程序中是这样定义的
[mw_shl_code=c,true]//内存参数设定.
#define MEM_BLOCK_SIZE 32 //内存块大小为32字节
#define MEM_MAX_SIZE 35*1024 //最大管理内存 35K
#define MEM_ALLOC_TABLE_SIZE MEM_MAX_SIZE/MEM_BLOCK_SIZE //内存表大小
[/mw_shl_code]在把MEM_MAX_SIZE改小至1*1024后仍有40个内存不足的错误,并且报错
..OBJFATFS.axf: Error: L6407E: Sections of aggregate size 0x33e84 bytes could not fit into .ANY selector(s).
在尝试继续减小时发现 MEM_MAX_SIZE 大于等于 MEM_BLOCK_SIZE 时就会报内存不足,如下图
而当MEM_MAX_SIZE 小于 MEM_BLOCK_SIZE 时,虽然不会报内存不足的错但显然不太合逻辑。而且MEM_ALLOC_TABLE_SIZE实际为0,在程序中定义了这样一个数组:
[mw_shl_code=c,true]u16 memmapbase[MEM_ALLOC_TABLE_SIZE]; //SRAM内存池MAP[/mw_shl_code]
所以MEM_ALLOC_TABLE_SIZE不能为0,否则会报错
..MALLOCmalloc.c(18): error: #94-D: the size of an array must be greater than zero
如图
求告知应该如何改动?
一周热门 更多>