Files
AMI/docs/VCU状态反馈测试报告.md
T

72 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)。