信号调试工具 - 总览与阅读路线

小米 MiCarSettings 车控信号调试/Mock 工具调研库。针对”信号不好模拟”这一最大痛点,对标业界(GitHub 开源 + 商业方案 + OEM 实践),做多 agent 对抗分析,给出可落地的选型与路线。

调研方法:7 个 agent 并行调研 7 个方向(AAOS 官方 / CAN 生态 / 模拟器 / 录制回放 / DDS / 应用层测试 / 业界商业)+ 主控对抗汇总 + 项目代码核实。所有关键结论交叉验证。


一页纸结论(TL;DR)

  1. 业界主流范式Cuttlefish + Fake VHAL + COVESA VSS + 云端驾驶循环回放(RemotiveLabs 模式)。小米当前 dumpsys + CarDemo + LogPropMonitor + vc_client_mock 属业界 L2-L3,落后 Volvo/P3 的 L5,但领先国内新势力。
  2. 小米最大的”隐藏资产”:项目已内置应用层异常 mockSettings.System[mock_vehicle_property_env],位掩码模拟 Error/Timeout/Unavailable)——外部文档没记录、团队没用起来(01 §3)。这是 P6 的现成解药
  3. 官方能力没用足cmd car_service 支持按 prop 名字注入 + inject-error-event + emulate-driving-state——直击 P1/P6,零成本(02)。
  4. 三句话行动
    • 现在(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 回归。
  5. 绝不:座舱 App 团队采购 Vector CANoe/dSPACE(跨不到 Android Framework 层,误购)——那是整车电控团队的工具。

阅读路线

只想看结论:本 README → 09 对抗选型10 落地路线图

调试某信号不生效01 痛点(§3 应用层 mock)→ 11-调试与验证手段

要做技术决策(选工具)09 对比矩阵 → 对应专篇

要建无车/CI 环境04 模拟器07 应用层测试

调充电曲线(DDS)05 DDS

要复现路测 bug06 录制回放03 CAN


文档索引

#文档核心问题
00README(本文)总览 + TL;DR + 阅读路线
01痛点分析与现有调试手段⭐10 个子痛点 + 现有手段分层 + 被低估的应用层 mock
02AAOS 官方工具链cmd car_service 按名字/inject-error/GRPCVehicleHardware
03CAN 总线模拟开源生态cantools+python-can+vcan+can-utils 黄金组合
04AAOS 模拟器与离线环境Cuttlefish + vhalconfig JSON 落地
05DDS 调试工具自写 Mock publisher(复用 nddsjava.jar)
06信号录制与回放candump/canplayer + LogPropMonitor 升级 + MCAP/可视化
06bAAOS 官方录制重放工具链⭐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 VSS02
P2 areaId 语义get-carpropertyconfig 查配置02
P3 平台差异service list 判定 AIDL/HIDL11篇
P4 user 版拦截应用层 mock / VHAL --mock_from_car01
P5 命令冗长cmd car_service + 封装 CLI/GUI02
P6 异常状态⭐应用层 mock_vehicle_property_env + inject-error-event01/02
P7 难离车Cuttlefish + vhalconfig;战略 GRPCVehicleHardware04
P8 回放弱candump/canplayer + LogPropMonitor 升级06
P9 应用层难测IVehicleControl 接口 + car-test-lib + Turbine07
P10 DDS 无入口⭐自写 Mock publisher05

与项目其他知识库的关系

知识库定位与本库关系
车控信号(飞书源)信号体系/接入/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 全量改造量大等,均在专篇标注。