信号调试工具 - 总览与阅读路线
小米 MiCarSettings 车控信号调试/Mock 工具调研库。针对”信号不好模拟”这一最大痛点,对标业界(GitHub 开源 + 商业方案 + OEM 实践),做多 agent 对抗分析,给出可落地的选型与路线。
调研方法:7 个 agent 并行调研 7 个方向(AAOS 官方 / CAN 生态 / 模拟器 / 录制回放 / DDS / 应用层测试 / 业界商业)+ 主控对抗汇总 + 项目代码核实。所有关键结论交叉验证。
一页纸结论(TL;DR)
- 业界主流范式:
Cuttlefish + Fake VHAL + COVESA VSS + 云端驾驶循环回放(RemotiveLabs 模式)。小米当前dumpsys + CarDemo + LogPropMonitor + vc_client_mock属业界 L2-L3,落后 Volvo/P3 的 L5,但领先国内新势力。 - 小米最大的”隐藏资产”:项目已内置应用层异常 mock(
Settings.System[mock_vehicle_property_env],位掩码模拟 Error/Timeout/Unavailable)——外部文档没记录、团队没用起来(01 §3)。这是 P6 的现成解药。 - 官方能力没用足:
cmd car_service支持按 prop 名字注入 +inject-error-event+emulate-driving-state——直击 P1/P6,零成本(02)。 - 三句话行动:
- 现在(0 成本):切
cmd car_service按名字 + 用应用层 mock + 自写 DDS Mock publisher + 采纳 COVESA VSS。 - 本季度(开源主导):
IVehicleControl接口解锁单测 + 小米定制 Cuttlefish + LogPropMonitor 升级回放 + car-test-lib。 - 本年度(战略):Mi Car Signal Broker + Android 16 GRPCVehicleHardware + Repository+Hilt CI 回归。
- 现在(0 成本):切
- 绝不:座舱 App 团队采购 Vector CANoe/dSPACE(跨不到 Android Framework 层,误购)——那是整车电控团队的工具。
阅读路线
只想看结论:本 README → 09 对抗选型 → 10 落地路线图
调试某信号不生效:01 痛点(§3 应用层 mock)→ 11-调试与验证手段
要做技术决策(选工具):09 对比矩阵 → 对应专篇
调充电曲线(DDS):05 DDS
文档索引
| # | 文档 | 核心问题 |
|---|---|---|
| 00 | README(本文) | 总览 + TL;DR + 阅读路线 |
| 01 | 痛点分析与现有调试手段 | ⭐10 个子痛点 + 现有手段分层 + 被低估的应用层 mock |
| 02 | AAOS 官方工具链 | cmd car_service 按名字/inject-error/GRPCVehicleHardware |
| 03 | CAN 总线模拟开源生态 | cantools+python-can+vcan+can-utils 黄金组合 |
| 04 | AAOS 模拟器与离线环境 | Cuttlefish + vhalconfig JSON 落地 |
| 05 | DDS 调试工具 | 自写 Mock publisher(复用 nddsjava.jar) |
| 06 | 信号录制与回放 | candump/canplayer + LogPropMonitor 升级 + MCAP/可视化 |
| 06b | AAOS 官方录制重放工具链 | ⭐JsonFakeValueGenerator + 官方只回放不录制 + 自写录制脚本 |
| 07 | 应用层测试框架 | IVehicleControl 接口 + car-test-lib + Turbine |
| 08 | 业界商业方案与 OEM 实践 | Vector/dSPACE/RemotiveLabs + COVESA VSS + 5 层成熟度 |
| 09 | 对抗分析与选型对比 | ⭐全景对比矩阵 + 痛点→解药映射 + 避坑清单 |
| 10 | 落地路线图 | ⭐三团队 × 三阶段行动卡 + 里程碑 |
痛点 → 解药速查(P1-P10)
| 痛点 | 首选解药 | 见篇 |
|---|---|---|
| P1 propId 难记 | cmd car_service 按名字 + COVESA VSS | 02 |
| P2 areaId 语义 | get-carpropertyconfig 查配置 | 02 |
| P3 平台差异 | service list 判定 AIDL/HIDL | 11篇 |
| P4 user 版拦截 | 应用层 mock / VHAL --mock_from_car | 01 |
| P5 命令冗长 | cmd car_service + 封装 CLI/GUI | 02 |
| P6 异常状态 | ⭐应用层 mock_vehicle_property_env + inject-error-event | 01/02 |
| P7 难离车 | Cuttlefish + vhalconfig;战略 GRPCVehicleHardware | 04 |
| P8 回放弱 | candump/canplayer + LogPropMonitor 升级 | 06 |
| P9 应用层难测 | IVehicleControl 接口 + car-test-lib + Turbine | 07 |
| P10 DDS 无入口 | ⭐自写 Mock publisher | 05 |
与项目其他知识库的关系
| 知识库 | 定位 | 与本库关系 |
|---|---|---|
| 车控信号(飞书源) | 信号体系/接入/VHAL 架构/调试 Q&A(13 篇) | 数据源:本库基于其调试 Q&A + Newton VHAL 架构 |
| 车辆信号通讯方式研究 | App 内信号通讯机制(12 篇) | 互补:它讲”信号怎么走”,本库讲”信号怎么调/mock” |
| 整体架构探索 | MiCarSettings 全架构 | 上层背景 |
本库聚焦业界工具对标 + 对抗选型 + 落地路线;项目内部命令手册见 11-调试与验证手段。
对抗分析方法说明
- 7 agent 并行:AAOS 官方 / CAN 生态 / 模拟器 / 录制回放 / DDS / 应用层测试 / 业界商业,各方向独立调研 GitHub + 官方文档 + OEM 实践。
- 交叉印证:Cuttlefish、GRPCVehicleHardware、car-test-lib、COVESA VSS 被多个独立 agent 反复点名 → 可信度高。
- 代码核实:应用层 mock 体系(VehicleControlMockEnv)、封装层可测性(settingsVehicleLib 6 处硬编码)、DDS 依赖(nddsjava.jar + DataWriter)均经项目源码核实。
- 存疑/风险单列:DDS Security 启用会让开源互通失效、AGP 7.2 限制 JUnit5、Hilt 全量改造量大等,均在专篇标注。