Merge branch 'change/ble_update_lib_20260127' into 'master'

change(ble): [AUTO_MR] 20260127 - Update ESP BLE Controller Lib

Closes BLERP-2565, BLERP-2508, and BLERP-2569

See merge request espressif/esp-idf!45428
This commit is contained in:
Island
2026-02-05 14:04:09 +08:00
16 changed files with 203 additions and 28 deletions
@@ -979,3 +979,12 @@ config BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN
When this option is enabled, the Controller automatically initiates a data length update
Using the appropriate data length parameters
When a PHY update or a connection interval update occurs.
config BT_LE_CTRL_ADV_FAST_TX_EN
bool "Reduce adv enable-to-air latency (READ DOCS FIRST) (EXPERIMENTAL)"
default n
help
Reduce the latency between issuing the advertising enable command
and the actual on-air transmission by executing the advertising TX
path from IRAM.
Note: Enabling this option increases IRAM usage.
+43 -13
View File
@@ -44,6 +44,18 @@ int dtm_stack_enable(void);
void dtm_stack_disable(void);
#endif // CONFIG_BT_LE_DTM_ENABLED
int conn_stack_initEnv(void);
void conn_stack_deinitEnv(void);
int conn_stack_enable(void);
void conn_stack_disable(void);
#if CONFIG_BT_LE_ERROR_SIM_ENABLED
int conn_errorSim_initEnv(void);
void conn_errorSim_deinitEnv(void);
int conn_errorSim_enable(void);
void conn_errorSim_disable(void);
#endif // CONFIG_BT_LE_ERROR_SIM_ENABLED
#if DEFAULT_BT_LE_PAWR_SUPPORTED || CONFIG_BT_LE_ERROR_SIM_ENABLED
int ble_single_env_init(void);
void ble_single_env_deinit(void);
@@ -63,17 +75,12 @@ int pawrSync_stack_enable(void);
void pawrSync_stack_disable(void);
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
int conn_stack_initEnv(void);
void conn_stack_deinitEnv(void);
int conn_stack_enable(void);
void conn_stack_disable(void);
#if CONFIG_BT_LE_ERROR_SIM_ENABLED
int conn_errorSim_initEnv(void);
void conn_errorSim_deinitEnv(void);
int conn_errorSim_enable(void);
void conn_errorSim_disable(void);
#endif // CONFIG_BT_LE_ERROR_SIM_ENABLED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
int advFastTx_stack_initEnv(void);
void advFastTx_stack_deinitEnv(void);
int advFastTx_stack_enable(void);
void advFastTx_stack_disable(void);
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
void adv_stack_enableClearLegacyAdvVsCmd(bool en);
@@ -115,6 +122,12 @@ void ble_stack_enableVsCmds(bool en)
log_stack_enableLogsRelatedVsCmd(en);
hci_stack_enableSetVsEvtMaskVsCmd(en);
winWiden_stack_enableSetConstPeerScaVsCmd(en);
#if DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
scan_stack_enableSetScanADIOnlyFilterVsCmd(en);
#endif // DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
#if DEFAULT_BT_ADV_SEND_CONSTANT_DID
extAdv_stack_setExtAdvConstantDidVsCmd(en);
#endif // DEFAULT_BT_ADV_SEND_CONSTANT_DID
}
void ble_stack_enableVsEvents(bool en)
@@ -200,12 +213,20 @@ int ble_stack_initEnv(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_initEnv();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
return 0;
}
void ble_stack_deinitEnv(void)
{
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_deinitEnv();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_deinitEnv();
pawrBcast_stack_deinitEnv();
@@ -291,7 +312,12 @@ int ble_stack_enable(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_enable();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
ble_stack_enableVsCmds(true);
ble_stack_enableVsEvents(true);
@@ -310,6 +336,10 @@ void ble_stack_disable(void)
ble_stack_enableVsEvents(false);
ble_stack_enableVsCmds(false);
#endif // (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_disable();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_disable();
pawrBcast_stack_disable();
@@ -300,6 +300,20 @@ extern "C" {
#define DEFAULT_BT_LE_HCI_UART_PARITY (0)
#endif
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (1<<0)
#else
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (0)
#endif
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_FLAGS DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#else
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV (0)
#endif
/* Unchanged configuration */
#define BLE_LL_CTRL_PROC_TIMEOUT_MS_N (40000) /* ms */
@@ -1000,3 +1000,12 @@ config BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN
When this option is enabled, the Controller automatically initiates a data length update
Using the appropriate data length parameters
When a PHY update or a connection interval update occurs.
config BT_LE_CTRL_ADV_FAST_TX_EN
bool "Reduce adv enable-to-air latency (READ DOCS FIRST) (EXPERIMENTAL)"
default n
help
Reduce the latency between issuing the advertising enable command
and the actual on-air transmission by executing the advertising TX
path from IRAM.
Note: Enabling this option increases IRAM usage.
+25 -2
View File
@@ -80,6 +80,13 @@ int pawrSync_stack_enable(void);
void pawrSync_stack_disable(void);
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
int advFastTx_stack_initEnv(void);
void advFastTx_stack_deinitEnv(void);
int advFastTx_stack_enable(void);
void advFastTx_stack_disable(void);
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
void adv_stack_enableClearLegacyAdvVsCmd(bool en);
void scan_stack_enableAdvFlowCtrlVsCmd(bool en);
@@ -211,12 +218,20 @@ int ble_stack_initEnv(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_initEnv();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
return 0;
}
void ble_stack_deinitEnv(void)
{
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_deinitEnv();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_deinitEnv();
pawrBcast_stack_deinitEnv();
@@ -302,7 +317,12 @@ int ble_stack_enable(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_enable();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
ble_stack_enableVsCmds(true);
ble_stack_enableVsEvents(true);
@@ -321,6 +341,9 @@ void ble_stack_disable(void)
ble_stack_enableVsEvents(false);
ble_stack_enableVsCmds(false);
#endif // (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_disable();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_disable();
pawrBcast_stack_disable();
@@ -301,6 +301,20 @@ extern "C" {
#define DEFAULT_BT_LE_HCI_UART_PARITY (0)
#endif
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (1<<0)
#else
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (0)
#endif
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_FLAGS DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#else
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV (0)
#endif
/* Unchanged configuration */
#define BLE_LL_CTRL_PROC_TIMEOUT_MS_N (40000) /* ms */
@@ -1004,3 +1004,12 @@ config BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN
When this option is enabled, the Controller automatically initiates a data length update
Using the appropriate data length parameters
When a PHY update or a connection interval update occurs.
config BT_LE_CTRL_ADV_FAST_TX_EN
bool "Reduce adv enable-to-air latency (READ DOCS FIRST) (EXPERIMENTAL)"
default n
help
Reduce the latency between issuing the advertising enable command
and the actual on-air transmission by executing the advertising TX
path from IRAM.
Note: Enabling this option increases IRAM usage.
+31 -2
View File
@@ -75,6 +75,13 @@ int conn_errorSim_enable(void);
void conn_errorSim_disable(void);
#endif // CONFIG_BT_LE_ERROR_SIM_ENABLED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
int advFastTx_stack_initEnv(void);
void advFastTx_stack_deinitEnv(void);
int advFastTx_stack_enable(void);
void advFastTx_stack_disable(void);
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
void adv_stack_enableClearLegacyAdvVsCmd(bool en);
void scan_stack_enableAdvFlowCtrlVsCmd(bool en);
@@ -113,6 +120,12 @@ void ble_stack_enableVsCmds(bool en)
log_stack_enableLogsRelatedVsCmd(en);
hci_stack_enableSetVsEvtMaskVsCmd(en);
winWiden_stack_enableSetConstPeerScaVsCmd(en);
#if DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
scan_stack_enableSetScanADIOnlyFilterVsCmd(en);
#endif // DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER
#if DEFAULT_BT_ADV_SEND_CONSTANT_DID
extAdv_stack_setExtAdvConstantDidVsCmd(en);
#endif // DEFAULT_BT_ADV_SEND_CONSTANT_DID
}
void ble_stack_enableVsEvents(bool en)
@@ -198,12 +211,20 @@ int ble_stack_initEnv(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_initEnv();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
return 0;
}
void ble_stack_deinitEnv(void)
{
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_deinitEnv();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_deinitEnv();
pawrBcast_stack_deinitEnv();
@@ -289,7 +310,12 @@ int ble_stack_enable(void)
return rc;
}
#endif // DEFAULT_BT_LE_PAWR_SUPPORTED
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
rc = advFastTx_stack_enable();
if (rc) {
return rc;
}
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
ble_stack_enableVsCmds(true);
ble_stack_enableVsEvents(true);
@@ -308,6 +334,9 @@ void ble_stack_disable(void)
ble_stack_enableVsEvents(false);
ble_stack_enableVsCmds(false);
#endif // (CONFIG_BT_NIMBLE_ENABLED || CONFIG_BT_BLUEDROID_ENABLED)
#if CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
advFastTx_stack_disable();
#endif // CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#if DEFAULT_BT_LE_PAWR_SUPPORTED
pawrSync_stack_disable();
pawrBcast_stack_disable();
@@ -300,6 +300,20 @@ extern "C" {
#define DEFAULT_BT_LE_HCI_UART_PARITY (0)
#endif
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (1<<0)
#else
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV (0)
#endif
#define DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_FLAGS DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV
#ifdef CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV CONFIG_BT_LE_CTRL_ADV_FAST_TX_EN
#else
#define DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV (0)
#endif
/* Unchanged configuration */
#define BLE_LL_CTRL_PROC_TIMEOUT_MS_N (40000) /* ms */
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -159,7 +159,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251211
#define CONFIG_VERSION 0x20260123
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -238,6 +238,8 @@ typedef struct {
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint8_t scan_allow_adi_filter; /*!< The option for ext scan to allow PDU with specific adi. */
uint8_t enhanced_mem_resv; /*!< The option masks the BLE events with all reserved memory. */
uint8_t rxbuf_reserved; /*!< The option reserve all Rxbuffer memory at initialization. */
uint32_t config_magic; /*!< Magic number for configuration validation */
} esp_bt_controller_config_t;
@@ -303,6 +305,8 @@ typedef struct {
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.scan_allow_adi_filter = DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER, \
.enhanced_mem_resv = DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV, \
.rxbuf_reserved = DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV, \
.config_magic = CONFIG_MAGIC, \
}
+10 -4
View File
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -156,7 +156,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251211
#define CONFIG_VERSION 0x20260123
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -236,8 +236,10 @@ typedef struct {
uint8_t conn_rsv_cnt; /*!< BLE conn state machine reserve count number */
uint8_t priority_level_cfg; /*!< The option for priority level configuration */
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint8_t scan_allow_adi_filter; /*!< The option for ext scan to allow PDU with specific adi. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint8_t scan_allow_adi_filter; /*!< The option for ext scan to allow PDU with specific adi. */
uint8_t enhanced_mem_resv; /*!< The option masks the BLE events with all reserved memory. */
uint8_t rxbuf_reserved; /*!< The option reserve all Rxbuffer memory at initialization. */
uint32_t config_magic; /*!< Magic number for configuration validation */
} esp_bt_controller_config_t;
@@ -306,6 +308,8 @@ typedef struct {
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.scan_allow_adi_filter = DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER, \
.enhanced_mem_resv = DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV, \
.rxbuf_reserved = DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV, \
.config_magic = CONFIG_MAGIC, \
}
#elif CONFIG_IDF_TARGET_ESP32C61
@@ -370,6 +374,8 @@ typedef struct {
.priority_level_cfg = BT_LL_CTRL_PRIO_LVL_CFG, \
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.enhanced_mem_resv = DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV, \
.rxbuf_reserved = DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV, \
.config_magic = CONFIG_MAGIC, \
}
#endif
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -161,7 +161,7 @@ esp_err_t esp_ble_tx_power_set_enhanced(esp_ble_enhanced_power_type_t power_type
*/
esp_power_level_t esp_ble_tx_power_get_enhanced(esp_ble_enhanced_power_type_t power_type, uint16_t handle);
#define CONFIG_VERSION 0x20251211
#define CONFIG_VERSION 0x20260123
#define CONFIG_MAGIC 0x5A5AA5A5
/**
@@ -240,6 +240,8 @@ typedef struct {
uint8_t slv_fst_rx_lat_en; /*!< The option for enabling slave fast PDU reception during latency. */
uint8_t dl_itvl_phy_sync_en; /*!< The option for automatically initiate the data length update when phy update or connect interval update. */
uint8_t scan_allow_adi_filter; /*!< The option for ext scan to allow PDU with specific adi. */
uint8_t enhanced_mem_resv; /*!< The option masks the BLE events with all reserved memory. */
uint8_t rxbuf_reserved; /*!< The option reserve all Rxbuffer memory at initialization. */
uint32_t config_magic; /*!< Configuration magic value */
} esp_bt_controller_config_t;
@@ -306,6 +308,8 @@ typedef struct {
.slv_fst_rx_lat_en = DEFAULT_BT_LE_CTRL_SLV_FAST_RX_CONN_DATA_EN, \
.dl_itvl_phy_sync_en = DEFAULT_BT_LE_CTRL_DL_ITVL_PHY_SYNC_EN, \
.scan_allow_adi_filter = DEFAULT_BT_SCAN_ALLOW_ENH_ADI_FILTER, \
.enhanced_mem_resv = DEFAULT_BT_LE_CTRL_ENH_MEM_RESV_ADV, \
.rxbuf_reserved = DEFAULT_BT_LE_CTRL_RXBUF_MEM_RESV, \
.config_magic = CONFIG_MAGIC, \
}
@@ -6,17 +6,27 @@ entries:
entries:
.high_perf_code_iram1+
[sections:adv_fast_execute_code_iram_text]
entries:
.adv_fast_execute_code_iram1+
[scheme:bt_default]
entries:
bt_bss -> dram0_bss
bt_common -> dram0_bss
data -> dram0_data
high_perf_iram_text -> iram0_text
if BT_CTRL_RUN_IN_FLASH_ONLY = y:
bt_iram_text -> flash_text
else:
bt_iram_text -> iram0_text
if BT_LE_CTRL_ADV_FAST_TX_EN = y:
adv_fast_execute_code_iram_text -> iram0_text
else:
adv_fast_execute_code_iram_text -> flash_text
# For the following fragments, order matters for
# 'ALIGN(4) ALIGN(4, post) SURROUND(sym)', which generates:
#