Open2
ESP32 debug memo
よくわからないところで落ちる:Stack サイズの不足を疑ってみる
FreeRTOS では task 毎に stack サイズが決まる。
main task の最大 stack サイズは以下で得られる。
UBaseType_t wm = uxTaskGetStackHighWaterMark(NULL);
printf("stack: %" PRIu32 "\n", wm);
ヒープメモリの統計は heap_caps_print_heap_info(MALLOC_CAP_DEFAULT)
で見る。
引数で参照するヒープ領域を切り替えることができる。
一覧:
出力例:
Heap summary for capabilities 0x00001000:
At 0x3f800000 len 4194303 free 4194264 allocated 0 min_free 4194264
largest_free_block 4194264 alloc_blocks 0 free_blocks 1 total_blocks 1
At 0x3ffae6e0 len 6432 free 8 allocated 6284 min_free 0
largest_free_block 8 alloc_blocks 26 free_blocks 1 total_blocks 27
At 0x3ffb59f0 len 173584 free 106132 allocated 67244 min_free 105712
largest_free_block 106020 alloc_blocks 40 free_blocks 4 total_blocks 44
At 0x3ffe0440 len 15072 free 15036 allocated 0 min_free 15036
largest_free_block 15036 alloc_blocks 0 free_blocks 1 total_blocks 1
At 0x3ffe4350 len 113840 free 113804 allocated 0 min_free 113804
largest_free_block 113804 alloc_blocks 0 free_blocks 1 total_blocks 1
Totals:
free 4429244 allocated 73528 min_free 4428816 largest_free_block 4194264