esp32/main: Use heap_caps_get_info on IDF <4.1 to compute total heap.
heap_caps_get_total_size() is only available in IDF 4.1 and above. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
ac39960aa1
commit
bb9d688454
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue