校验¶
修改 ROM 之后 ECU 仍会接受它,但可能通不过安全或排放测试。校验做两件事:证明 你写入的数据在正确的位置,并重新计算 checksum 区域。
checksum 是什么?¶
许多 ECU 会在代码与数据区块内或末尾保存一个完整性校验值。若该值没有变化, ECU 会认为"没有被改动"。写入会使它失效;若不修正,ECU 就会自行决定(通常 进入应急模式)。
校验与修正¶
项目 ▸ 校验 checksum 检查所选算法的全部区块,项目 ▸ 修正 checksum
重新计算失败的区块。
流程:
- 选择 ECU 类型。
- 运行校验,列表会显示失败的区块。
- 先完成标定图修改,最后执行 checksum 修正 —— 否则 checksum 会 再次失效。
- 修正后再次校验。
内置算法¶
Bosch MED17/EDC17 的校验与修正已内置于应用中,无需任何 DLL。其他系列使用 Windows 模块库。
148 模块的 Windows 库¶
ChecksumDLL/ 包含 148 个 32 位模块。它们在 32 位 Windows 上运行,由 64 位
应用通过 checksumhelper.exe 辅助进程调用。
必需运行库
模块依赖 Microsoft Visual C++ 2005 SP1 (x86) 运行库。未安装时模块 无法加载,应用会明确提示。
模块仅在 Windows 上可用;Linux 与 macOS 只有内置的 MED17/EDC17 路径。
为什么要单独的进程?¶
checksumhelper.exe 是 32 位辅助进程。ROM 数据通过临时文件在两个进程之间
传递,这样 64 位应用无需把 32 位 DLL 加载进自己的地址空间即可运行它。
一定要与外部工具交叉验证¶
把应用的结果看作多方意见之一:
- ECU 厂商自带的工具集,
- 厂商的 checksum/校验软件,
- 台架与排放测试结果。
即使应用报告成功,若地址匹配错误,整条验证链依然无意义。验证中最薄弱的一环 不是 checksum,而是地址匹配。
A2L 基地址验证¶
A2L 中的地址是相对基地址给出的。基地址错误会让标定图打开在错误位置,而 checksum 校验无法发现。首次使用时:
- 用你已知的地址与 A2L 中的值对照。
- 确认 ROM 在该地址处确实是有意义的数据。
- 必要时手动修正基地址列表。
保存并重新打开测试¶
最简单的完整性测试:
- 保存改动。
- 关闭工程。
- 重新打开文件。
- 运行校验并检查你编辑过的标定图数值。