feat(spi_link): 添加SPI Link v2 PC自测框架并优化协议稳定性
SPI Link v2 Self-Test / selftest (push) Has been cancelled
SPI Link v2 Self-Test / selftest (push) Has been cancelled
添加SPI Link v2的PC端自测功能,包含交叉校验基准测试,覆盖HELLO/OTA/CAN/PING等 多种协议场景。同时重构了health monitor中的多字段读取逻辑,消除了volatile变量 的撕裂读问题,并增强了BLE OTA的数据传输可靠性。 refactor(health_monitor): 修复heap hook多字段撕裂读问题 采用portMUX_CRITICAL临界区实现多字段一致快照读取,消除任务上下文与heap hook 之间的数据竞争。修改了HookSnap结构体设计,通过一次性拷贝volatile变量避免 跨字段组合时的数据不一致。JSON输出中明确标注estimated值的置信度。 fix(ble_ota): 实现DATA_IN丢包负反馈机制 当malloc失败或队列满时发送缺口ACK通知前端按completed_bytes续传,避免 静默丢包导致的8秒超时重传风暴。增加节流机制防止负ACK在重传叠加时打爆 NimBLE mbuf池,提升低内存环境下的OTA传输稳定性。 refactor(spi_master): 从堆分配改为固定Job池管理 将SPI worker的动态堆分配Job改为固定大小的静态池管理,避免频繁的 calloc/free操作影响实时性。新增acquireJobSlot/releaseJobSlot机制 管理池槽生命周期,提升SPI通信的可靠性和内存使用效率。
This commit is contained in:
@@ -243,6 +243,26 @@ ESP32_COMM/
|
||||
| 0x82 | RSP_ERROR | 响应:错误 |
|
||||
| 0xC0~C3 | CAN 业务 | 发送 / 反馈 / 模式 / ID 快照 |
|
||||
|
||||
#### SPI Link v2 PC 自测(兼容性回归门禁)
|
||||
|
||||
`spi_link_v2.cpp` 内置 `SPI_LINK_V2_SELFTEST` PC 端自测,以 `golden_vectors.h`
|
||||
中冻结的帧字节为交叉校验基准,覆盖 HELLO / OTA / CAN / PING / ENTER_BOOT /
|
||||
响应类型、最大 payload、CRC 翻转、错误版本、前导垃圾字节偏移解析等场景。
|
||||
向量字节由 `v2_build_frame` 现算后冻结,与协议实现互为交叉校验——任何一方
|
||||
漂移都会被对方测试捕获。
|
||||
|
||||
独立 host CMake target(与 ESP-IDF 构建隔离,不影响固件构建):
|
||||
|
||||
```bash
|
||||
cmake -S spi_link/test -B build/host_test
|
||||
cmake --build build/host_test
|
||||
ctest --test-dir build/host_test --output-on-failure # 期望 Passed: 10 Failed: 0
|
||||
```
|
||||
|
||||
CI:`.github/workflows/spi-link-selftest.yml` 在触及 SPI Link 相关文件时自动
|
||||
运行自测。`spi_link/` 是三工程共享的兄弟协议目录(与 `ESP32_COMM` 同级,本仓
|
||||
通过 `../../../spi_link/` 相对路径引用),CI 检出需确保该兄弟目录就位。
|
||||
|
||||
### CANFD 3 通道 SPI 协议
|
||||
|
||||
ESP32 通过 SPI 转发 CAN 帧到 GD32(GD32 端驱动外部 CAN 收发器):
|
||||
|
||||
Reference in New Issue
Block a user