From 8b3c8c780445e48f6c8e9260da5e3e1c970fe339 Mon Sep 17 00:00:00 2001 From: Karl Osterseher Date: Tue, 13 Dec 2022 20:54:14 +0100 Subject: [PATCH] - correct faulty pcm chunk allocation if SPIRAM is enabled Signed-off-by: Karl Osterseher --- components/lightsnapcast/player.c | 140 ++++++++++++++++++------------ main/main.c | 71 ++++++++------- sdkconfig | 78 +++++++++++++++-- sdkconfig.old | 78 ++--------------- 4 files changed, 204 insertions(+), 163 deletions(-) diff --git a/components/lightsnapcast/player.c b/components/lightsnapcast/player.c index 247fda3..5fb3cc5 100644 --- a/components/lightsnapcast/player.c +++ b/components/lightsnapcast/player.c @@ -253,7 +253,7 @@ int init_player(void) { currentSnapcastSetting.buf_ms = 1000; currentSnapcastSetting.chkDur_ms = 20; currentSnapcastSetting.codec = NONE; - currentSnapcastSetting.sr = 44100; + currentSnapcastSetting.sr = 48000; currentSnapcastSetting.ch = 2; currentSnapcastSetting.bits = 16; currentSnapcastSetting.muted = false; @@ -712,14 +712,35 @@ int32_t allocate_pcm_chunk_memory_caps(pcm_chunk_message_t *pcmChunk, // first we try to allocated 32 bit aligned memory for payload // check available memory first so we can decide if we need to fragment the // data - freeMem = heap_caps_get_free_size(caps); - largestFreeBlock = heap_caps_get_largest_free_block(caps); - if ((freeMem >= bytes) && (largestFreeBlock >= bytes)) { - // ESP_LOGI(TAG, "32b f %d b %d", freeMem, largestFreeBlock); + if (caps != 0) { + freeMem = heap_caps_get_free_size(caps); + largestFreeBlock = heap_caps_get_largest_free_block(caps); + if ((freeMem >= bytes) && (largestFreeBlock >= bytes)) { + // ESP_LOGI(TAG, "32b f %d b %d", freeMem, largestFreeBlock); - pcmChunk->fragment->payload = (char *)heap_caps_malloc(bytes, caps); + pcmChunk->fragment->payload = (char *)heap_caps_malloc(bytes, caps); + if (pcmChunk->fragment->payload == NULL) { + ESP_LOGE( + TAG, + "Failed to heap_caps_malloc(%d, %d) memory for pcm chunk payload", + bytes, caps); + + ret = -2; + } else { + pcmChunk->totalSize = bytes; + pcmChunk->fragment->nextFragment = NULL; + pcmChunk->fragment->size = bytes; + + ret = 0; + } + } else { + // ESP_LOGE (TAG, "couldn't get memory to insert chunk of size %d, IRAM + // freemem: %d blocksize %d", bytes, freeMem, largestFreeBlock); + } + } else { + pcmChunk->fragment->payload = (char *)malloc(bytes); if (pcmChunk->fragment->payload == NULL) { - ESP_LOGE(TAG, "Failed to allocate IRAM memory for pcm chunk payload"); + ESP_LOGE(TAG, "Failed to malloc memory for pcm chunk payload"); ret = -2; } else { @@ -729,9 +750,6 @@ int32_t allocate_pcm_chunk_memory_caps(pcm_chunk_message_t *pcmChunk, ret = 0; } - } else { - // ESP_LOGE (TAG, "couldn't get memory to insert chunk of size %d, IRAM - // freemem: %d blocksize %d", bytes, freeMem, largestFreeBlock); } return ret; @@ -850,44 +868,52 @@ int32_t allocate_pcm_chunk_memory(pcm_chunk_message_t **pcmChunk, return -2; } + //#if CONFIG_SPIRAM && CONFIG_SPIRAM_BOOT_INIT + // (*pcmChunk)->fragment->payload = + // (char *)heap_caps_malloc(bytes, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); + // if ((*pcmChunk)->fragment->payload == NULL) { + // // size_t largestFreeBlock, freeMem; + // // ESP_LOGE (TAG, "Failed to allocate memory for pcm chunk fragment + // // payload"); free_pcm_chunk (pcmChunk); + // // freeMem = heap_caps_get_free_size (MALLOC_CAP_8BIT | + // MALLOC_CAP_SPIRAM); + // + // ret = -2; + // } else { + // (*pcmChunk)->fragment->nextFragment = NULL; + // (*pcmChunk)->fragment->size = bytes; + // + // ret = 0; + // } + //#elif CONFIG_SPIRAM + // (*pcmChunk)->fragment->payload = (char *)malloc(bytes); + // if ((*pcmChunk)->fragment->payload == NULL) { + // // size_t largestFreeBlock, freeMem; + // // ESP_LOGE (TAG, "Failed to allocate memory for pcm chunk fragment + // // payload"); free_pcm_chunk (pcmChunk); + // // freeMem = heap_caps_get_free_size (MALLOC_CAP_8BIT | + // MALLOC_CAP_SPIRAM); + // + // ret = -2; + // } else { + // (*pcmChunk)->fragment->nextFragment = NULL; + // (*pcmChunk)->fragment->size = bytes; + // + // ret = 0; + // } + //#else #if CONFIG_SPIRAM && CONFIG_SPIRAM_BOOT_INIT - (*pcmChunk)->fragment->payload = - (char *)heap_caps_malloc(bytes, MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - if ((*pcmChunk)->fragment->payload == NULL) { - // size_t largestFreeBlock, freeMem; - // ESP_LOGE (TAG, "Failed to allocate memory for pcm chunk fragment - // payload"); free_pcm_chunk (pcmChunk); - // freeMem = heap_caps_get_free_size (MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - - ret = -2; - } else { - (*pcmChunk)->fragment->nextFragment = NULL; - (*pcmChunk)->fragment->size = bytes; - - ret = 0; - } + ret = allocate_pcm_chunk_memory_caps(*pcmChunk, bytes, + MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); #elif CONFIG_SPIRAM - (*pcmChunk)->fragment->payload = (char *)malloc(bytes); - if ((*pcmChunk)->fragment->payload == NULL) { - // size_t largestFreeBlock, freeMem; - // ESP_LOGE (TAG, "Failed to allocate memory for pcm chunk fragment - // payload"); free_pcm_chunk (pcmChunk); - // freeMem = heap_caps_get_free_size (MALLOC_CAP_8BIT | MALLOC_CAP_SPIRAM); - - ret = -2; - } else { - (*pcmChunk)->fragment->nextFragment = NULL; - (*pcmChunk)->fragment->size = bytes; - - ret = 0; - } + ret = allocate_pcm_chunk_memory_caps(*pcmChunk, bytes, 0); #else ret = allocate_pcm_chunk_memory_caps(*pcmChunk, bytes, MALLOC_CAP_32BIT | MALLOC_CAP_EXEC); if (ret < 0) { ret = allocate_pcm_chunk_memory_caps(*pcmChunk, bytes, MALLOC_CAP_8BIT); if (ret < 0) { - // ret = allocate_pcm_chunk_memory_caps_fragmented + // ret = allocate_pcm_chunk_memory_caps_fragmented //(*pcmChunk, bytes, MALLOC_CAP_32BIT | MALLOC_CAP_EXEC); if (ret < 0) { // allocate_pcm_chunk_memory_caps_fragmented (*pcmChunk, bytes, @@ -897,6 +923,8 @@ int32_t allocate_pcm_chunk_memory(pcm_chunk_message_t **pcmChunk, } #endif + //#endif + if (ret < 0) { ESP_LOGE(TAG, "couldn't get memory to insert chunk"); @@ -1020,26 +1048,26 @@ static void player_task(void *pvParameters) { // so next chunk we get from queue will be -20ms outputBufferDacTime = chkDur_us * CHNK_CTRL_CNT; - if ((scSet.sr != __scSet.sr) || (scSet.bits != __scSet.bits) || - (scSet.ch != __scSet.ch)) { - i2s_custom_stop(I2S_NUM_0); + if ((__scSet.buf_ms > 0) && (__scSet.chkDur_ms > 0)) { + if ((scSet.sr != __scSet.sr) || (scSet.bits != __scSet.bits) || + (scSet.ch != __scSet.ch)) { + i2s_custom_stop(I2S_NUM_0); - ret = player_setup_i2s(I2S_NUM_0, ¤tSnapcastSetting); - if (ret < 0) { - ESP_LOGE(TAG, "player_setup_i2s failed: %d", ret); + ret = player_setup_i2s(I2S_NUM_0, ¤tSnapcastSetting); + if (ret < 0) { + ESP_LOGE(TAG, "player_setup_i2s failed: %d", ret); - return; + return; + } + + // force adjust_apll() to set playback speed + currentDir = 1; + adjust_apll(0); + + i2s_custom_set_clk(I2S_NUM_0, __scSet.sr, __scSet.bits, __scSet.ch); + initialSync = 0; } - // force adjust_apll() to set playback speed - currentDir = 1; - adjust_apll(0); - - i2s_custom_set_clk(I2S_NUM_0, __scSet.sr, __scSet.bits, __scSet.ch); - initialSync = 0; - } - - if ((__scSet.buf_ms > 0) && (__scSet.chkDur_ms > 0)) { if ((__scSet.buf_ms != scSet.buf_ms) || (__scSet.chkDur_ms != scSet.chkDur_ms)) { if (pcmChkQHdl != NULL) { diff --git a/main/main.c b/main/main.c index 40657d6..a5ef994 100644 --- a/main/main.c +++ b/main/main.c @@ -309,8 +309,8 @@ static FLAC__StreamDecoderWriteStatus write_callback( // flacData->outData = (char *)malloc (flacData->bytes); ret = allocate_pcm_chunk_memory(&(flacData->outData), flacData->bytes); - // ESP_LOGI (TAG, "mem %p %p %d", flacData->outData, - // flacData->outData->fragment->payload, flacData->bytes); + // ESP_LOGI (TAG, "mem %p %p %d", flacData->outData, + // flacData->outData->fragment->payload, flacData->bytes); if (ret == 0) { pcm_chunk_fragment_t *fragment = flacData->outData->fragment; @@ -1394,6 +1394,12 @@ static void http_get_task(void *pvParameters) { size_t decodedSize = pcmData->totalSize; // pFlacData->bytes; + + // ESP_LOGE(TAG, + // "decoded size: + // %d", + // decodedSize); + scSet.chkDur_ms = (1000UL * decodedSize) / (uint32_t)(scSet.ch * (scSet.bits / 8)) / @@ -1415,18 +1421,21 @@ static void http_get_task(void *pvParameters) { #if CONFIG_USE_DSP_PROCESSOR if (flow_drain_counter > 0) { - flow_drain_counter--; - double dynamic_vol = ((double)scSet.volume/100 / (20 - flow_drain_counter)); - if (flow_drain_counter == 0) { + flow_drain_counter--; + double dynamic_vol = + ((double)scSet.volume / 100 / + (20 - flow_drain_counter)); + if (flow_drain_counter == 0) { #if SNAPCAST_USE_SOFT_VOL - dynamic_vol = 0; + dynamic_vol = 0; #else - dynamic_vol = 1; + dynamic_vol = 1; #endif - audio_hal_set_mute(board_handle->audio_hal, - server_settings_message.muted); - } - dsp_set_vol(dynamic_vol); + audio_hal_set_mute( + board_handle->audio_hal, + server_settings_message.muted); + } + dsp_set_vol(dynamic_vol); } dsp_setup_flow(500, scSet.sr, scSet.chkDur_ms); dsp_processor(pcmData->fragment->payload, @@ -1466,20 +1475,23 @@ static void http_get_task(void *pvParameters) { } #if CONFIG_USE_DSP_PROCESSOR - if (flow_drain_counter > 0) { - flow_drain_counter--; - double dynamic_vol = ((double)scSet.volume/100 / (20 - flow_drain_counter)); - if (flow_drain_counter == 0) { + if (flow_drain_counter > 0) { + flow_drain_counter--; + double dynamic_vol = + ((double)scSet.volume / 100 / + (20 - flow_drain_counter)); + if (flow_drain_counter == 0) { #if SNAPCAST_USE_SOFT_VOL - dynamic_vol = 0; + dynamic_vol = 0; #else - dynamic_vol = 1; + dynamic_vol = 1; #endif - audio_hal_set_mute(board_handle->audio_hal, - server_settings_message.muted); - } - dsp_set_vol(dynamic_vol); + audio_hal_set_mute( + board_handle->audio_hal, + server_settings_message.muted); } + dsp_set_vol(dynamic_vol); + } dsp_setup_flow(500, scSet.sr, scSet.chkDur_ms); dsp_processor(pcmData->fragment->payload, pcmData->fragment->size, dspFlow); @@ -2022,15 +2034,15 @@ static void http_get_task(void *pvParameters) { #if CONFIG_USE_DSP_PROCESSOR if (server_settings_message.muted) { flow_drain_counter = 20; - } - else { - flow_drain_counter = 0; - audio_hal_set_mute(board_handle->audio_hal, - server_settings_message.muted); + } else { + flow_drain_counter = 0; + audio_hal_set_mute(board_handle->audio_hal, + server_settings_message.muted); #if SNAPCAST_USE_SOFT_VOL - dsp_set_vol((double)server_settings_message.volume/100); + dsp_set_vol((double)server_settings_message.volume / + 100); #else - dsp_set_vol(1.0); + dsp_set_vol(1.0); #endif } #else @@ -2040,7 +2052,8 @@ static void http_get_task(void *pvParameters) { } if (scSet.volume != server_settings_message.volume) { #if SNAPCAST_USE_SOFT_VOL - dsp_set_vol((double)server_settings_message.volume/100); + dsp_set_vol((double)server_settings_message.volume / + 100); #else audio_hal_set_volume(board_handle->audio_hal, server_settings_message.volume); diff --git a/sdkconfig b/sdkconfig index 9213c6e..e8d4489 100644 --- a/sdkconfig +++ b/sdkconfig @@ -143,6 +143,7 @@ CONFIG_ESP_LYRAT_V4_3_BOARD=y # # ESP32 audio buffer and I2S config # +CONFIG_USE_PSRAM=y # CONFIG_USE_DSP_PROCESSOR is not set CONFIG_USE_BIQUAD_ASM=y # end of ESP32 audio buffer and I2S config @@ -333,6 +334,7 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y # # ESP32-specific # +CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y CONFIG_ESP32_REV_MIN_0=y # CONFIG_ESP32_REV_MIN_1 is not set # CONFIG_ESP32_REV_MIN_2 is not set @@ -343,7 +345,66 @@ CONFIG_ESP32_DPORT_WORKAROUND=y # CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 -# CONFIG_ESP32_SPIRAM_SUPPORT is not set +CONFIG_ESP32_SPIRAM_SUPPORT=y + +# +# SPI RAM config +# +CONFIG_SPIRAM_TYPE_AUTO=y +# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set +# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set +CONFIG_SPIRAM_SIZE=-1 +CONFIG_SPIRAM_SPEED_40M=y +# CONFIG_SPIRAM_SPEED_80M is not set +CONFIG_SPIRAM=y +CONFIG_SPIRAM_BOOT_INIT=y +# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set +# CONFIG_SPIRAM_USE_MEMMAP is not set +# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set +CONFIG_SPIRAM_USE_MALLOC=y +CONFIG_SPIRAM_MEMTEST=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 +# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 +# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set +CONFIG_SPIRAM_CACHE_WORKAROUND=y + +# +# SPIRAM cache workaround debugging +# +CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_MEMW=y +# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_DUPLDST is not set +# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_NOPS is not set +# end of SPIRAM cache workaround debugging + +CONFIG_SPIRAM_BANKSWITCH_ENABLE=y +CONFIG_SPIRAM_BANKSWITCH_RESERVE=8 +# CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY is not set + +# +# PSRAM clock and cs IO for ESP32-DOWD +# +CONFIG_D0WD_PSRAM_CLK_IO=17 +CONFIG_D0WD_PSRAM_CS_IO=16 +# end of PSRAM clock and cs IO for ESP32-DOWD + +# +# PSRAM clock and cs IO for ESP32-D2WD +# +CONFIG_D2WD_PSRAM_CLK_IO=9 +CONFIG_D2WD_PSRAM_CS_IO=10 +# end of PSRAM clock and cs IO for ESP32-D2WD + +# +# PSRAM clock and cs IO for ESP32-PICO +# +CONFIG_PICO_PSRAM_CS_IO=10 +# end of PSRAM clock and cs IO for ESP32-PICO + +# CONFIG_SPIRAM_2T_MODE is not set +# end of SPI RAM config + # CONFIG_ESP32_TRAX is not set CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set @@ -509,7 +570,6 @@ CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set -CONFIG_ESP_SYSTEM_PD_FLASH=y # # Memory protection @@ -533,15 +593,16 @@ CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=8 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=16 -# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 -CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 +CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 +CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_CSI_ENABLED is not set CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=32 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=16 +# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set @@ -609,6 +670,7 @@ CONFIG_FATFS_LFN_NONE=y CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y # CONFIG_FATFS_USE_FASTSEEK is not set # end of FAT Filesystem support @@ -852,6 +914,7 @@ CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # mbedTLS # CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y @@ -1238,7 +1301,8 @@ CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_ADC2_DISABLE_DAC=y -# CONFIG_SPIRAM_SUPPORT is not set +CONFIG_SPIRAM_SUPPORT=y +# CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST is not set CONFIG_TRACEMEM_RESERVE_DRAM=0x0 # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y diff --git a/sdkconfig.old b/sdkconfig.old index e8d4489..9213c6e 100644 --- a/sdkconfig.old +++ b/sdkconfig.old @@ -143,7 +143,6 @@ CONFIG_ESP_LYRAT_V4_3_BOARD=y # # ESP32 audio buffer and I2S config # -CONFIG_USE_PSRAM=y # CONFIG_USE_DSP_PROCESSOR is not set CONFIG_USE_BIQUAD_ASM=y # end of ESP32 audio buffer and I2S config @@ -334,7 +333,6 @@ CONFIG_ESP_TLS_USING_MBEDTLS=y # # ESP32-specific # -CONFIG_ESP32_ECO3_CACHE_LOCK_FIX=y CONFIG_ESP32_REV_MIN_0=y # CONFIG_ESP32_REV_MIN_1 is not set # CONFIG_ESP32_REV_MIN_2 is not set @@ -345,66 +343,7 @@ CONFIG_ESP32_DPORT_WORKAROUND=y # CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 -CONFIG_ESP32_SPIRAM_SUPPORT=y - -# -# SPI RAM config -# -CONFIG_SPIRAM_TYPE_AUTO=y -# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set -# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set -# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set -CONFIG_SPIRAM_SIZE=-1 -CONFIG_SPIRAM_SPEED_40M=y -# CONFIG_SPIRAM_SPEED_80M is not set -CONFIG_SPIRAM=y -CONFIG_SPIRAM_BOOT_INIT=y -# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set -# CONFIG_SPIRAM_USE_MEMMAP is not set -# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set -CONFIG_SPIRAM_USE_MALLOC=y -CONFIG_SPIRAM_MEMTEST=y -CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 -# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set -CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 -# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set -CONFIG_SPIRAM_CACHE_WORKAROUND=y - -# -# SPIRAM cache workaround debugging -# -CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_MEMW=y -# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_DUPLDST is not set -# CONFIG_SPIRAM_CACHE_WORKAROUND_STRATEGY_NOPS is not set -# end of SPIRAM cache workaround debugging - -CONFIG_SPIRAM_BANKSWITCH_ENABLE=y -CONFIG_SPIRAM_BANKSWITCH_RESERVE=8 -# CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY is not set - -# -# PSRAM clock and cs IO for ESP32-DOWD -# -CONFIG_D0WD_PSRAM_CLK_IO=17 -CONFIG_D0WD_PSRAM_CS_IO=16 -# end of PSRAM clock and cs IO for ESP32-DOWD - -# -# PSRAM clock and cs IO for ESP32-D2WD -# -CONFIG_D2WD_PSRAM_CLK_IO=9 -CONFIG_D2WD_PSRAM_CS_IO=10 -# end of PSRAM clock and cs IO for ESP32-D2WD - -# -# PSRAM clock and cs IO for ESP32-PICO -# -CONFIG_PICO_PSRAM_CS_IO=10 -# end of PSRAM clock and cs IO for ESP32-PICO - -# CONFIG_SPIRAM_2T_MODE is not set -# end of SPI RAM config - +# CONFIG_ESP32_SPIRAM_SUPPORT is not set # CONFIG_ESP32_TRAX is not set CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set @@ -570,6 +509,7 @@ CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PD_FLASH=y # # Memory protection @@ -593,16 +533,15 @@ CONFIG_ESP_TIMER_IMPL_TG0_LAC=y # CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=8 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=16 -CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y -CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0 -CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16 -CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 # CONFIG_ESP32_WIFI_CSI_ENABLED is not set CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP32_WIFI_TX_BA_WIN=32 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=16 -# CONFIG_ESP32_WIFI_AMSDU_TX_ENABLED is not set CONFIG_ESP32_WIFI_NVS_ENABLED=y CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set @@ -670,7 +609,6 @@ CONFIG_FATFS_LFN_NONE=y CONFIG_FATFS_FS_LOCK=0 CONFIG_FATFS_TIMEOUT_MS=10000 CONFIG_FATFS_PER_FILE_CACHE=y -CONFIG_FATFS_ALLOC_PREFER_EXTRAM=y # CONFIG_FATFS_USE_FASTSEEK is not set # end of FAT Filesystem support @@ -914,7 +852,6 @@ CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y # mbedTLS # CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y -# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC is not set # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y @@ -1301,8 +1238,7 @@ CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 CONFIG_ADC2_DISABLE_DAC=y -CONFIG_SPIRAM_SUPPORT=y -# CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST is not set +# CONFIG_SPIRAM_SUPPORT is not set CONFIG_TRACEMEM_RESERVE_DRAM=0x0 # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y