【发布时间】:2015-08-09 05:51:40
【问题描述】:
我正在通过以下方式在任务中创建元素列表:
l = (dllist*)pvPortMalloc(sizeof(dllist));
dlllist 是 32 字节大。 我的嵌入式系统有 60kB SRAM,所以我希望系统可以轻松处理我的 200 个元素列表。我发现在为 8 个元素分配空间后,系统在第 9 次 malloc 函数调用(256byte+)时崩溃。
如果可能,我可以在哪里更改 freeRTOS 中的堆大小? 我可以以某种方式请求堆大小的当前状态吗? 我在文档中找不到此信息,因此我希望有人可以提供有关此问题的一些见解。 提前致谢!
【问题讨论】:
-
“可用堆空间的总量由
configTOTAL_HEAP_SIZE设置 - 在FreeRTOSConfig.h中定义。” freertos.org/a00111.html(内存管理)。 -
@WeatherVane:这取决于他使用的内存分配器。上次我查看这些时,有 4 种不同的类型(没有一个符合项目的要求)。
-
@Weather Vane:谢谢你的设置和 Richard 提到的功能,让我找到了解决方案,我将堆大小增加到 25 kB,现在它运行顺利。我观察到的一件有趣的事情是,增加任务的 STACK 大小也会增加可用的 HEAP 大小。我想知道这是什么原因。
标签: embedded malloc heap-memory freertos keil