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
+9 -7
View File
@@ -39,16 +39,18 @@ CONFIG_BT_NIMBLE_HR_SERVICE=n
CONFIG_BT_NIMBLE_BAS_SERVICE=n
CONFIG_BT_NIMBLE_DIS_SERVICE=n
# ── NimBLE: 缩减内存池(单连接 OTA 场景,不需要大池子)──
# MSYS pool 1: 256B blocks, 16→8 (省 ~2 KB)
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=8
# MSYS pool 2: 320B blocks, 32→16 (省 ~5 KB)
CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=16
# ACL transport buffers: 12→6 (省 ~1.5 KB)
CONFIG_BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT=6
# ── 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_TRANSPORT_ACL_FROM_LL_COUNT=24
# Event buffers: 30→16 (省 ~1 KB)
CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=16
# Prepared write entries: 64→16 (省 ~1 KB)
CONFIG_BT_NIMBLE_ATT_MAX_PREP_ENTRIES=16
# GATT procedures: 4→2 (单连接够用)
CONFIG_BT_NIMBLE_GATT_MAX_PROCS=2
CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG=y
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