我創建以下列方式任務中的元素的列表中的任務:我怎樣才能改變最大可用堆大小爲FreeRTOS操作系統
l = (dllist*)pvPortMalloc(sizeof(dllist));
DLLIST是32字節大。 我的嵌入式系統有60kB SRAM,所以我期望我的200元素列表可以被系統輕鬆處理。我發現在爲8個元素分配空間後,系統在第9次malloc函數調用(256byte +)上崩潰。
如果可能,我可以在哪裏更改freeRTOS內的堆大小? 我可以以某種方式請求堆大小的當前狀態嗎? 我無法在文檔中找到此信息,所以我希望有人能夠提供有關此問題的一些見解。 在此先感謝!
*「可用堆空間的總量由'configTOTAL_HEAP_SIZE'設置 - 它在'FreeRTOSConfig.h'中定義。」* http://www.freertos.org/a00111.html(內存管理)。 –
@WeatherVane:這取決於他使用的內存分配器。上次我看了這些,有4種不同的類型(並且沒有與項目需求相匹配)。 – Olaf
@Weather Vane:謝謝這個設置,加上Richard提到的那些功能,讓我將解決方案引入了這個領域,我將堆大小增加到了25kB,現在它的運行平穩了。我觀察到的一件有趣的事情是,增加任務的堆棧大小也會增加可用的HEAP大小。我想知道這個的原因。 – Unfixable