Linux 5.10 CAN/CANFD机制详解

1. 版本背景

  • 发布时间:2020年12月13日
  • CAN支持状态:CANFD支持完全稳定,成为主流应用方案
  • 关键里程碑
    • CANFD协议栈完全生产就绪
    • 支持ISO 11898-1:2015标准
    • 新增多种CANFD控制器驱动
    • 网络命名空间支持完善

2. 子系统架构

架构演进

+---------------------+ | 用户空间 | | SocketCAN API | | + CANFD扩展 | +----------+----------+ | +----------v----------+ | 内核空间 | | CAN协议栈核心 | | + CANFD协议层 | +----------+----------+ | +----------v----------+ | CAN/CANFD设备驱动 | +----------+----------+ | +----------v----------+ | CAN硬件 | +---------------------+

新增核心组件

  • canfd corenet/can/canfd.c处理CANFD帧
  • flexible data-rate:位速率切换机制
  • 增强过滤器:支持CANFD特定过滤
  • 新驱动c_can,m_can,xilinx_can等支持CANFD

3. 源码深度解析

CANFD初始化流程

// net/can/canfd.c int canfd_register(void) { can_proto_register(&canfd_proto); register_netdevice_notifier(&canfd_notifier); return 0; } static struct can_proto canfd_proto = { .type = SOCK_RAW, .protocol = CA