wangfq e3eaa111fe fix(mqtt): 修复 loop_data>512B 溢出发垃圾包致 broker RST 重连风暴 (现场P0)
根因(非平台推测的环形缓冲/event_report队列):
  mqtt_publish 的 mqttBuf=512B < loop_data(4通道)604B
  → MQTTSerialize_publish 返回 -2 不写 buf
  → len 为 uint32_t, -2 变 42.9亿
  → WCHNET 把清零缓冲+越界相邻全局(temp_guide=report_config→report_c)
    当 520B 垃圾包发出 → broker 见非法类型0x00 RST → 重连风暴

修复(net_srv.c):
  - MAX_MQTTBUF_LEN 512→1024 (容纳 604B loop_data)
  - mqtt_publish: len uint32→int + 守卫 if(len<=0)return (序列化失败绝不发残缓冲)
  - keepalive 9→60 (报告建议, 9s过激)

event_report 协议违规修复(iot_mqtt_srv.c):
  - 重连重发保持原 msg_id/ts (V1.04 §5.3-2), 不再作废换号致平台去重失效

验证: tests/test_mqtt_publish_overflow.c 复现旧垃圾包+验证守卫/大缓冲;
      tests/test_event_report.c T8 断言重连同 msg_id. 均全过.
遗留: ts=上电秒数非Unix时间戳, 待定方案(设备无RTC/SNTP)

Refs: docs/incidents/2026-07-15-DC045A49718F-protocol-error.md
2026-07-15 14:58:03 +08:00
2026-06-22 17:02:23 +08:00

vd_960 — 车检器 DLD960 嵌入式软件

产品概述

DLD960 是一款双 MCU 架构的车检器(车辆检测器),采用线圈检测原理。

硬件架构

芯片 型号 主频 Flash SRAM 职责
线圈 MCU AT32F421 120MHz 64KB 16KB 四路线圈信号采集与处理
通信 MCU CH32V208 144MHz 128KB 64KB 蓝牙、网口、1路 RS485

两个 MCU 之间通过内部总线(UART/SPI)通信。

子项目

子项目 目录 MCU 功能
vd960Loop vd960Loop/ AT32F421 线圈驱动、频率采样、车辆检测算法
vd960DBN vd960DBN/ CH32V208 蓝牙管理、TCP/IP 协议栈、RS485 通信

开发环境

  • vd960Loop: Keil MDK / AT32 IDEARM Cortex-M4
  • vd960DBN: MounRiver StudioRISC-V
S
Description
车检器 DLD960 嵌入式软件 — 双MCU架构(AT32F421+CH32V208)
Readme
5.4 MiB
2026-08-21 09:07:40 +08:00
Languages
C 98.1%
Python 0.9%
Assembly 0.6%
CMake 0.2%
Linker Script 0.2%