Awesome CAN 总线 


🚜 适用于 CAN 总线的超棒工具、硬件和资源
这份精选列表可帮助你对 CAN 总线设备进行逆向工程,并特别侧重于汽车嵌入式控制器软件和通信理解。
注意
标记为 “🔝” 的项目为强烈推荐。
此列表的永久 URL:https://github.com/iDoka/awesome-canbus
目录
黑客与逆向工程工具
- GVRET - 通用电动汽车逆向工程工具(Arduino 固件)。
测试设备与模拟器
- canerrsim - 使用 SocketCAN 进行错误条件测试的 CAN 总线错误帧模拟器与监视器。
- ECU-simulator - 模拟某些车辆诊断服务的工具。可用于测试支持 UDS (ISO 14229) 和 ISO-TP (ISO 15765-2) 协议的 OBD-II 适配器或测试工具。
- ELM327-emulator - ELM327 模拟器,用于测试通过 ELM327 适配器与 OBDII 接口的软件,支持多 ECU 模拟。
协议
OBD-II 工具
- DDT4All - 用于创建你自己的 ECU 参数界面,并通过廉价的 ELM327 接口连接到 CAN 网络的工具。
- ELM327SLCAN - 基于 ELM327 的车辆 CAN 总线嗅探器。
- Arduino-OBD2-Async - 支持异步数据请求的 Arduino OBD 库。
- CAN-Shark - 使用 Arduino + MCP2515 扩展板处理 OBD PID。
- OBD2-Scantool - 一个用于读取车辆 OBD2 信息的 Python 扫描工具。
- O2OO - 符合 OBD-II 规范的汽车诊断工具。它将来自汽车的传感器数据读入 SQLite 数据库。
- freediag - 用于符合 OBD-II 规范的机动车辆的免费诊断软件。
- pyvit - Python 车辆接口工具包 (已归档).
- OBDium - 一款车辆诊断应用,可通过 ELM327 适配器获取实时 OBD-II 数据、进行故障码分析以及离线 VIN 解码。
UDS
ISO 14229 标准
ISO-TP
ISO 15765-2 标准
- isotp-c - ISO-TP (ISO15765-2) CAN 协议的 C 语言实现。
- python-can-IsoTP - ISO-TP (ISO15765-2) CAN 协议的 Python 实现。
- CanTp - 根据 AUTOSAR 规范 v4.4.0 实现 CanTp 模块 (ISO 15765-2)。
- aioisotp - 面向 asyncio Python 的 ISO-TP 实现。
J1939 工具
SAE J1939 标准
J2534 工具
SAE J2534 标准
实用工具
通用
Linux 相关
- 🔝Linux CAN Utils - Linux-CAN / SocketCAN 用户空间实用工具。
- Linux 中的 CAN 支持 - Linux 内核支持 CAN 硬件接口。
- SocketCAN - Linux 内核支持(内核 >= 2.6)。
- J1939 - Linux 内核支持(内核 >= 5.4),另请参阅 can-j1939 内核模块。
- elmcan - 适用于基于 ELM327 的设备的 Linux SocketCAN 内核驱动程序(内核 >= 6.0)。
- can-isotp - ISO 15765-2:2016 CAN 传输协议的 Linux 内核模块(Linux 内核 >= 5.10 的一部分)。
- gs_usb - 基于 WCID 的 Linux/Windows CAN 驱动程序,适用于 Geschwister Schneider USB/CAN 设备和 candleLight USB CAN 接口。
GUI 工具
TUI 工具
Python 工具
- strym - 用于配合 USB-CAN 接口的实时 CAN 数据记录和可视化工具。
- canviewer - 允许检查传入 CAN 总线消息的 GUI 程序,消息可来自录制的 CAN 总线数据或实时数据。
CAN-over-IP
其他实用工具* Seeed-USB-CAN-Linux - 用于无品牌中国 USB-CAN 适配器的 CLI Linux 支持。
- opendlv-device-can-replay - 用于将捕获的 CAN 帧重放到 CAN 接口的 OpenDLV 微服务。
- c0f - CAN 总线指纹识别工具,旨在分析 CAN 总线流量并识别制造商和型号。
- canqv - 使用 CAN_RAW 快速检查 CAN 帧。
- Candle.NET - 用于 candlelight CAN 总线网关/分析仪(如 CANable、CANtact 等)的 Candle API 的 .NET 封装。
- canSerializer - 用于在非 CAN 传输层上序列化和反序列化 CAN 帧的库(可用于通过 UART、SPI 等传输 CAN 帧)。
库
- libwecan - 仅头文件的库,用于编码和解码 CAN 信号。
- VCAN - 一个用 C 语言编写的微型虚拟 CAN 和 CAN-FD 总线库。
- IMCTFD - 改进版 Microchip CAN Teensy FlexData 库 MCP2517FD。
- go-socketcan - 用于 SocketCAN 的 Go 语言库。
- Qt CAN Bus - 一个基于插件的跨平台 C++ 库,支持多种 CAN 设备(SocketCAN、Sys Tec、PEAK、Virtual)。
- JavaCAN - 用于 SocketCAN 的 Java 绑定库,支持 RAW、BCM 和 ISO-TP 套接字,使用基于 epoll 的事件驱动 IO。
- iso15765-canbus - 用 C 语言实现的 ISO15765-2。
- CanKit - 跨平台 C#/.NET CAN 通信库,在多种 CAN 适配器上提供统一 API。
- CANvenient - Windows 和 Linux 上多种 CAN API 的抽象层。
示例
CAN 数据库
格式(DBC、KCD)
DBC
DBC - CAN 数据库的事实标准是 Vector Informatik GmbH 开发的 DBC 文件格式。它是一种专有格式,没有可用的官方公开文档或规范。
KCD
- KCD - 一种描述 CAN 通信关系的开放格式,与 DBC 格式类似,但使用 XML 编写。
转换器与解析器
- can4python - 一个用于显示 KCD 文件(包括从 DBC 文件转换而来的文件)内容的有用包。
仅 DBC
硬件
各种硬件,如 CAN 总线 USB2CAN 适配器、记录器、嗅探器、转换器等。
ARM
STM32
基于 STM32F0x2 的硬件
Arduino
- GVRET - 通用电动汽车逆向工程工具(Arduino 固件)。
Espressif 系统(ESP8266、ESP32)
SBC
SBC - 单板计算机。
ASIC 和 FPGA 的 IP 核
- CAN - 经典 CAN 协议控制器的 IP 核(VHDL)。
- CTU-CAN-FD - 符合 ISO 11898-1:2015 的 CAN FD IP 核(VHDL)。
其他硬件
硬件相关工具
参与贡献* 我们始终欢迎您的贡献!请先阅读贡献指南。
脚注
- 请关注此根仓库以获取最新更新。
- 另一个精选列表 ▶️ CAN ID 集合 ◀️ 可能也会有用。
- 这个精选列表也可能有用,其中收录了用于 LIN 总线逆向工程、LIN 硬件开发和调试的优秀工具与资源。