本指南深入介绍了 RAMN 及其使用方法,可用于了解汽车系统,并为参加汽车类夺旗比赛(CTF)等活动做好准备。请先查阅快速入门指南 ,以获得总体概览。
现代汽车网络通常由多个电子控制单元(ECU)组成,这些 ECU 通过各种通信协议连接到一个公共网络,例如控制器局域网(CAN)、带灵活数据速率的 CAN(CAN FD)以及本地互连网络(LIN)。RAMN 是一组简单的印刷电路板(PCB),可模拟此类汽车网络,其中四个 ECU 连接到一个公共的 CAN FD 总线。尽管其复杂程度不及真实车辆,但它可以作为一个平台,帮助用户轻松学习和实验汽车系统。
RAMN 由“主板”和“扩展模块”组成。扩展模块并非严格必需,但有助于实现物理交互。RAMN 包含四个 ECU:ECU A、ECU B、ECU C 和 ECU D。每个 ECU 均可通过主板上的 PCB 标识进行识别。

RAMN 的硬件设计文件已在 GitHub 上提供 。有关硬件的详细信息,请参阅 硬件 部分。
在粗暴操作过程中,点烟器开关和转向电位器的盖子可能会脱落,请务必注意不要丢失。同时也要小心屏幕,它相当脆弱。
每个 ECU 的运行均依赖于 STM32L5 微控制器(STM32L552 或 STM32L562)。STM32L552/562 参考手册可在此处获取: 点击这里 。
RAMN 的源代码同样已在 GitHub 上提供 。有关软件的详细信息,请参阅 固件 部分。
所有 ECU 共用同一套源代码,仅通过预处理器变量来区分各个 ECU(从 TARGET_ECUA 到 TARGET_ECUD,定义于 ramn_config.h 中)。使用 构建脚本可一次性为所有 ECU 编译源代码,但首先需要安装 STM32CubeIDE。
ECU 可以通过三种接口之一进行刷写(参见固件刷写)。STM32 嵌入式引导程序接口速度最快且使用最便捷,仅需通过 USB 连接即可为所有 ECU 重新刷新固件。
如果您希望对固件进行调试,则需要一个 JTAG 调试器,例如 ST-LINK/V2。
ECU A 配备了一个 USB 端口,可作为 USB 转 CAN/CAN FD 适配器(“slcan”适配器)使用。其他 ECU 则配备传感器和执行器,用作简单的 ECU。因此,通过 USB 将 RAMN 连接到您的计算机,等同于拥有一款 USB 转 CAN 适配器,并将其连接到带有三个 ECU 的车辆的 OBD-II 端口 。
ECU B、C 和 D 各自具有一个周期性任务,用于读取物理控制装置的状态,将其状态广播到 CAN 总线上,并更新其输出设备的状态(例如 LCD 屏幕或 LED 指示灯)。
RAMN 可以通过 CARLA 文件夹 中的脚本连接到驾驶模拟器 CARLA。这使得我们能够观察驾驶模拟器中车辆的行为如何与物理 CAN 总线上不同 ECU 发送的消息相关联。
ECU 支持标准诊断功能,例如可以使用统一诊断服务(UDS)进行访问:
您只需通过 USB 为主板供电(无论是否连接扩展设备),即可获得一个可用的 CAN 总线。您可以按照任意指南,使用任何您想要的工具来连接到 CAN 总线。如果您没有相关工具,可以参考本指南,其中使用了 RAMN 内置的 slcan 适配器(因此您只需要一块 RAMN 板即可)。
要完整地遵循本指南,您需要安装以下工具:
在 Windows 系统上,我们建议您安装 VirtualBox 并使用 Linux 发行版镜像。汽车爱好者的一个常见选择是 Kali Linux [ 1 ]。
从这里开始,您应该能够按照以下 Linux 说明进行操作。
如果您无法(或不愿)在虚拟机中运行 Linux 以使用 can-utils 工具,我们建议您学习并使用跨平台的 python-can 库,它可在所有(Python)平台上运行,包括 Windows。