feat: add VCU status feedback and map DEBUG safety inputs

This commit is contained in:
shenlefengnai-rgb
2026-10-03 21:52:14 +08:00
parent dbbda5624a
commit 1e7b2e7f96
305 changed files with 32906 additions and 68 deletions
+71
View File
@@ -0,0 +1,71 @@
# VCU 状态反馈测试报告
2026-10-03,屏幕接口 1.4,MCU CAN 接口 v2.4。按用户要求,当前任务、锁定、EBS 状态由 VCU CAN 反馈决定;确认发送只发任务请求,不直接显示为已执行任务。
## 接口与页面行为
新增自定义标准帧 **0x183 / DLC 8 / 建议 100 ms**。该帧需要 VCU 实现;它不是从已有 VCU 文档确认的现成协议。两路使用相同布局,CAN1 500 kbit/s,CAN2 250 kbit/s。
| 字节 | 含义 |
| --- | --- |
| 0 | 实际当前任务,0 无,1~6 沿用任务编号 |
| 1 | 锁定:0 已解锁,1 已锁定 |
| 2 | EBS:0 故障,1 正常 |
| 3 | 有效标志:bit0 任务、bit1 锁定、bit2 EBS;其余位为 0 |
| 4 | 反馈计数 0~255,仅供观察,不作为请求 ACK |
| 5~6 | 保留,必须为 0 |
| 7 | 帧版本,固定 1 |
例如 `02 01 01 07 00 00 00 01`:直线加速、已锁定、EBS 正常,三项均有效。各有效标志为 0 时对应项立即未知;超过 500 ms 未收到合规反馈后三项均未知。其他 CAN 流量不能续期。错误枚举、DLC、版本、保留位或扩展/远程/FD 格式不更新状态、不刷新超时。
| 显示项 | 绿色 | 红色 | 灰色 |
| --- | --- | --- | --- |
| 当前任务 | VCU 反馈的任务 1~6 | VCU 反馈无任务 0 | 无反馈、无效或超时 |
| 锁定 | 已锁定 | 已解锁 | 锁定未知 |
| EBS | 正常,绿底白字 | 故障,红底白字 | EBS 未知,黑底灰字 |
屏内保留 current_task,新增 lock_state、ebs_state 和渲染缓存。任务状态 7 表示未知;锁定/EBS 屏内编码为 0 未知、1 绿、2 红。dash 后初始化和 100 ms 定时器渲染文字、颜色及任务按钮;离开页面时仍可更新全局状态,返回后重新渲染。CONFIRM 的确认事件已删除 `current_task=pending_task`,仍发送原六字节串口任务帧并清除待选任务。DEBUG 的 EBS 各路检测不自行决定主页面 EBS 汇总状态。
源码副本:[Program.s](../scripts/hmi/Program.s)、[dash 状态渲染](../scripts/hmi/dash-status-render.txt)、[dash 后初始化](../scripts/hmi/dash-postinit.txt)、[确认发送](../scripts/hmi/confirm-send.txt)。实际修改已保存到根目录 AMI.HMI。
## 已通过的验证
| 验证 | 结果 |
| --- | --- |
| 官方 HMI 编译 | 0 错误、0 警告,编译输出 6,241,148 字节 |
| MCU Release 编译 | Flash 16,428 字节,RAM 2,640 字节 |
| ST-LINK 烧录及全量回读 | 16,428 字节逐字节一致 |
| 两份 DBC 校验 | 12 条报文、49 个信号、84 个已知报文编解码检查通过;两路布局、源码/CubeMX 位时序、SDC 源布局一致 |
| CAN1 → 实物 MCU | 43 项检查通过,CAN/UART 接收错误计数均为 0 |
| MCU → COM4 9600 8N1 捕获 | 收到 4,898 字节,含 current_task、lock_state、ebs_state 的完整赋值指令及真实 FF FF FF |
| COM4 注入任务请求 → CAN1 | 收到 `0x300: 01 05 00 01 A8 08 08 00`;实际任务保持 VCU 反馈的 2,不被请求的 5 覆盖 |
| 官方模拟器键盘状态输入及事件模拟 | 15 项检查通过;该结果不等于物理串口屏测试 |
43 项 MCU 检查覆盖:上电未知、任务 0~6、全部 8 种有效标志、反馈计数 255→0、7 类非法字段、截短 DLC、错误扩展帧、远程帧、其他 CAN 心跳持续时 VCU 独立超时、反馈恢复、请求不改变实际任务、GPIO 与 0x182 回归、最终超时。非法帧测试持续发送超过 500 ms,确认其不能阻止状态过期,且反馈时间戳不被刷新。
15 项页面检查覆盖:上电未知、任务 0~6、解锁/EBS 故障、无效反馈、确认请求前后、跨页反馈、取消请求、最终未知。确认测试先设置 VCU 实际任务 2,选择 EBS 测试 5,执行真实确认事件后,画面仍为直线加速;`get current_task` 返回 `71 02 00 00 00 FF FF FF`。模拟点击使用按下及弹起两次事件,避免仅按下却没有执行确认脚本。
固件 SHA256:`A772BD9D1A278ED061B659E7996D276EBFA59FCC65260D0C7FC8A34F67BF0293`。已保存 HMI SHA256:`2F59E1E3D757A06BBD882CD92BB78ED4BFD0336EB14872E5B33A15EA6F69F65B`。此前 v2.3 BIN 保留为 AMI_Controller_v2.3_500k_250k.bin。
## 尚未通过的整链路复测
CAN1 → 实物 MCU → USART2 → COM4 → 官方 HMI 模拟器首轮观察到 13 项画面颜色检查通过,包括七个任务编号、锁定/EBS 两种颜色和各项无效反馈。但尝试在用户 MCU 输入模式下通过鼠标确认请求时,未进入预期确认画面、未捕获对应 0x300,模拟器出现 `23 FF FF FF`。官方返回码对应“变量名称太长”;这里保留现象,尚未确定触发原因。
后续完整复测没有通过,PCAN 独立发送工具随后报 `Bus error: the CAN controller is in bus-off state`。未确认总线故障原因,不能将此前通过的局部检查写成稳定的整链路全部通过。实际 TJC 屏幕下载、触摸及车辆 VCU 实际发送仍待验证。当前页面逻辑与 CAN/UART 编解码分别有已通过证据。
## 证据
- [43 项 MCU 检查及 UART 指令](evidence/2026-10-03/vcu-status/mcu-results.json)
- [原始 UART 字节](evidence/2026-10-03/vcu-status/uart-capture.bin)
- [15 项页面检查](evidence/2026-10-03/vcu-status/simulator-results.json)
- [确认请求后仍显示 VCU 任务 2 的查询截图](evidence/2026-10-03/vcu-status/sim-current-task-query.png)
- [编译记录](evidence/2026-10-03/vcu-status/compile.log)
- [烧录回读](evidence/2026-10-03/vcu-status/flash-verified.json)
- [DBC 校验](evidence/2026-10-03/vcu-status/dbc-verification.json)
- [整链路复测未通过记录](evidence/2026-10-03/vcu-status/integration-unverified.json)
![绿色状态示例](evidence/2026-10-03/vcu-status/sim-task-2-green.png)
![解锁及 EBS 故障示例](evidence/2026-10-03/vcu-status/sim-unlocked-ebs-fault.png)
发送预览:`python scripts/send_vcu_status_can.py --task 2 --locked 1 --ebs-normal 1 --dry-run`。完整帧规则和样例同步到 [DBC 说明](AMI_CAN_DBC说明.md#vcu-状态反馈-0x183) 与 [CAN 报文 PDF](../output/pdf/AMI_CAN报文说明.pdf)。