- correct faulty pcm chunk allocation if SPIRAM is enabled

Signed-off-by: Karl Osterseher <karli_o@gmx.at>
This commit is contained in:
Karl Osterseher
2022-12-13 20:54:14 +01:00
Unverified
parent 0579684ace
commit 8b3c8c7804
4 changed files with 204 additions and 163 deletions

View File

@@ -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, &currentSnapcastSetting);
if (ret < 0) {
ESP_LOGE(TAG, "player_setup_i2s failed: %d", ret);
ret = player_setup_i2s(I2S_NUM_0, &currentSnapcastSetting);
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) {

View File

@@ -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);

View File

@@ -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

View File

@@ -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