rt_system_heap_init函数加入多块物理内存是否有计划解决

发布于 2021-04-12 10:43:34

在使用 memheap 堆内存时,必须要在系统初始化的时候进行堆内存的初始化,可以通过下面的函数接口完成:

rt_err_t rt_memheap_init(struct rt_memheap  *memheap,
                        const char  *name,
                        void        *start_addr,
                        rt_uint32_t size)

如果有多个不连续的 memheap 可以多次调用该函数将其初始化并加入 memheap_item 链表。

于是我找一个带有SRAM的板子,MCU是STM32F429.

一切配置好了,发现“多次调用该函数rt_memheap_init”来增加内存是不可行的。下载后无法运行。

查看rt_memheap_init的源码发现,里面的数据static struct rt_memheap _heap;没有为多个SRAM做准备。

因此,请问这个多次调用该函数rt_memheap_ini的功能是否有计划完成?或者是否有详细的设定目标或数据结构?

补充1:#define RT_USING_MEMHEAP_AS_HEAP已经存在于rtconfig.h内。
补充2: rt_memheap_init我使用第二套参数,可以将外置SRAM加入到独立的heap中。只是无法与末日的heap融合。

查看更多

关注者
0
被浏览
93
whj467467222
whj467467222 认证专家 2021-04-12

参看我这篇文章吧,STM32H7 本身自带的内存就是 多个且不连续。

STM32H7在RT-Thread上的多内存使用方法

4 个回答
HappyTime
HappyTime 2021-04-12

参考一下这个文档memheap 管理算法

使能宏 RT_USING_MEMHEAP_AS_HEAP

james_s
james_s 2021-04-12

memheap内存管理方式就可以

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览