您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
AI辅助企业网络安全&治理
6月11-12日 北京+线上
基于模型的数据治理与数据中台
6月16-17日 北京+线上
Spec Driven Development 工程化实践
6月12-13日 北京+线上
     
   
 订阅
AUTOSAR通信栈全家桶:COM、PduR、CanIf、CanDrv到底谁负责什么?
 
作者:Cc春雨
 
  14   次浏览      3 次
 2026-6-9
 
编辑推荐:
本文主要主要介绍了AUTOSAR通信栈全家桶:COM、PduR、CanIf、CanDrv到底谁负责什么等相关内容。希望对你的学习有帮助。
本文来自于微信公众号老司机的智驾工程笔记,由火龙果软件Alice编辑,推荐。

前言

刚接触AUTOSAR的时候。

很多新人都有过这样的经历。

打开代码。

看到:

  1. Com_SendSignal(...)

 

心想:

“原来CAN发送这么简单。”

结果继续往下跟。

发现:

  1. COM
  2. PduR
  3. CanIf
  4. CanDrv
  5. CAN Controller

 

瞬间懵了。

于是开始产生灵魂拷问:

COM是什么?

PduR干什么的?

CanIf和CanDrv有什么区别?

为什么发一个CAN报文要经过这么多层?

今天我们就用最容易理解的方式,把AUTOSAR通信栈讲清楚。

先看结论

如果把CAN发送比作快递。

那么:

  1. COM = 打包员
  2. PduR = 快递分拣中心
  3. CanIf = 快递网点
  4. CanDrv = 快递员
  5. CAN控制器 = 快递车

 

理解这句话。

你已经掌握50%了。

一个车速信号是怎么发送出去的?

假设:

应用层有个车速信号:

  1. VehicleSpeed = 100km/h

 

需要发送到CAN总线。

应用层调用:

  1. Com_SendSignal();

 

从这一刻开始。

通信栈开始接管。

第一站:COM

COM模块全称:

Communication Module

很多新人以为:

COM负责发CAN报文。

其实不准确。

COM负责的是:

信号管理

例如:

一个CAN报文ID:

  1. 0x100

 

里面可能有:

  1. VehicleSpeed
  2. VehicleGear
  3. VehicleMode
  4. VehicleState

 

四个信号。

COM负责:

  1. 信号打包
  2. 信号解包
  3. 周期管理
  4. 超时管理

 

可以理解成:

快递打包员

应用层说:

  1. 发送车速100km/h

 

COM负责:

  1. 把数据塞进CAN报文

 

形成:

  1. CAN ID = 0x100
  2. Data:
  3. 64 03 00 01 00 00 00 00

 

然后交给下一层。

COM到底长什么样?

图1:COM负责信号与报文转换

第二站:PduR

PduR全称:

PDU Router

协议数据单元路由器。

新人第一次看到这个名字:

  • 这玩意是干嘛的?

实际上:

PduR就是路由器

它根本不关心数据内容。

它只关心:

  1. 数据从哪来?
  2. 应该送去哪?

 

例如:

COM发来一个PDU。

PduR可能决定:

  1. 发给CanIf

 

或者:

  1. 发给CanTp

 

或者:

  1. 发给DoIP

 

所以:

PduR是整个AUTOSAR通信栈的交通指挥中心。

看图。

图2:PduR路由中心

第三站:CanIf

CanIf全称:

CAN Interface

CAN接口层。

这里是新人最容易搞混的地方。

很多人分不清:

  1. CanIf
  2. CanDrv

 

到底有什么区别。

记住一句话:

CanIf负责统一接口

CanDrv负责操作硬件

例如:

主机厂今天使用:

  1. TC397

 

明天换:

  1. S32K

 

如果应用直接调用驱动。

整个项目都要修改。

CanIf的作用就是:

屏蔽底层差异。

对于上层来说:

永远只看到:

  1. CanIf_Transmit(...)

 

底层换什么芯片。

完全无感知。

这就是经典的软件解耦思想。

CanIf就像快递网点

快递到了网点。

网点不会亲自送货。

它只负责:

  1. 接收快递
  2. 登记快递
  3. 安排快递

 

真正送货的是下面的快递员。

第四站:CanDrv

CanDrv:

CAN Driver

驱动层。

终于来到最底层了。

CanDrv负责:

  1. 配置寄存器
  2. 配置Mailbox
  3. 发送报文
  4. 接收报文
  5. 处理中断

 

这里已经开始接触硬件。

对于TC397来说。

CanDrv会操作:

  1. MCMCAN

 

控制器。

对于S32K来说。

CanDrv会操作:

  1. FlexCAN

 

控制器。

所以:

CanDrv是真正干活的人。

看图。

图3:CanIf与CanDrv关系

最后一站:CAN控制器

CanDrv调用硬件。

最终进入:

  1. CAN Controller

 

然后发送到:

  1. CAN Bus

 

这时候。

另一台ECU就能收到数据。

整个发送流程

把前面内容串起来。

一个车速信号发送过程:

  1. Application
  2. COM
  3. PduR
  4. CanIf
  5. CanDrv
  6. CAN Controller
  7. CAN Bus

 

是不是突然清晰很多?

接收流程呢?

发送和接收其实正好相反。

CAN控制器收到报文:

  1. CAN Controller
  2. CanDrv
  3. CanIf
  4. PduR
  5. COM
  6. Application

 

看图。

图4:Can通信完整收发链路

为什么AUTOSAR要设计这么多层?

新人最常问:

  • 发个CAN报文而已。

  • 为什么要绕这么远?

因为汽车软件最大的敌人:

不是性能。

而是复杂度。

想象一下。

一个域控制器:

  1. 500+
  2. CAN信号
  3. 100+
  4. CAN报文
  5. 几十个功能模块

 

如果所有模块直接操作驱动。

项目半年就会失控。

AUTOSAR通过分层:

  • COM负责信号

  • PduR负责路由

  • CanIf负责接口

  • CanDrv负责硬件

每层只干一件事。

整个系统才有可能维护十年以上。

新人应该怎么学通信栈?

推荐顺序:

第一步:

理解完整数据流。

不要背规范。

第二步:

重点学习:

COM

PduR

CanIf

CanDrv

 

第三步:

学会跟踪一个报文。

从:

Com_SendSignal()

 

一路跟到:

CAN总线

 

当你能独立追踪一次完整通信链路。

通信栈基本就入门了。

写在最后

很多人学习AUTOSAR通信栈。

最大的误区就是:

背模块。

实际上:

通信栈不是模块集合。

而是一条数据流。

记住今天这句话:

  • COM负责打包。

  • PduR负责路由。

  • CanIf负责统一接口。

  • CanDrv负责操作硬件。

当你真正理解这四层。

AUTOSAR通信栈的大门才算真正打开。

   
14   次浏览       3 次
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
AI辅助企业网络安全与治理 6-11[北京]
基于模型的数据治理 6-16[北京]
Spec 驱动开发(SDD)实战 6-12[北京]
具身智能技能与实践 6-11[厦门]
AI智能体开发技术实践 6-24[上海]
AI辅助软件测试方法与实践 6-26[在线]
 
 
最新文章
ASPICE中配置管理是个什么东西?
了解软件安全分析与组件鉴定
掌握Autosar ComStack的精髓!
基于整车功能的正向诊断需求开发
搞定Autosar SWC开发秘籍,码住!
汽车OTA更新的系统性威胁评估
最新课程
基于SOA的汽车电子架构设计与开发
Auto SAR原理与实践
AUTOSAR架构与实践(从CP到 AP )
AUTOSAR架构建模方法与工具(EA)
ASPICE4.0核心开发过程指南
MBSE(基于模型的系统工程)
更多...   
成功案例
某知名车企 AUTOSAR应用设计与开发
吉利汽车 MBSE工程体系汽车建模及评估
某整车企业 《功能需求分析与设计》
富奥汽车零部件 建模工具EA
零跑汽车 建模工具EA及服务
北汽福田 建模工具EA
小鹏汽车 建模工具EA
更多...