调试发现进入hardFault
单步调试发现
pxEnd->xBlockSize = 0;
在这里进入hardFault
查看
pxEnd 值发现为0x2002xxx
感觉超过ram大小了
最近调整了ld文件
/* Specify the memory areas */
MEMORY
{
RAM_ESTACK (xrw) : ORIGIN = 0x20000000, LENGTH = 4K
RAM (xrw) : ORIGIN = 0x20001000, LENGTH = 143K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
}
我把ESTACK 大小从1k调整为4k(LENGTH = 4K)
并调整了RAM的起始基址(ORIGIN = 0x20001000,)
结果出现问题。
通过检查发现 Length 也应该修改,修改为140k
此处错误大小识别heap设置超出ram空间出错。