Merge branch 'fix/ensure_internal_mem_for_ble_log_spi_out_v5.2' into 'release/v5.2'

fix(ble): ensure internal malloc in ble log spi out (v5.2)

See merge request espressif/esp-idf!40180
This commit is contained in:
Island
2025-07-04 15:12:56 +08:00
2 changed files with 7 additions and 5 deletions

View File

@@ -37,6 +37,7 @@
#define SPI_OUT_PACKET_LOSS_FRAME_SIZE (6) #define SPI_OUT_PACKET_LOSS_FRAME_SIZE (6)
#define SPI_OUT_TRANS_ITVL_MIN_US (30) #define SPI_OUT_TRANS_ITVL_MIN_US (30)
#define SPI_OUT_UL_LOG_STR_BUF_SIZE (100) #define SPI_OUT_UL_LOG_STR_BUF_SIZE (100)
#define SPI_OUT_MALLOC(size) heap_caps_malloc(size, MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT)
#if SPI_OUT_TS_SYNC_ENABLED #if SPI_OUT_TS_SYNC_ENABLED
#define SPI_OUT_TS_SYNC_TIMEOUT (1000 * 1000) #define SPI_OUT_TS_SYNC_TIMEOUT (1000 * 1000)
@@ -233,13 +234,13 @@ static void spi_out_le_audio_log_deinit(void);
static int spi_out_init_trans(spi_out_trans_cb_t **trans_cb, uint16_t buf_size) static int spi_out_init_trans(spi_out_trans_cb_t **trans_cb, uint16_t buf_size)
{ {
// Memory allocations // Memory allocations
*trans_cb = (spi_out_trans_cb_t *)malloc(sizeof(spi_out_trans_cb_t)); *trans_cb = (spi_out_trans_cb_t *)SPI_OUT_MALLOC(sizeof(spi_out_trans_cb_t));
if (!(*trans_cb)) { if (!(*trans_cb)) {
return -1; return -1;
} }
memset(*trans_cb, 0, sizeof(spi_out_trans_cb_t)); memset(*trans_cb, 0, sizeof(spi_out_trans_cb_t));
uint8_t *buf = (uint8_t *)heap_caps_malloc(buf_size, MALLOC_CAP_DMA); uint8_t *buf = (uint8_t *)SPI_OUT_MALLOC((size_t)buf_size);
if (!buf) { if (!buf) {
free(*trans_cb); free(*trans_cb);
*trans_cb = NULL; *trans_cb = NULL;
@@ -311,7 +312,7 @@ recycle:
static int spi_out_log_cb_init(spi_out_log_cb_t **log_cb, uint16_t buf_size, uint8_t type) static int spi_out_log_cb_init(spi_out_log_cb_t **log_cb, uint16_t buf_size, uint8_t type)
{ {
// Initialize log control block // Initialize log control block
*log_cb = (spi_out_log_cb_t *)malloc(sizeof(spi_out_log_cb_t)); *log_cb = (spi_out_log_cb_t *)SPI_OUT_MALLOC(sizeof(spi_out_log_cb_t));
if (!(*log_cb)) { if (!(*log_cb)) {
ESP_LOGE(BLE_LOG_TAG, "Failed to initialize log control block!"); ESP_LOGE(BLE_LOG_TAG, "Failed to initialize log control block!");
return -1; return -1;
@@ -427,7 +428,7 @@ IRAM_ATTR static bool spi_out_log_cb_write(spi_out_log_cb_t *log_cb, const uint8
memcpy(buf, (const uint8_t *)&head, SPI_OUT_FRAME_HEAD_LEN); memcpy(buf, (const uint8_t *)&head, SPI_OUT_FRAME_HEAD_LEN);
memcpy(buf + SPI_OUT_FRAME_HEAD_LEN, addr, len); memcpy(buf + SPI_OUT_FRAME_HEAD_LEN, addr, len);
if (len_append) { if (len_append && addr_append) {
memcpy(buf + SPI_OUT_FRAME_HEAD_LEN + len, addr_append, len_append); memcpy(buf + SPI_OUT_FRAME_HEAD_LEN + len, addr_append, len_append);
} }
memcpy(buf + SPI_OUT_FRAME_HEAD_LEN + total_length, &checksum, SPI_OUT_FRAME_TAIL_LEN); memcpy(buf + SPI_OUT_FRAME_HEAD_LEN + total_length, &checksum, SPI_OUT_FRAME_TAIL_LEN);
@@ -520,7 +521,7 @@ static int spi_out_ul_log_init(void)
} }
// Initialize string buffer // Initialize string buffer
ul_log_str_buf = (uint8_t *)malloc(SPI_OUT_UL_LOG_STR_BUF_SIZE); ul_log_str_buf = (uint8_t *)SPI_OUT_MALLOC(SPI_OUT_UL_LOG_STR_BUF_SIZE);
if (!ul_log_str_buf) { if (!ul_log_str_buf) {
ESP_LOGE(BLE_LOG_TAG, "Failed to initialize string buffer for upper layer task log!"); ESP_LOGE(BLE_LOG_TAG, "Failed to initialize string buffer for upper layer task log!");
goto str_buf_init_failed; goto str_buf_init_failed;

View File

@@ -13,6 +13,7 @@
#include "esp_timer.h" #include "esp_timer.h"
#include "esp_log.h" #include "esp_log.h"
#include "freertos/semphr.h" #include "freertos/semphr.h"
#include "esp_heap_caps.h"
// Public enums // Public enums
enum { enum {