简介

本指南深入介绍了 RAMN 及其使用方法,可用于了解汽车系统,并为参加汽车类夺旗比赛(CTF)等活动做好准备。请先查阅快速入门指南 ,以获得总体概览。

现代汽车网络通常由多个电子控制单元(ECU)组成,这些 ECU 通过各种通信协议连接到一个公共网络,例如控制器局域网(CAN)、带灵活数据速率的 CAN(CAN FD)以及本地互连网络(LIN)。RAMN 是一组简单的印刷电路板(PCB),可模拟此类汽车网络,其中四个 ECU 连接到一个公共的 CAN FD 总线。尽管其复杂程度不及真实车辆,但它可以作为一个平台,帮助用户轻松学习和实验汽车系统。

RAMN 硬件

RAMN 由“主板”和“扩展模块”组成。扩展模块并非严格必需,但有助于实现物理交互。RAMN 包含四个 ECU:ECU A、ECU B、ECU C 和 ECU D。每个 ECU 均可通过主板上的 PCB 标识进行识别。

RAMN 的硬件设计文件已在 GitHub 上提供 。有关硬件的详细信息,请参阅 硬件 部分。

在粗暴操作过程中,点烟器开关和转向电位器的盖子可能会脱落,请务必注意不要丢失。同时也要小心屏幕,它相当脆弱。

RAMN 软件

每个 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 功能

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)进行访问:

  • ECU A 在 ID 0x7e0 处接收请求,并在 0x7e8 处响应。
  • ECU B 在 ID 0x7e1 处接收请求,并在 0x7e9 处响应。
  • ECU C 在 ID 0x7e2 处接收请求,并在 0x7ea 处响应。
  • ECU D 在 ID 0x7e3 处接收请求,并在 0x7eb 处进行响应。

分析环境

您只需通过 USB 为主板供电(无论是否连接扩展设备),即可获得一个可用的 CAN 总线。您可以按照任意指南,使用任何您想要的工具来连接到 CAN 总线。如果您没有相关工具,可以参考本指南,其中使用了 RAMN 内置的 slcan 适配器(因此您只需要一块 RAMN 板即可)。

要完整地遵循本指南,您需要安装以下工具:

  • 一个终端仿真程序,例如 TeraTermPutty。我们建议您 下载并安装 TeraTerm。这将使您能够直接通过 USB 向 ECU A 发送串行命令。
  • 适用于 Windows 的 Python 环境,可在此下载 。请务必勾选“将 Python 添加到环境变量”(或 PATH)。这将使您能够在 Windows 上直接执行 RAMN 的 Python 脚本。如果您计划使用 CARLA,请确保使用受支持的版本(参见安装 CARLA)。
  • STM32CubeProgrammerSTM32CubeIDE,仅当您需要修改源代码和/或重新刷新 ECU 时才使用。
  • 一台 Linux 虚拟机(或原生系统)。这将使您能够使用诸如 can-utils 等开源工具与 RAMN 的 CAN 总线进行交互,并执行 RAMN 的脚本。请按照以下指南进行操作。

准备配备 can-utils 的 Linux 机器

Windows

在 Windows 系统上,我们建议您安装 VirtualBox 并使用 Linux 发行版镜像。汽车爱好者的一个常见选择是 Kali Linux [ 1 ]

从这里开始,您应该能够按照以下 Linux 说明进行操作。

脚注
[ 1 ]:

如果您无法(或不愿)在虚拟机中运行 Linux 以使用 can-utils 工具,我们建议您学习并使用跨平台的 python-can 库,它可在所有(Python)平台上运行,包括 Windows。

Linux

  • 打开终端窗口(例如,右键单击桌面并选择“在此处打开终端”)。
  • 输入以下命令以安装 can-utils:
sudo apt-get update sudo apt-get install can-utils