diff --git a/CHANGELOG.md b/CHANGELOG.md index 498a352..6e8de7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,44 @@ --- +## vd960DBN V1.02.05 — 2026-08-21(DBN 通信板单侧更新) + +> 本次为 **vd960DBN 单侧发布**(Loop 固件未变,可正常配套)。涵盖 2026-08-20 联网稳定性修复系列 + 2026-08-21 MQTT 协议 V1.10 实现。 + +**配套版本矩阵** + +| 组件 | 版本 | +|------|------| +| vd960DBN 固件 (CH32V208, DLD960GA) | **1.02.05** | +| vd960Loop 固件 (AT32F421) | 1.0(不变) | +| DLD960Loop 串口协议(0x7F / 0x9F OTA) | V1.05(不变) | +| DLD960 TCP JSON 协议(:5960) | V1.03(不变) | +| DLD960 IoT MQTT 协议 | **V1.10** | +| DLD960 BLE 协议 | V1.02(不变) | + +### 🆕 MQTT 协议 V1.10:网络上报携带地感版本(配合远程 OTA 版本核对) +- `dev_info_query` 响应 / `initialize` 上报 data 新增 **`loop_ver`**(地感固件 `"主.次.次"`)+ **`loop_hw_ver`**(地感硬件)——来自 Loop `0x4A` 查询缓存(上电自动查一次 + OTA done 后刷新),查询未完成/失败为空串 +- 新增 §4.25 **`loop_version_query`** 命令:平台实时查询 Loop 版本(0x4A 异步 → 回包 `loop_ver`/`loop_hw_ver`/`version_str`),超时回 `code=5` +- 固件实现:`loop_uart_proto.c/h` 新增 `LoopVerCache` 版本缓存 + `lup_cache_from_info()`/`lup_refresh_version_cache()`;`iot_mqtt_srv.c` 新增 `iot_verq_poll()` 异步回包 + 后台刷新 +- **单测 44 断言全过**(版本解析/缓存/异步回包时序,`tests/test_iot_loop_ver.c`) + +### 🔧 联网稳定性修复(2026-08-20 系列) +- **SocketSend 0x11 死循环**:WCHNET `WCHNET_ERR_MEM(0x11)` 为瞬时发送缓冲不足(`WCHNET_NUM_TCP_SEG=2`)——改为 200ms 退避重试(≤10 次),不再 3 次强制断连;`SocketCreat` 失败置 `SocketId_TCP=0xFF` + 中止 Connect(不再 timeout 死循环) +- **OTA 下载失败**:`ota_json_extract_hex()` 兼容 `json.dumps` 空格(`"data": "..."`),单片 CRC 全错根因闭环 +- **OTA 刷写状态语义**:刷写成功状态回 `idle`(镜像保留可重刷)+ 补 `ota_report done/failed` 主动上报(平台判定主依据) +- **联网复位事故**:OTA 命令缓冲合并 union(RAM 90% 栈余量不足 → HardFault 复位闭环) + +### 📋 已知约束 +- UART2 0x4A 版本查询与 `loop_data`/事件上报共用总线(低频命令,理论无冲突)——**待板上验证时序** +- OTA done 后缓存刷新存在 Loop 复位时间窗(查询可能超时,可接受;平台可用 `loop_version_query` 主动核对) +- BLE→Loop OTA 透传模式无自动退出(V1.02.03 遗留,升级后需断电重启) + +### 验证 +- ✅ gcc 隔离单测:`test_iot_loop_ver.c` 44 例(V1.10)+ 既有 ota/offlog/snapshot/mqtt 单测全过 +- [ ] 待板级回归:MQTT 联网长稳、`loop_version_query` 实际回包、OTA 全流程 + +--- + ## vd960DBN V1.02.04 — 2026-08-19(DBN 通信板单侧更新) > 本次为 **vd960DBN 单侧发布**(Loop 固件未变,协议未变更,可正常配套)。 diff --git a/README.md b/README.md index 88a4d56..3644ec1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # vd_960 — DLD960 四通道车辆检测器(双 MCU 架构) -> 当前发布:**vd960DBN V1.02.04**(2026-08-19,DBN 单侧更新)· 完整版本见 [CHANGELOG.md](CHANGELOG.md) +> 当前发布:**vd960DBN V1.02.05**(2026-08-21,DBN 单侧更新)· 完整版本见 [CHANGELOG.md](CHANGELOG.md) ## 产品概述 @@ -41,7 +41,7 @@ DLD960 是一款基于环形线圈检测原理的四通道车辆检测器,支 | 子项目 | 目录 | MCU | 固件版本 | 功能 | |--------|------|-----|---------|------| | vd960Loop | `vd960Loop/` | AT32F421 | 1.0 | 线圈驱动、频率采样、车辆检测算法、0x7F 串口上报 | -| vd960DBN | `vd960DBN/` | CH32V208 | 1.02.04 | 蓝牙管理、TCP/IP(WCHNET)、MQTT、串口桥接、4G 扩展(RFU) | +| vd960DBN | `vd960DBN/` | CH32V208 | 1.02.05 | 蓝牙管理、TCP/IP(WCHNET)、MQTT、串口桥接、4G 扩展(RFU) | > ⚠ 发布约束:自协议 V1.05 起(variation 2B无符号 → 3B有符号),**Loop 固件与 DBN 固件必须同版本配套发布**,禁止混刷。 diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h index 36ddcb5..62dd7f9 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/include/cmcng.h @@ -11,11 +11,11 @@ #include #define PRODUCT_MODEL "DLD960GA" -#define FIRMWARE_VER "1.02.04" +#define FIRMWARE_VER "1.02.05" #define HARDWARE_VER "1.0" #define FIRMWARE_VER_MAIN 1 #define FIRMWARE_VER_SUB 2 -#define FIRMWARE_VER_SUBSUB 4 +#define FIRMWARE_VER_SUBSUB 5 #define HARDWARE_VER_MAIN 1 #define HARDWARE_VER_SUB 1 diff --git a/vd960DBN/docs/devlog.md b/vd960DBN/docs/devlog.md index e59665b..d0765ec 100644 --- a/vd960DBN/docs/devlog.md +++ b/vd960DBN/docs/devlog.md @@ -6,6 +6,8 @@ ## 2026-08-21 — MQTT 协议 V1.10 代码落地:网络上报携带地感版本(loop_ver/loop_hw_ver) +> **固件版本:归入 vd960DBN V1.02.05 发布**(2026-08-21 升版,cmcng.h 三段式一致:FIRMWARE_VER="1.02.05" + MAIN=1/SUB=2/SUBSUB=5)。V1.02.05 涵盖 8-20 联网稳定性修复系列(SocketSend 0x11 / OTA hex 空格 / union 合并 / 刷写状态语义)+ 本次 V1.10 协议实现。 + ### 背景 协议 V1.10(`DLD960_IoT_MQTT协议.md`,commit 3be9e50)三处新增,本次为固件实现: