diff --git a/CMakeLists.txt b/CMakeLists.txt index f840297366d684b1b41ca7049baa660c89b98090..8e0d89a796b59ca7c763d42ed4e5227f055f86a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ set(CORE_SRCS cores/esp32/esp32-hal-ledc.c cores/esp32/esp32-hal-matrix.c cores/esp32/esp32-hal-misc.c + cores/esp32/esp32-hal-psram.c cores/esp32/esp32-hal-sigmadelta.c cores/esp32/esp32-hal-spi.c cores/esp32/esp32-hal-time.c diff --git a/cores/esp32/esp32-hal-misc.c b/cores/esp32/esp32-hal-misc.c index a1265649e52ae5df29cb3311238709409999e885..a2c4420820bbd2d36fe4e39db4c2453775105deb 100644 --- a/cores/esp32/esp32-hal-misc.c +++ b/cores/esp32/esp32-hal-misc.c @@ -84,6 +84,9 @@ bool btInUse(){ return false; } void initArduino() { +#if CONFIG_SPIRAM_SUPPORT + psramInit(); +#endif esp_log_level_set("*", CONFIG_LOG_DEFAULT_LEVEL); esp_err_t err = nvs_flash_init(); if(err == ESP_ERR_NVS_NO_FREE_PAGES){ diff --git a/cores/esp32/esp32-hal-psram.c b/cores/esp32/esp32-hal-psram.c new file mode 100644 index 0000000000000000000000000000000000000000..38479211c3380b3ce3324b613ef5e55661a7bd55 --- /dev/null +++ b/cores/esp32/esp32-hal-psram.c @@ -0,0 +1,99 @@ + +#include "esp32-hal.h" +#include "sdkconfig.h" + +#if CONFIG_SPIRAM_SUPPORT +#include "esp_spiram.h" +#include "soc/efuse_reg.h" +#include "esp_heap_caps.h" + +static volatile bool spiramDetected = false; +static volatile bool spiramFailed = false; + +bool psramInit(){ + if (spiramDetected) { + return true; + } +#ifndef CONFIG_SPIRAM_BOOT_INIT + if (spiramFailed) { + return false; + } + uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG); + uint32_t pkg_ver = chip_ver & 0x7; + if (pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32D2WDQ5 || pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD2 || pkg_ver == EFUSE_RD_CHIP_VER_PKG_ESP32PICOD4) { + spiramFailed = true; + log_w("PSRAM not supported!"); + return false; + } + esp_spiram_init_cache(); + if (esp_spiram_init() != ESP_OK) { + spiramFailed = true; + log_w("PSRAM init failed!"); + pinMatrixOutDetach(16, false, false); + pinMatrixOutDetach(17, false, false); + return false; + } + if (!esp_spiram_test()) { + spiramFailed = true; + log_e("PSRAM test failed!"); + return false; + } + if (esp_spiram_add_to_heapalloc() != ESP_OK) { + spiramFailed = true; + log_e("PSRAM could not be added to the heap!"); + return false; + } +#endif + spiramDetected = true; + log_d("PSRAM enabled"); + return true; +} + +bool IRAM_ATTR psramFound(){ + return spiramDetected; +} + +void IRAM_ATTR *ps_malloc(size_t size){ + if(!spiramDetected){ + return NULL; + } + return heap_caps_malloc(size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); +} + +void IRAM_ATTR *ps_calloc(size_t n, size_t size){ + if(!spiramDetected){ + return NULL; + } + return heap_caps_calloc(n, size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); +} + +void IRAM_ATTR *ps_realloc(void *ptr, size_t size){ + if(!spiramDetected){ + return NULL; + } + return heap_caps_realloc(ptr, size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT); +} + +#else + +bool psramInit(){ + return false; +} + +bool IRAM_ATTR psramFound(){ + return false; +} + +void IRAM_ATTR *ps_malloc(size_t size){ + return NULL; +} + +void IRAM_ATTR *ps_calloc(size_t n, size_t size){ + return NULL; +} + +void IRAM_ATTR *ps_realloc(void *ptr, size_t size){ + return NULL; +} + +#endif diff --git a/cores/esp32/esp32-hal-psram.h b/cores/esp32/esp32-hal-psram.h new file mode 100644 index 0000000000000000000000000000000000000000..f5bde289cf2cc4c32a64c9d72446bbd6ee5dff03 --- /dev/null +++ b/cores/esp32/esp32-hal-psram.h @@ -0,0 +1,25 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef _ESP32_HAL_PSRAM_H_ +#define _ESP32_HAL_PSRAM_H_ + +bool psramInit(); +bool psramFound(); + +void *ps_malloc(size_t size); +void *ps_calloc(size_t n, size_t size); +void *ps_realloc(void *ptr, size_t size); + +#endif /* _ESP32_HAL_PSRAM_H_ */ diff --git a/cores/esp32/esp32-hal.h b/cores/esp32/esp32-hal.h index d6e5ca8ca65e7ac5a746838db523430201438112..3b19b052fbbf322f2fb67fb396495fe144b98dd1 100644 --- a/cores/esp32/esp32-hal.h +++ b/cores/esp32/esp32-hal.h @@ -59,6 +59,7 @@ void yield(void); #include "esp32-hal-sigmadelta.h" #include "esp32-hal-timer.h" #include "esp32-hal-bt.h" +#include "esp32-hal-psram.h" #include "esp_system.h" //returns chip temperature in Celsius diff --git a/tools/sdk/bin/bootloader_dio_40m.bin b/tools/sdk/bin/bootloader_dio_40m.bin index 9b87ef844e0631680b2ba8be0ff0d091950cd231..ab424c15f15de3dcc8342f890d5268c9ad3c3659 100644 Binary files a/tools/sdk/bin/bootloader_dio_40m.bin and b/tools/sdk/bin/bootloader_dio_40m.bin differ diff --git a/tools/sdk/bin/bootloader_dout_40m.bin b/tools/sdk/bin/bootloader_dout_40m.bin index 9b87ef844e0631680b2ba8be0ff0d091950cd231..1dbe296cb53fef36d1188bcf8cbbfd59d73c20d3 100644 Binary files a/tools/sdk/bin/bootloader_dout_40m.bin and b/tools/sdk/bin/bootloader_dout_40m.bin differ diff --git a/tools/sdk/bin/bootloader_qout_40m.bin b/tools/sdk/bin/bootloader_qout_40m.bin index f7a10baaa4a14dd05ec4fef0826bfdfd97c56576..ab424c15f15de3dcc8342f890d5268c9ad3c3659 100644 Binary files a/tools/sdk/bin/bootloader_qout_40m.bin and b/tools/sdk/bin/bootloader_qout_40m.bin differ diff --git a/tools/sdk/bin/bootloader_qout_80m.bin b/tools/sdk/bin/bootloader_qout_80m.bin index 7c073e2cf0209142f06666f9aa1ac06f19ad302d..bd07e3586021aff91101dba2235f06bdecd9ac7e 100644 Binary files a/tools/sdk/bin/bootloader_qout_80m.bin and b/tools/sdk/bin/bootloader_qout_80m.bin differ diff --git a/tools/sdk/include/config/sdkconfig.h b/tools/sdk/include/config/sdkconfig.h index 43876605725bb75215500db8642b892837af676d..be1114e195009805c3614cff10c3666c261aba47 100644 --- a/tools/sdk/include/config/sdkconfig.h +++ b/tools/sdk/include/config/sdkconfig.h @@ -190,7 +190,6 @@ #define CONFIG_LOG_BOOTLOADER_LEVEL 0 #define CONFIG_MBEDTLS_TLS_ENABLED 1 #define CONFIG_LWIP_MAX_RAW_PCBS 16 -#define CONFIG_SPIRAM_IGNORE_NOTFOUND 1 #define CONFIG_SMP_ENABLE 1 #define CONFIG_SPIRAM_SIZE 4194304 #define CONFIG_MBEDTLS_SSL_SESSION_TICKETS 1 @@ -228,6 +227,7 @@ #define CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED 1 #define CONFIG_MONITOR_BAUD 115200 #define CONFIG_ESP32_DEBUG_STUBS_ENABLE 1 +#define CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST 1 #define CONFIG_FREERTOS_CORETIMER_0 1 #define CONFIG_PARTITION_TABLE_CUSTOM_FILENAME "partitions.csv" #define CONFIG_MBEDTLS_HAVE_TIME 1 @@ -238,12 +238,10 @@ #define CONFIG_ADC_CAL_EFUSE_VREF_ENABLE 1 #define CONFIG_MBEDTLS_TLS_SERVER 1 #define CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT 1 -#define CONFIG_SPIRAM_BOOT_INIT 1 #define CONFIG_FREERTOS_ISR_STACKSIZE 1536 #define CONFIG_CLASSIC_BT_ENABLED 1 #define CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK 1 #define CONFIG_OPENSSL_ASSERT_DO_NOTHING 1 -#define CONFIG_SPIRAM_MEMTEST 1 #define CONFIG_WL_SECTOR_SIZE_4096 1 #define CONFIG_OPTIMIZATION_LEVEL_DEBUG 1 #define CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED 1 diff --git a/tools/sdk/lib/libapp_trace.a b/tools/sdk/lib/libapp_trace.a index 51493d71536dc56391d5130831bb395d0aad57a8..074cebc3d9e71c55f40d9222f19a00fa0750a524 100644 Binary files a/tools/sdk/lib/libapp_trace.a and b/tools/sdk/lib/libapp_trace.a differ diff --git a/tools/sdk/lib/libapp_update.a b/tools/sdk/lib/libapp_update.a index ccd6c1c99e8a0386b667b7c9d1998a9d0c97eea6..3ba13ff6eeeab364966316323c0418f920c64dde 100644 Binary files a/tools/sdk/lib/libapp_update.a and b/tools/sdk/lib/libapp_update.a differ diff --git a/tools/sdk/lib/libbootloader_support.a b/tools/sdk/lib/libbootloader_support.a index f81ce451169de802b476a567250a96dd015e76cf..02e9db893ca1b7d35e32a40f3ab3e68736a23580 100644 Binary files a/tools/sdk/lib/libbootloader_support.a and b/tools/sdk/lib/libbootloader_support.a differ diff --git a/tools/sdk/lib/libbt.a b/tools/sdk/lib/libbt.a index 47bc5e3d6030d6c49b88b15d8de0fb1d98d76432..fb0bd9bbb8c6a61b8555d297f02f6afce1fff6c1 100644 Binary files a/tools/sdk/lib/libbt.a and b/tools/sdk/lib/libbt.a differ diff --git a/tools/sdk/lib/libcoap.a b/tools/sdk/lib/libcoap.a index 7ebb488d65d7eb22cdd5309334bf46eeb02e5e39..9aaa9797ba8f48272803c05d2556ad00ead1fdb5 100644 Binary files a/tools/sdk/lib/libcoap.a and b/tools/sdk/lib/libcoap.a differ diff --git a/tools/sdk/lib/libconsole.a b/tools/sdk/lib/libconsole.a index fd20812e0112a4cdadd7e115192416851cacab20..8ca4b9afc1c85a6617343162f7c2ebcfc10246c5 100644 Binary files a/tools/sdk/lib/libconsole.a and b/tools/sdk/lib/libconsole.a differ diff --git a/tools/sdk/lib/libcxx.a b/tools/sdk/lib/libcxx.a index ee14bd9dc16c7382959b9043cc948a291eebb9e5..6629744aa79049c63d290ab02ba99eea29f70ec9 100644 Binary files a/tools/sdk/lib/libcxx.a and b/tools/sdk/lib/libcxx.a differ diff --git a/tools/sdk/lib/libdriver.a b/tools/sdk/lib/libdriver.a index b45a78c3cb35d6bb7518071e85724db42afcb01a..86f6a01d295466c49d1a0caa98308c657d3fd295 100644 Binary files a/tools/sdk/lib/libdriver.a and b/tools/sdk/lib/libdriver.a differ diff --git a/tools/sdk/lib/libesp-tls.a b/tools/sdk/lib/libesp-tls.a index d8327d571c7ba6b6cb51a3a76028c48204f9be77..13c797ee42bca3fd5ebb78704547143bdfee8c83 100644 Binary files a/tools/sdk/lib/libesp-tls.a and b/tools/sdk/lib/libesp-tls.a differ diff --git a/tools/sdk/lib/libesp32.a b/tools/sdk/lib/libesp32.a index 87dec2e92bdd554fadd324c2d32d4f5bcbc0b775..2d5c6f8e8e31d7dc13189b7a5da9dd4e9aaafc4c 100644 Binary files a/tools/sdk/lib/libesp32.a and b/tools/sdk/lib/libesp32.a differ diff --git a/tools/sdk/lib/libesp_adc_cal.a b/tools/sdk/lib/libesp_adc_cal.a index 1741135b24e1826640b64c7ff0888563a76fda13..ac98c9b71cb208c29344671b09f62c241744b93b 100644 Binary files a/tools/sdk/lib/libesp_adc_cal.a and b/tools/sdk/lib/libesp_adc_cal.a differ diff --git a/tools/sdk/lib/libesp_http_client.a b/tools/sdk/lib/libesp_http_client.a index 0c3dee33e70abbc61db4a22d83f920d5bd7c8448..aea9595adae39513d3ca9dc796cba323c493901d 100644 Binary files a/tools/sdk/lib/libesp_http_client.a and b/tools/sdk/lib/libesp_http_client.a differ diff --git a/tools/sdk/lib/libethernet.a b/tools/sdk/lib/libethernet.a index e7d07fb819f8d64b294a446bc3fbca8418424bc1..66154564c39912ad6cecdcdc7e4f01bfc65ac116 100644 Binary files a/tools/sdk/lib/libethernet.a and b/tools/sdk/lib/libethernet.a differ diff --git a/tools/sdk/lib/libexpat.a b/tools/sdk/lib/libexpat.a index 3b277f083727127e89b35c3412be4fc593051489..f8499e6f7cf69dc0f7ad7e62ee08964d8990cf71 100644 Binary files a/tools/sdk/lib/libexpat.a and b/tools/sdk/lib/libexpat.a differ diff --git a/tools/sdk/lib/libfatfs.a b/tools/sdk/lib/libfatfs.a index 61de723900d5935ec3eb01b32b05fb7362e383e8..4afc355a2e6ab0076f99eff2d282833f00a63365 100644 Binary files a/tools/sdk/lib/libfatfs.a and b/tools/sdk/lib/libfatfs.a differ diff --git a/tools/sdk/lib/libfreertos.a b/tools/sdk/lib/libfreertos.a index bccb2dda01a59639a8392b5f3e5be5c27afdef81..240dc35d7745c538584caacedc03be7ecad2ae06 100644 Binary files a/tools/sdk/lib/libfreertos.a and b/tools/sdk/lib/libfreertos.a differ diff --git a/tools/sdk/lib/libheap.a b/tools/sdk/lib/libheap.a index 108c1a97a231fceec3a75bc13945a228ba9fb257..4f578b30317606104efd68063148c62d573d756a 100644 Binary files a/tools/sdk/lib/libheap.a and b/tools/sdk/lib/libheap.a differ diff --git a/tools/sdk/lib/liblog.a b/tools/sdk/lib/liblog.a index b2cf2777094108e2d9519575da3c987d699bab54..d5c08eac3ec5a2d20b887fb9ef83fcb738ebd229 100644 Binary files a/tools/sdk/lib/liblog.a and b/tools/sdk/lib/liblog.a differ diff --git a/tools/sdk/lib/liblwip.a b/tools/sdk/lib/liblwip.a index 1ffa520d849cca0b5f0ebf1a4eccd8c9b1cc3283..7dafe5bcdfc56b6f05c88e6664ed2452822629f1 100644 Binary files a/tools/sdk/lib/liblwip.a and b/tools/sdk/lib/liblwip.a differ diff --git a/tools/sdk/lib/libmbedtls.a b/tools/sdk/lib/libmbedtls.a index ac78293c66e80a68521c853177053e84d23ac85d..c267bd86b1c83d0900ea94109635b47f1638a505 100644 Binary files a/tools/sdk/lib/libmbedtls.a and b/tools/sdk/lib/libmbedtls.a differ diff --git a/tools/sdk/lib/libmdns.a b/tools/sdk/lib/libmdns.a index 098655b62ea82b21e23cc60073fd31736f2904c9..9e3ee4e0dcadfd4a47c4a16167f2e31585a6d771 100644 Binary files a/tools/sdk/lib/libmdns.a and b/tools/sdk/lib/libmdns.a differ diff --git a/tools/sdk/lib/libnewlib.a b/tools/sdk/lib/libnewlib.a index 3cd7805aedf96b74fd9f998f9720be4308fe4d50..4107a24d266031e36ea1f42bcde6ad0e14d3ee39 100644 Binary files a/tools/sdk/lib/libnewlib.a and b/tools/sdk/lib/libnewlib.a differ diff --git a/tools/sdk/lib/libnghttp.a b/tools/sdk/lib/libnghttp.a index 33bae568c4abdf21cd5e60c5ab602542f6c6c5af..bea3c1c8856a1881d8097e05c572783f8a04f4ad 100644 Binary files a/tools/sdk/lib/libnghttp.a and b/tools/sdk/lib/libnghttp.a differ diff --git a/tools/sdk/lib/libnvs_flash.a b/tools/sdk/lib/libnvs_flash.a index d4c8c650014040d257c31d7e8615d1fef7685a2f..b03101604f782fc23fcfb52b66527cd67e4d7f11 100644 Binary files a/tools/sdk/lib/libnvs_flash.a and b/tools/sdk/lib/libnvs_flash.a differ diff --git a/tools/sdk/lib/libopenssl.a b/tools/sdk/lib/libopenssl.a index ed5ee3351f43cc0b4e5e3e002edc2efc0ab36536..4e3c710e8d2059d94bd3bd79763f68814724752a 100644 Binary files a/tools/sdk/lib/libopenssl.a and b/tools/sdk/lib/libopenssl.a differ diff --git a/tools/sdk/lib/libpthread.a b/tools/sdk/lib/libpthread.a index b6a8ebee3b0418a326662c285b8924ebbfaf26a2..6d2a789c0abcb2aa227d7a82b0e3e186ddbbdc12 100644 Binary files a/tools/sdk/lib/libpthread.a and b/tools/sdk/lib/libpthread.a differ diff --git a/tools/sdk/lib/libsdmmc.a b/tools/sdk/lib/libsdmmc.a index 7e0e2ccad06070800cd961a7c3abbca558f25f03..a92344fd3849f5ec8cc8705627ec358ca87ed626 100644 Binary files a/tools/sdk/lib/libsdmmc.a and b/tools/sdk/lib/libsdmmc.a differ diff --git a/tools/sdk/lib/libsmartconfig_ack.a b/tools/sdk/lib/libsmartconfig_ack.a index 99b640f28a149ce96b492c5d0d2229026c7f048c..270b2294c6d58aa59e2c975f9f18264d77328c18 100644 Binary files a/tools/sdk/lib/libsmartconfig_ack.a and b/tools/sdk/lib/libsmartconfig_ack.a differ diff --git a/tools/sdk/lib/libsoc.a b/tools/sdk/lib/libsoc.a index 354530040ebcc5d8ce43c892a5874fc57c6bdc8f..8a76a7f523f881900a0572234f29c414b7af1f4d 100644 Binary files a/tools/sdk/lib/libsoc.a and b/tools/sdk/lib/libsoc.a differ diff --git a/tools/sdk/lib/libspi_flash.a b/tools/sdk/lib/libspi_flash.a index c319a1353aafdaeb3183837f47d652edcdebcc0d..9421c65a18764ac77fea314618d63b5f43df38d5 100644 Binary files a/tools/sdk/lib/libspi_flash.a and b/tools/sdk/lib/libspi_flash.a differ diff --git a/tools/sdk/lib/libspiffs.a b/tools/sdk/lib/libspiffs.a index ba8b6398bb75b2b769f51dc50c33382c82f2a118..459c36cc6092000f427ea3509db4b62e62b54802 100644 Binary files a/tools/sdk/lib/libspiffs.a and b/tools/sdk/lib/libspiffs.a differ diff --git a/tools/sdk/lib/libtcpip_adapter.a b/tools/sdk/lib/libtcpip_adapter.a index 9dff11c16ff5eecb3be940dc296c41e31fcad729..6d48dfbf21a0c56408e4300d4ec85ffbf6402a5f 100644 Binary files a/tools/sdk/lib/libtcpip_adapter.a and b/tools/sdk/lib/libtcpip_adapter.a differ diff --git a/tools/sdk/lib/libulp.a b/tools/sdk/lib/libulp.a index 000dfa0f2269924928b019b1c9566897970b5063..bfd4a790c9d52a3b833c2150c8218e450a214e37 100644 Binary files a/tools/sdk/lib/libulp.a and b/tools/sdk/lib/libulp.a differ diff --git a/tools/sdk/lib/libvfs.a b/tools/sdk/lib/libvfs.a index e2da378f2032ee88621134d5bcbb3e21a76ff8b0..b3b1fd0961eea8f749281de15782dab9721f225e 100644 Binary files a/tools/sdk/lib/libvfs.a and b/tools/sdk/lib/libvfs.a differ diff --git a/tools/sdk/lib/libwear_levelling.a b/tools/sdk/lib/libwear_levelling.a index 83ceb76fb56fb95d301a9cbd7cde7f67178f54cf..550a55b55e3c15cdd97d9092a95270993a82c153 100644 Binary files a/tools/sdk/lib/libwear_levelling.a and b/tools/sdk/lib/libwear_levelling.a differ diff --git a/tools/sdk/lib/libwpa_supplicant.a b/tools/sdk/lib/libwpa_supplicant.a index 3fb65d681b44e901b8e2adbcb4ebf23de8a278e5..607ffe29897ea539439af4a3a4dc738e8555ebce 100644 Binary files a/tools/sdk/lib/libwpa_supplicant.a and b/tools/sdk/lib/libwpa_supplicant.a differ diff --git a/tools/sdk/lib/libxtensa-debug-module.a b/tools/sdk/lib/libxtensa-debug-module.a index 79385f16653ccb3b0bca67b62000552c1e57c01a..669238f6cc9fdf17843c16689287192cc4c94a54 100644 Binary files a/tools/sdk/lib/libxtensa-debug-module.a and b/tools/sdk/lib/libxtensa-debug-module.a differ diff --git a/tools/sdk/sdkconfig b/tools/sdk/sdkconfig index 6a543aaea8888e01ca825188c6f3df2ad7a4cf97..ff5b2f028603ce6ef06a2864aed33cc549a476ad 100644 --- a/tools/sdk/sdkconfig +++ b/tools/sdk/sdkconfig @@ -217,17 +217,15 @@ CONFIG_SPIRAM_SUPPORT=y # # SPI RAM config # -CONFIG_SPIRAM_BOOT_INIT=y -CONFIG_SPIRAM_IGNORE_NOTFOUND=y +CONFIG_SPIRAM_BOOT_INIT= CONFIG_SPIRAM_USE_MEMMAP= CONFIG_SPIRAM_USE_CAPS_ALLOC=y CONFIG_SPIRAM_USE_MALLOC= CONFIG_SPIRAM_TYPE_ESPPSRAM32=y CONFIG_SPIRAM_SIZE=4194304 CONFIG_SPIRAM_SPEED_40M=y -CONFIG_SPIRAM_MEMTEST=y CONFIG_SPIRAM_CACHE_WORKAROUND=y -CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST= +CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST=y CONFIG_MEMMAP_TRACEMEM= CONFIG_MEMMAP_TRACEMEM_TWOBANKS= CONFIG_ESP32_TRAX=