feat(config): 添加 hci_ipc 网络核配置,优化 DLE 和 ACL 缓冲区设置
This commit is contained in:
@@ -5,23 +5,28 @@ CONFIG_BT_DEVICE_NAME="GML670_System"
|
||||
CONFIG_BT_MAX_CONN=1
|
||||
CONFIG_BT_NUS=y
|
||||
|
||||
# 借鉴 Kiwii: 禁用 NUS 安全限制,提高连接成功率
|
||||
CONFIG_BT_NUS_SECURITY_ENABLED=n
|
||||
# DLE + PHY
|
||||
CONFIG_BT_BUF_ACL_RX_SIZE=251
|
||||
CONFIG_BT_BUF_ACL_TX_SIZE=251
|
||||
CONFIG_BT_DATA_LEN_UPDATE=y
|
||||
CONFIG_BT_USER_DATA_LEN_UPDATE=y
|
||||
CONFIG_BT_AUTO_DATA_LEN_UPDATE=y
|
||||
CONFIG_BT_L2CAP_TX_MTU=247
|
||||
CONFIG_BT_PHY_UPDATE=y
|
||||
CONFIG_BT_USER_PHY_UPDATE=y
|
||||
CONFIG_BT_AUTO_PHY_UPDATE=y
|
||||
|
||||
# SMP 配对与绑定
|
||||
CONFIG_BT_SMP=y
|
||||
CONFIG_BT_SETTINGS=y
|
||||
CONFIG_BT_KEYS_OVERWRITE_OLDEST=y
|
||||
# 缓冲区
|
||||
CONFIG_BT_BUF_ACL_TX_COUNT=3
|
||||
CONFIG_BT_L2CAP_TX_BUF_COUNT=6
|
||||
|
||||
# 存储
|
||||
CONFIG_FLASH=y
|
||||
CONFIG_FLASH_MAP=y
|
||||
CONFIG_NVS=y
|
||||
CONFIG_SETTINGS=y
|
||||
CONFIG_SETTINGS_NVS=y
|
||||
|
||||
# 借鉴 Kiwii: 优化缓冲区 (匹配硬件)
|
||||
CONFIG_BT_BUF_ACL_TX_COUNT=3
|
||||
CONFIG_BT_L2CAP_TX_BUF_COUNT=3
|
||||
|
||||
# 硬件驱动
|
||||
CONFIG_SPI=y
|
||||
CONFIG_GPIO=y
|
||||
@@ -34,8 +39,11 @@ CONFIG_SERIAL=n
|
||||
CONFIG_LOG=y
|
||||
CONFIG_USE_SEGGER_RTT=y
|
||||
CONFIG_LOG_BACKEND_RTT=y
|
||||
CONFIG_LOG_BACKEND_RTT_MODE_DROP=y
|
||||
CONFIG_LOG_BACKEND_UART=n
|
||||
CONFIG_LOG_MODE_IMMEDIATE=y
|
||||
CONFIG_LOG_MODE_DEFERRED=y
|
||||
CONFIG_LOG_BUFFER_SIZE=4096
|
||||
CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096
|
||||
CONFIG_MAIN_STACK_SIZE=4096
|
||||
|
||||
CONFIG_CRC=y
|
||||
|
||||
+11
-1
@@ -62,6 +62,7 @@ static void disconnected(struct bt_conn *conn, uint8_t reason) {
|
||||
/** @brief NUS 通知使能状态回调。 */
|
||||
static void nus_send_enabled(enum bt_nus_send_status status) {
|
||||
nus_notification_enabled = (status == BT_NUS_SEND_STATUS_ENABLED);
|
||||
LOG_INF("NUS send_enabled: status=%d, enabled=%d", status, nus_notification_enabled);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,10 +107,19 @@ void ble_transport_adv_start(void) {
|
||||
}
|
||||
|
||||
void ble_transport_send(const uint8_t *data, uint16_t len) {
|
||||
static bool first_send_logged = false;
|
||||
|
||||
if (!nus_notification_enabled || !current_conn) return;
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (bt_nus_send(current_conn, data, len) == 0) return;
|
||||
int err = bt_nus_send(current_conn, data, len);
|
||||
if (err == 0) {
|
||||
if (!first_send_logged) {
|
||||
LOG_INF("First NUS send OK (len=%u)", len);
|
||||
first_send_logged = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
k_usleep(500);
|
||||
}
|
||||
LOG_WRN("NUS send failed after retries (len=%u)", len);
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
# 用绝对路径将 hci_ipc overlay 传给网络核,
|
||||
# 避免 sysbuild 在 SDK 源码目录下解析相对路径而找不到文件。
|
||||
set(hci_ipc_EXTRA_CONF_FILE
|
||||
${CMAKE_CURRENT_LIST_DIR}/sysbuild/hci_ipc.conf
|
||||
CACHE INTERNAL "" FORCE
|
||||
)
|
||||
@@ -0,0 +1,2 @@
|
||||
# 让 sysbuild 自动构建 hci_ipc 网络核固件,west flash 一次刷两个核
|
||||
SB_CONFIG_NETCORE_HCI_IPC=y
|
||||
@@ -0,0 +1,9 @@
|
||||
# 网络核 hci_ipc overlay: 开启 DLE 251B,解除链路层分片瓶颈
|
||||
|
||||
# DLE 依赖链: DATA_LEN_UPDATE -> BT_CTLR_DATA_LENGTH -> DATA_LENGTH_MAX
|
||||
CONFIG_BT_DATA_LEN_UPDATE=y
|
||||
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
|
||||
|
||||
# 控制器 ACL 缓冲区必须能容纳 251B 的 LL PDU
|
||||
CONFIG_BT_BUF_ACL_RX_SIZE=251
|
||||
CONFIG_BT_BUF_ACL_TX_SIZE=251
|
||||
Reference in New Issue
Block a user