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

Nuttx heap allocation failed: heap-size is zero

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

这会导致内存分配失败。 我该如何调试这个问题?

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

堆大小为零,因为从未向堆中添加任何内容。您可以看到这一点,因为内存区域的数量 (mm_nregions) 也为零。

内存区域由 mm_addregion() 在 mm_initialize() 中添加到堆中;保证至少调用一次以添加至少一个内存区域。如果内存区域的数量为零,则此函数因某种原因失败。

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

所以您必须查看 up_allocateheap() 以了解正在传递的内容。或许在 mm_addregion() 上设置一个断点,以确切了解它不满意的地方。

非常感谢您的回答。

我能够解决问题。

在我的程序中 stm32_boot.c 和 stm32_appinitialize.c 中有一点 mix-up(copy-paste 错误)。

此外,我还没有在 menueconfig -> RTOS 功能 -> RTOS 挂钩中激活 "BOARD_LATE_INITIALIZE"。

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