我在STM32F107VC上使用了STM32F107VC V6.1.1并获得频繁的malloc错误。堆区域是在链接器脚本中定义的,但经过几次分配之后,它一直停留在pvPortMalloc()的这个循环中:
while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) )
{
pxPreviousBlock = pxBlock;
pxBlock = pxBlock->pxNextFreeBlock;
}
pxBlock: 0x20002300
pxPreviousBlock: 0x20002300
pxNewBlockLink: 0x00
xHeapHasBeenInitialised: 0x01链接器脚本:
/* Entry Point */
ENTRY(Reset_Handler)
/* Highest address of the user mode stack */
_estack = 0x20010000; /* end of 64K RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0; /* required amount of heap */
_Min_Stack_Size = 0x200; /* required amount of stack */
/* Specify the memory areas */
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K
}
...这怎么可能呢?
发布于 2014-01-28 00:28:39
这可能是由heap_2.c中的碎片造成的。尽管拨款数额很小,但其行为是一致的。使用heap_4.c解决了这个问题。
https://stackoverflow.com/questions/18355914
复制相似问题