Crash when using stack on external PSRAM
Posted: Wed Feb 02, 2022 9:59 pm
It seems that the IDF system components in 4.4 take up a lot more internal RAM than 4.0. I am using ESP32-WROVER-E (ECO v3) and I saw that v3 silicon should allow free use of the external PSRAM for task stacks.
viewtopic.php?t=21520
However, I get crashes if my task accesses flash (e.g. to write to a log file).
I use sdkconfig.defaults for explicit setting of all my CONFIG_ params. I won't show them all here, but the relevant ones are shown.
I also use static task creation.
What more must I do so that my task can be compatible with occasional flash accesses?
viewtopic.php?t=21520
However, I get crashes if my task accesses flash (e.g. to write to a log file).
I use sdkconfig.defaults for explicit setting of all my CONFIG_ params. I won't show them all here, but the relevant ones are shown.
I also use static task creation.
What more must I do so that my task can be compatible with occasional flash accesses?
Code: Select all
CONFIG_ESP32_REV_MIN_3=y
CONFIG_ESP32_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=512
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_USE_MALLOC=y
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
pstk = heap_caps_malloc( stackSize, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT );
xTaskCreateStaticPinnedToCore() CPU_CORE_ANY
When attempts to add to log file in SPIFFS, this crashes:
assert failed: spi_flash_disable_interrupts_caches_and_other_cpu cache_utils.c:136 (esp_task_stack_is_sane_cache_disabled())
Backtrace:0x4008229e:0x3f87f1700x40093cc1:0x3f87f190 0x40099601:0x3f87f1b0 0x4008d1f5:0x3f87f2d0 0x4008e47d:0x3f87f2f0 0x4008e487:0x3f87f310 0x40091d45:0x3f87f330 0x4008df41:0x3f87f350 0x40162673:0x3f87f390 0x401557c3:0x3f87f3c0 0x40158bbe:0x3f87f3f0 0x401568f7:0x3f87f420 0x40156c9c:0x3f87f480 0x40158127:0x3f87f4d0 0x40155cc1:0x3f87f510 0x401553d1:0x3f87f550 0x400d68fb:0x3f87f5a0 0x401cb3f4:0x3f87f5c0 0x401cb49d:0x3f87f5f0 0x400dbd79:0x3f87f610 0x401e615d:0x3f87f660 0x400993a1:0x3f87f690 0x400ddc1e:0x3f87f6e0
0x4008229e: panic_abort at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/esp_system/panic.c:402
0x40093cc1: esp_system_abort at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/esp_system/esp_system.c:121
0x40099601: __assert_func at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/newlib/assert.c:85
0x4008d1f5: spi_flash_disable_interrupts_caches_and_other_cpu at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/cache_utils.c:144 (discriminator 1)
0x4008e47d: cache_disable at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/spi_flash_os_func_app.c:70
0x4008e487: spi1_start at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/spi_flash_os_func_app.c:99
0x40091d45: spiflash_start_default at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/esp_flash_api.c:128
0x4008df41: esp_flash_read at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/esp_flash_api.c:821
0x40162673: esp_partition_read at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spi_flash/partition.c:424
0x401557c3: spiffs_api_read at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs_api.c:36
0x40158bbe: spiffs_phys_rd at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs/src/spiffs_cache.c:146
0x401568f7: spiffs_object_find_object_index_header_by_name_v at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs/src/spiffs_nucleus.c:1671
0x40156c9c: spiffs_obj_lu_find_entry_visitor at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs/src/spiffs_nucleus.c:177 (discriminator 4)
0x40158127: spiffs_object_find_object_index_header_by_name at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs/src/spiffs_nucleus.c:1694
0x40155cc1: SPIFFS_open at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/spiffs/src/spiffs_hydrogen.c:230 (discriminator 2)
0x401553d1: vfs_spiffs_open at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/spiffs/esp_spiffs.c:479
0x400d68fb: esp_vfs_open at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/vfs/vfs.c:399 (discriminator 3)
0x401cb3f4: _fopen_r at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fopen.c:129
0x401cb49d: fopen at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fopen.c:168
0x400dbd79: ca_log_vprintf at /home/devel3/Develop/CareWork/I4rc3_8/carealert-esp32/build/../main/app_supp.c:435
0x401e615d: esp_log_writev at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/log/log.c:200
0x400993a1: esp_log_write at /home/devel3/Develop/Espress1/IDF_44/esp-idf/components/log/log.c:210
0x400ddc1e: task_health_loop at /home/devel3/Develop/CareWork/I4rc3_8/carealert-esp32/build/../main/task_health.c:318 (discriminator 6)