From 2fa434eb50c626c95571c7a96f4424d4e4e2bbd7 Mon Sep 17 00:00:00 2001 From: Zhou Xiao Date: Tue, 21 Jul 2026 16:27:39 +0800 Subject: [PATCH] fix(bt): keep BLE log ISR state in internal RAM --- components/bt/common/ble_log/src/ble_log_lbm.c | 10 +++++----- components/bt/common/ble_log/src/ble_log_rt.c | 6 +++--- components/bt/common/ble_log/src/ble_log_ts.c | 4 ++-- components/bt/common/ble_log/src/ble_log_util.c | 2 +- .../common/ble_log/src/internal_include/ble_log_util.h | 2 ++ .../ble_log/src/prph/ble_log_prph_spi_master_dma.c | 2 +- .../bt/common/ble_log/src/prph/ble_log_prph_uart_dma.c | 2 +- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/components/bt/common/ble_log/src/ble_log_lbm.c b/components/bt/common/ble_log/src/ble_log_lbm.c index 92771ffe329..f3823273c63 100644 --- a/components/bt/common/ble_log/src/ble_log_lbm.c +++ b/components/bt/common/ble_log/src/ble_log_lbm.c @@ -27,12 +27,12 @@ #define TAG "ble_log" #define BLE_LOG_LBM_WAIT_TIMEOUT_MS (1000) -BLE_LOG_STATIC volatile uint32_t lbm_ref_count = 0; -BLE_LOG_STATIC bool lbm_inited = false; -BLE_LOG_STATIC bool lbm_enabled = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR volatile uint32_t lbm_ref_count = 0; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool lbm_inited = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool lbm_enabled = false; BLE_LOG_STATIC volatile bool flush_in_progress = false; -BLE_LOG_STATIC ble_log_lbm_ctx_t *lbm_ctx = NULL; -BLE_LOG_STATIC ble_log_stat_mgr_t *stat_mgr_ctx[BLE_LOG_SRC_MAX] = {0}; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR ble_log_lbm_ctx_t *lbm_ctx = NULL; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR ble_log_stat_mgr_t *stat_mgr_ctx[BLE_LOG_SRC_MAX] = {0}; /* PRIVATE FUNCTION DECLARATION */ BLE_LOG_STATIC diff --git a/components/bt/common/ble_log/src/ble_log_rt.c b/components/bt/common/ble_log/src/ble_log_rt.c index f5d79bf5476..e256c214217 100644 --- a/components/bt/common/ble_log/src/ble_log_rt.c +++ b/components/bt/common/ble_log/src/ble_log_rt.c @@ -14,11 +14,11 @@ #include "ble_log_lbm.h" /* VARIABLE */ -BLE_LOG_STATIC bool rt_inited = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool rt_inited = false; BLE_LOG_STATIC TaskHandle_t rt_task_handle = NULL; -BLE_LOG_STATIC QueueHandle_t rt_queue_handle = NULL; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR QueueHandle_t rt_queue_handle = NULL; #if CONFIG_BLE_LOG_TS_ENABLED -BLE_LOG_STATIC bool rt_ts_enabled = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool rt_ts_enabled = false; #if CONFIG_BLE_LOG_TS_TRIGGER_ESP_TIMER BLE_LOG_STATIC esp_timer_handle_t rt_ts_timer = NULL; #endif /* CONFIG_BLE_LOG_TS_TRIGGER_ESP_TIMER */ diff --git a/components/bt/common/ble_log/src/ble_log_ts.c b/components/bt/common/ble_log/src/ble_log_ts.c index 2ee52f57520..8fd7d1f1ab8 100644 --- a/components/bt/common/ble_log/src/ble_log_ts.c +++ b/components/bt/common/ble_log/src/ble_log_ts.c @@ -11,8 +11,8 @@ #include "ble_log_ts.h" /* VARIABLE */ -BLE_LOG_STATIC bool ts_inited = false; -BLE_LOG_STATIC ble_log_ts_info_t *ts_info = NULL; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool ts_inited = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR ble_log_ts_info_t *ts_info = NULL; /* INTERFACE */ bool ble_log_ts_init(void) diff --git a/components/bt/common/ble_log/src/ble_log_util.c b/components/bt/common/ble_log/src/ble_log_util.c index 5c74fef0b3e..51034dbdeae 100644 --- a/components/bt/common/ble_log/src/ble_log_util.c +++ b/components/bt/common/ble_log/src/ble_log_util.c @@ -13,7 +13,7 @@ /* VARIABLE */ #ifndef UNIT_TEST -portMUX_TYPE ble_log_spin_lock = portMUX_INITIALIZER_UNLOCKED; +BLE_LOG_DRAM_ATTR portMUX_TYPE ble_log_spin_lock = portMUX_INITIALIZER_UNLOCKED; #endif /* !UNIT_TEST */ /* INTERNAL INTERFACE */ diff --git a/components/bt/common/ble_log/src/internal_include/ble_log_util.h b/components/bt/common/ble_log/src/internal_include/ble_log_util.h index f6e2f5ac054..a3699fe41dd 100644 --- a/components/bt/common/ble_log/src/internal_include/ble_log_util.h +++ b/components/bt/common/ble_log/src/internal_include/ble_log_util.h @@ -37,6 +37,7 @@ #define BLE_LOG_INLINE inline /* Section */ +#define BLE_LOG_DRAM_ATTR DRAM_ATTR #if defined(CONFIG_IDF_TARGET_ESP32C2) #define BLE_LOG_IRAM_ATTR _SECTION_ATTR_IMPL(".ble_log_iram1", __COUNTER__) #else @@ -92,6 +93,7 @@ void ble_log_cas_release(volatile bool *cas_lock) #define BLE_LOG_INLINE /* Section */ +#define BLE_LOG_DRAM_ATTR #define BLE_LOG_IRAM_ATTR /* Memory operation */ diff --git a/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c b/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c index 6c43044bfaa..f3f8c33c64a 100644 --- a/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c +++ b/components/bt/common/ble_log/src/prph/ble_log_prph_spi_master_dma.c @@ -29,7 +29,7 @@ /* VARIABLE */ BLE_LOG_STATIC bool prph_inited = false; BLE_LOG_STATIC spi_device_handle_t dev_handle = NULL; -BLE_LOG_STATIC uint32_t last_tx_done_ts = 0; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR uint32_t last_tx_done_ts = 0; /* PRIVATE FUNCTION DECLARATION */ BLE_LOG_STATIC void spi_master_dma_tx_done_cb(spi_transaction_t *spi_trans); diff --git a/components/bt/common/ble_log/src/prph/ble_log_prph_uart_dma.c b/components/bt/common/ble_log/src/prph/ble_log_prph_uart_dma.c index f21ff5f291c..10479ede883 100644 --- a/components/bt/common/ble_log/src/prph/ble_log_prph_uart_dma.c +++ b/components/bt/common/ble_log/src/prph/ble_log_prph_uart_dma.c @@ -31,7 +31,7 @@ #endif /* BLE_LOG_PRPH_UART_DMA_REDIR */ /* VARIABLE */ -BLE_LOG_STATIC bool prph_inited = false; +BLE_LOG_STATIC BLE_LOG_DRAM_ATTR bool prph_inited = false; BLE_LOG_STATIC uhci_controller_handle_t dev_handle = NULL; #if BLE_LOG_PRPH_UART_DMA_REDIR BLE_LOG_STATIC bool uart_driver_inited = false;