答案 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初始化函数,这导致了我在问题中描述的错误。