发布于 2019-06-09 10:47:33
堆大小为零,因为没有任何内容添加到堆中。您可以看到这一点,因为内存区域(mm_nregions)的数量也是零。
内存区域由mm_initialize()中的mm_addregion()添加到堆中;保证至少调用一次才能添加至少一个内存区域。如果内存区域的数量为零,则此函数会因某种原因而失败。
函数失败的唯一方式就是传递错误的参数。参数的传递基于您正在使用的up_allocateheap()实现所提供的参数。
因此,您必须查看up_allocateheap()以了解传递的内容。可能会在mm_addregion()中设置一个断点,以查看它到底对什么不满意。
发布于 2019-06-10 22:02:48
非常感谢你的回答。
我能够解决这个问题。
在我的程序中,stm32_boot.c和stm32_appinitialize.c有点混淆(复制-粘贴错误)。
此外,我还没有激活菜单中的"BOARD_LATE_INITIALIZE“配置->实时操作系统功能->实时操作系统挂钩。
因此,GPIO初始化函数是在堆初始化之前调用的,这导致了我在问题中描述的错误。
https://stackoverflow.com/questions/56509952
复制相似问题