首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeRTOS分配误差

FreeRTOS分配误差
EN

Stack Overflow用户
提问于 2013-08-21 11:13:28
回答 1查看 2.7K关注 0票数 5

我在STM32F107VC上使用了STM32F107VC V6.1.1并获得频繁的malloc错误。堆区域是在链接器脚本中定义的,但经过几次分配之后,它一直停留在pvPortMalloc()的这个循环中:

代码语言:javascript
复制
while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) )
{
    pxPreviousBlock = pxBlock;
    pxBlock = pxBlock->pxNextFreeBlock;
}

pxBlock: 0x20002300
pxPreviousBlock: 0x20002300
pxNewBlockLink: 0x00
xHeapHasBeenInitialised: 0x01

链接器脚本:

代码语言:javascript
复制
/* 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
}

...

这怎么可能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-28 00:28:39

这可能是由heap_2.c中的碎片造成的。尽管拨款数额很小,但其行为是一致的。使用heap_4.c解决了这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18355914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档