Skip to content

Commit

Permalink
esp32/main: Use heap_caps_get_info on IDF <4.1 to compute total heap.
Browse files Browse the repository at this point in the history
heap_caps_get_total_size() is only available in IDF 4.1 and above.

Signed-off-by: Damien George <damien@micropython.org>
  • Loading branch information
dpgeorge committed Jan 21, 2022
1 parent ac39960 commit bb9d688
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions ports/esp32/main.c
Expand Up @@ -128,10 +128,14 @@ void mp_task(void *pvParameter) {
if (mp_task_heap == NULL) {
// Allocate the uPy heap using malloc and get the largest available region,
// limiting to 1/2 total available memory to leave memory for the OS.
mp_task_heap_size = MIN(
heap_caps_get_largest_free_block(MALLOC_CAP_8BIT),
heap_caps_get_total_size(MALLOC_CAP_8BIT) / 2
);
#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 1, 0)
size_t heap_total = heap_caps_get_total_size(MALLOC_CAP_8BIT);
#else
multi_heap_info_t info;
heap_caps_get_info(&info, MALLOC_CAP_8BIT);
size_t heap_total = info.total_free_bytes + info.total_allocated_bytes;
#endif
mp_task_heap_size = MIN(heap_caps_get_largest_free_block(MALLOC_CAP_8BIT), heap_total / 2);
mp_task_heap = malloc(mp_task_heap_size);
}

Expand Down

0 comments on commit bb9d688

Please sign in to comment.