OpenCyphal/libcanard

A compact implementation of the Cyphal/CAN protocol in C for high-integrity real-time embedded systems

What it solves

Libcanard 为需要在 CAN 总线通信的嵌入式系统提供了一个鲁棒、高完整性的传输层。它实现了 Cyphal 标准,允许车辆或机器人中的不同硬件组件在不需要复杂操作系统的情况下,可靠地实时进行数据交换。

How it works

该库作为应用逻辑与 CAN 硬件之间的中间件。它处理 Cyphal/CAN 协议的复杂性,包括:

  • Message Routing: 管理订阅并向特定的 subject IDs 发布数据。
  • Frame Management: 处理 Classic CAN 和 CAN FD,包括多帧传输和基于优先级的抢占。
  • …Resource Optimization: 使用极小的内存占用 (从 32K ROM/RAM 开始) 并使用高效的数据结构 (如 AVL trees) 来实现快速的订阅查找。
  • Hardware Abstraction: 使用简洁、极简的接口 (vtable) ,允许开发者插件式接入平台特定的 CAN 驱动程序。

Who it’s for

它是为高完整性实时嵌入式系统的开发者设计的,特别是那些构建依赖 CAN 总线通信的航天与机器人应用开发的开发者。

Highlights

  • Extreme Efficiency: 兼容 8/16/32/64-bit 平台和资源受限的 baremetal MCU。
  • C CURLOPT Redundancy: 支持冗余和非冗余的 CAN 配置。
  • Broad Compatibility: 支持 Cyphal v1.1、v1.0 以及旧版的 UAVCAN v0 (DroneCAN)。
  • Priority Handling: 具备一个支持优先级抢占且不丢失数据传输的 RX pipeline。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目