VSOC-Obudai/secure-gateway
GitHub: VSOC-Obudai/secure-gateway
面向 Infineon AURIX TC3xx 车规微控制器的实时 CAN 总线安全网关固件,提供消息监控、过滤与诊断功能。
Stars: 0 | Forks: 0
# 汽车 CAN 总线安全网关固件
针对 Infineon AURIX TC37x (TriCore) 微控制器的裸机安全网关固件,旨在用于汽车环境中的实时 CAN 总线监控。
该固件跨三个 TriCore CPU 核心运行,通过硬件事件实现同步启动。Core 0 负责应用程序循环,而 Core 1 和 Core 2 保留用于未来的并行工作负载。CAN 子系统实现了使用 FIFO 队列的中断驱动 TX/RX 管道、具有可配置 ID 范围接受的硬件消息过滤,以及用于跨核串行输出的 ISR 安全自旋锁同步。四个不同的中断优先级分别独立处理消息传输、接收、丢失检测和协议错误分类——每个都映射到专用的中断线和 CPU0 服务。
串行 I/O 通过 ASCLIN 以 115200 波特率实现,采用直接寄存器级 TX 控制以实现确定性字符输出,绕过标准 FIFO 路径以确保在早期初始化期间的日志可见性。构建系统使用 CMake 与 Ninja 以及自定义的 tricore-elf-gcc 工具链文件,支持 Debug、Profile 和 Release 预设。固件部署通过 AurixFlasher 使用生成的 Intel HEX 输出完成。
### 前置条件
#### AURIX Development Studio & GCC 编译器
请确保你已安装 AURIX Development Studio(我们需要其中的编译器工具集):[此处](https://www.infineon.com/design-resources/platforms/aurix-software-tools/aurix-tools/aurix-development-studio)
将编译器工具集添加到你的 PATH 环境变量中。我添加了这些:
- C:\Infineon\AURIX-Studio-1.10.2\tools\Compilers\tricore-gcc11\bin
- C:\Infineon\AURIX-Studio-1.10.2\tools\make
- C:\Infineon\AURIX-Studio-1.10.2\tools\AurixFlasherSoftwareTool_v1.0.8
- C:\Infineon\AURIX-Studio-1.10.2\tools\Compilers\Tasking_1.1r8\ctc\bin
- C:\Infineon\AURIX-Studio-1.10.2\tools\Compilers\sdcc_421\bin
#### CMake & Ninja(更好的 C++ 体验)
(在 Windows 上)确保你的 PATH 环境变量中包含以下路径
- C:\Users\AppData\Local\Programs\Python\Python312\Scripts\
- C:\Users\\AppData\Roaming\Python\Python312\Scripts
- C:\Users\\AppData\Local\Programs\Python\Python312\
你需要 CMake 和 Ninja。你可以使用 Python 安装它们。
```
$ pip3 install cmake ninja
```
### 编译与构建
你可以像这样查看可用的预设。
```
$ cmake --list-presets
```
你可以像这样执行整个构建管道(工作流):
```
$ cmake --workflow --preset tricore-debug
```
或者,你可以单独运行每个阶段。通常一个 CMake 阶段包括
1. configure(配置):分析项目和环境并生成本地构建文件 `cmake -S . -B build`
2. build(构建):编译并链接目标 `cmake --build build`
3. test(测试):执行并验证单元测试 `ctest --test-dir build --output-on-failure`
4. package(打包):部署输出 `cmake --install build --prefix /opt/my_project`
在这种情况下,测试和打包是有意未实现的。
为什么?CMake 在工作流中没有实现刷写功能(这不是标准流程),这需要手动调整和编写脚本。这不值得……如果你愿意,可以稍后再做。
1. Configuration(配置)(生成平台无关的构建文件)
```
$ cmake --preset tricore-debug
```
2. Build(构建)
```
$ cmake --build --preset tricore-debug
```
### 如何刷写
编译项目并导航到 bin 文件夹。
$ cd /build//bin
```
$ AurixFlasher -hex ./aurix-sec-gtw-http-server.hex
```
### 终端(查看 UART 日志)
1. 安装 PuTTY
2. 在设备管理器中检查你的 COM 串口线路名称(通常是 COM4)
3. 在你的 PuTTY 中设置:连接类型:Serial,速度:115200
### 文档
硬件规格和文档可在 docs 文件夹中找到。
标签:ASECLIN, Bash脚本, CAN FD, CAN总线网关, CMake构建, Infineon AURIX, Intel HEX, ISR安全, Ninja构建, TC3xx, TriCore微控制器, UART诊断, 中断驱动, 信息娱乐安全, 固件开发, 多核同步, 寄存器级编程, 嵌入式固件, 报文过滤, 报文队列, 汽车电子, 汽车网络安全, 硬件信号处理, 裸机编程, 车联网安全, 车载网络, 防御性驾驶