feat(ble-ota): 优化BLE OTA传输性能和可靠性

- 调整NimBLE配置恢复默认缓冲区大小以支持窗口内突发包接收
- 实现BLE连接参数动态调整,支持Windows兼容模式
- 优化OTA数据队列长度与确认窗口匹配
- 改进reorder buffer管理,添加乱序包缓存统计
- 修复ACK触发逻辑,确保按累计进度而非单包序列确认
- 添加GD32 OTA元数据本地缓存避免频繁NVS访问
- 优化前端JavaScript实现,改进Web Bluetooth写入策略

BREAKING CHANGE: BLE连接参数协商机制变更可能影响部分设备兼容性
This commit is contained in:
小龙虾
2026-07-12 03:38:20 +08:00
parent c0ca4e2a9f
commit 0b363492ed
7 changed files with 169 additions and 108 deletions
+11 -7
View File
@@ -37,12 +37,12 @@ CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=1
CONFIG_BTDM_BLE_MAX_CONN_EFF_EFF=1
# BLE 连接事件长度优化(允许单 CE 内传多包,提升 OTA 吞吐)
CONFIG_BT_CTRL_CE_LENGTH_TYPE_CE=y
CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG=y
# NimBLE mbuf 池(单连接 OTA 场景缩减,省 ~7 KB)
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=8
CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=16
CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=8
# NimBLE OTA 窗口突发接收容量(恢复 7feef70 对应的 IDF 6.0 默认值)
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=12
CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=24
CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=12
# NimBLE: 禁用未使用的标准 GATT 服务(只保留自定义 OTA service,省 ~8-15 KB)
CONFIG_BT_NIMBLE_PROX_SERVICE=n
@@ -58,11 +58,15 @@ CONFIG_BT_NIMBLE_HR_SERVICE=n
CONFIG_BT_NIMBLE_BAS_SERVICE=n
CONFIG_BT_NIMBLE_DIS_SERVICE=n
# NimBLE: 传输缓冲区缩减
CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=6
# NimBLE: 保留足够 ACL 缓冲承接窗口内突发包
CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=24
CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=16
CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=16
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=2
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL=12
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL=16
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY=0
CONFIG_BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO=200
# mbedTLS
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y