fix(bt): supported allocate memroy from spiram for ESP32-S31 and ESP32-H4

This commit is contained in:
ShenWeilong
2026-09-10 20:53:10 +08:00
parent 2dc25a7bbe
commit 91234cb3f2
4 changed files with 68 additions and 36 deletions

View File

@@ -8,6 +8,7 @@
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "btdm_user_cfg.h"
#if UC_BT_CTRL_BLE_IS_ENABLE
#include "ble_user_cfg.h"
@@ -103,6 +104,7 @@ extern int brk_sym_pawrBcast_02YCihGkfXcpLt0zh1uM(void *param);
extern int brk_sym_pawrBcast_0PNup0d8oI1288mfULNW(void *param);
extern int brk_sym_pawrBcast_0Wq1DOQE0eOWEGV2grxM(void *param);
extern int brk_sym_pawrBcast_1y9l4P0a3qWUSydU3cDY(void *param);
extern int brk_sym_pawrBcast_3Fe1AkLrn3EG25GkGfL4(void *param);
extern int brk_sym_pawrBcast_7jK56jlcfafMtoQgLg6t(void *param);
extern int brk_sym_pawrBcast_7qGF1F9weQ363Ml7Gj0n(void *param);
extern int brk_sym_pawrBcast_JHmbFJCpV155hIYyDVQ8(void *param);
@@ -114,6 +116,7 @@ extern int brk_sym_pawrBcast_SB1LBCzybPoDd0XYyLM8(void *param);
extern int brk_sym_pawrBcast_WNd7Y6n56cZrTlhBjFRU(void *param);
extern int brk_sym_pawrBcast_eBH7HrPT8y2Fj9382el3(void *param);
extern int brk_sym_pawrBcast_g6t1IjxRbcv5GUq1uXIA(void *param);
extern int brk_sym_pawrBcast_ivWxQ61JhFEBhkuxoZhM(void *param);
extern int brk_sym_pawrBcast_lk2Wpy4u04ukjtC7Ijcb(void *param);
extern int brk_sym_pawrBcast_on08yxBjym4I0iV3tlPo(void *param);
extern int brk_sym_pawrBcast_sSbQFGKMJszbA895ddLO(void *param);
@@ -270,6 +273,12 @@ const void * const _adv_linear_broker_flash[] = BTDM_BROKER_NODE_DEF_FLASH(
[13] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_WNd7Y6n56cZrTlhBjFRU,
),
[14] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_3Fe1AkLrn3EG25GkGfL4,
),
[15] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_ivWxQ61JhFEBhkuxoZhM,
),
#endif /* UC_BLE_CTRL_PAWR_BCAST_SUPPORTED */
);
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
@@ -735,65 +744,72 @@ int
btdm_broker_init(void)
{
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_adv_linear_broker_flash, false)) {
extern const char *ble_controller_get_compile_version(void);
if (memcmp(ble_controller_get_compile_version(), "4c3f1e9", 7) != 0) {
return -1;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_base_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_adv_linear_broker_flash, false)) {
return -2;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
if (r_btdm_broker_linear_selfcheck(_btdm_hal_linear_broker_ram, true)) {
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_base_linear_broker_flash, false)) {
return -3;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
if (r_btdm_broker_linear_selfcheck(_btdm_hci_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_hal_linear_broker_ram, true)) {
return -4;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_hci_linear_broker_flash, false)) {
return -5;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_ram, true)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_flash, false)) {
return -6;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_ram, true)) {
return -7;
}
if (r_btdm_broker_linear_selfcheck(_btdm_task_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_flash, false)) {
return -8;
}
if (r_btdm_broker_linear_selfcheck(_btdm_task_linear_broker_flash, false)) {
return -9;
}
#if UC_BT_CTRL_BLE_IS_ENABLE && UC_BLE_CTRL_CONN_ENABLED
if (r_btdm_broker_linear_selfcheck(_conn_linear_broker_flash, false)) {
return -9;
return -10;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE && UC_BLE_CTRL_CONN_ENABLED */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_nrtIsr_linear_broker_flash, false)) {
return -10;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_perAdv_linear_broker_flash, false)) {
return -11;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_sync_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_perAdv_linear_broker_flash, false)) {
return -12;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_sync_linear_broker_flash, false)) {
return -13;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
return 0;
}

View File

@@ -8,6 +8,7 @@
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "btdm_user_cfg.h"
#if UC_BT_CTRL_BLE_IS_ENABLE
#include "ble_user_cfg.h"
@@ -111,6 +112,7 @@ extern int brk_sym_pawrBcast_02YCihGkfXcpLt0zh1uM(void *param);
extern int brk_sym_pawrBcast_0PNup0d8oI1288mfULNW(void *param);
extern int brk_sym_pawrBcast_0Wq1DOQE0eOWEGV2grxM(void *param);
extern int brk_sym_pawrBcast_1y9l4P0a3qWUSydU3cDY(void *param);
extern int brk_sym_pawrBcast_3Fe1AkLrn3EG25GkGfL4(void *param);
extern int brk_sym_pawrBcast_7jK56jlcfafMtoQgLg6t(void *param);
extern int brk_sym_pawrBcast_7qGF1F9weQ363Ml7Gj0n(void *param);
extern int brk_sym_pawrBcast_JHmbFJCpV155hIYyDVQ8(void *param);
@@ -122,6 +124,7 @@ extern int brk_sym_pawrBcast_SB1LBCzybPoDd0XYyLM8(void *param);
extern int brk_sym_pawrBcast_WNd7Y6n56cZrTlhBjFRU(void *param);
extern int brk_sym_pawrBcast_eBH7HrPT8y2Fj9382el3(void *param);
extern int brk_sym_pawrBcast_g6t1IjxRbcv5GUq1uXIA(void *param);
extern int brk_sym_pawrBcast_ivWxQ61JhFEBhkuxoZhM(void *param);
extern int brk_sym_pawrBcast_lk2Wpy4u04ukjtC7Ijcb(void *param);
extern int brk_sym_pawrBcast_on08yxBjym4I0iV3tlPo(void *param);
extern int brk_sym_pawrBcast_sSbQFGKMJszbA895ddLO(void *param);
@@ -291,6 +294,12 @@ const void * const _adv_linear_broker_flash[] = BTDM_BROKER_NODE_DEF_FLASH(
[13] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_WNd7Y6n56cZrTlhBjFRU,
),
[14] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_3Fe1AkLrn3EG25GkGfL4,
),
[15] = BTDM_BROKER_ENTRY_DEF_FLASH(
brk_sym_pawrBcast_ivWxQ61JhFEBhkuxoZhM,
),
#endif /* UC_BLE_CTRL_PAWR_BCAST_SUPPORTED */
);
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
@@ -837,73 +846,80 @@ int
btdm_broker_init(void)
{
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_adv_linear_broker_flash, false)) {
extern const char *ble_controller_get_compile_version(void);
if (memcmp(ble_controller_get_compile_version(), "4c3f1e9", 7) != 0) {
return -1;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_base_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_adv_linear_broker_flash, false)) {
return -2;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
if (r_btdm_broker_linear_selfcheck(_btdm_coex_linear_broker_flash, false)) {
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_base_linear_broker_flash, false)) {
return -3;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
if (r_btdm_broker_linear_selfcheck(_btdm_hal_linear_broker_ram, true)) {
if (r_btdm_broker_linear_selfcheck(_btdm_coex_linear_broker_flash, false)) {
return -4;
}
if (r_btdm_broker_linear_selfcheck(_btdm_hci_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_hal_linear_broker_ram, true)) {
return -5;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_hci_linear_broker_flash, false)) {
return -6;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_ram, true)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_flash, false)) {
return -7;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sched_linear_broker_ram, true)) {
return -8;
}
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_ram, true)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_flash, false)) {
return -9;
}
if (r_btdm_broker_linear_selfcheck(_btdm_task_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_btdm_sleep_linear_broker_ram, true)) {
return -10;
}
if (r_btdm_broker_linear_selfcheck(_btdm_task_linear_broker_flash, false)) {
return -11;
}
#if UC_BT_CTRL_BLE_IS_ENABLE && UC_BLE_CTRL_CONN_ENABLED
if (r_btdm_broker_linear_selfcheck(_conn_linear_broker_flash, false)) {
return -11;
return -12;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE && UC_BLE_CTRL_CONN_ENABLED */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_nrtIsr_linear_broker_flash, false)) {
return -12;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_perAdv_linear_broker_flash, false)) {
return -13;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_sync_linear_broker_flash, false)) {
if (r_btdm_broker_linear_selfcheck(_perAdv_linear_broker_flash, false)) {
return -14;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
#if UC_BT_CTRL_BLE_IS_ENABLE
if (r_btdm_broker_linear_selfcheck(_sync_linear_broker_flash, false)) {
return -15;
}
#endif /* UC_BT_CTRL_BLE_IS_ENABLE */
return 0;
}