Nuttx堆分配失败:堆大小为零

时间:2019-06-08 20:35:37

标签: embedded heap-memory nuttx

我想在mm_heap上分配一些内存,但是它的大小为零: debug mm_heap

这将导致内存分配失败。 如何调试此问题?

作为参考,我在STM32F765上使用Nuttx。

2 个答案:

答案 0 :(得分:3)

堆大小为零,因为没有任何内容被添加到堆中。您可以看到此信息,因为存储区域(mm_nregions)的数量也为零。

通过mm_initialize()中的mm_addregion()将内存区域添加到堆中;确保至少调用一次以添加至少一个存储区域。如果内存区域的数量为零,则该函数由于某种原因而失败。

该函数失败的唯一方法是传递错误的参数。参数的传递基于您正在使用的up_allocateheap()的实现所提供的参数。

因此,您必须查看up_allocateheap()以了解正在传递的内容。可能在mm_addregion()处设置了一个断点,以查看其不满意之处。

答案 1 :(得分:0)

非常感谢您的回答。

我能够解决问题。

我的程序中stm32_boot.c和stm32_appinitialize.c有点混淆(复制粘贴错误)。

我还没有在menueconfig-> RTOS功能-> RTOS挂钩中激活“ BOARD_LATE_INITIALIZE”。

因此,在初始化堆之前调用了GPIO初始化函数,这导致了我在问题中描述的错误。