
通信链路全景:从应用层到物理层
数据流详解:一帧报文的发送与接收旅程
E2E保护在通信链路中的嵌入
状态管理:CanSm与ComM
实践要点

本系列专栏聚焦功能安全软件工程实践,将针对车载/工控场景下的主流AUTOSAR基础软件模块,系统性拆解落地思路。结合模块基础功能介绍、芯片合规要求、MCAL适配标准等,凝练工程调试与集成的避坑经验。
本次系列会覆盖CAN、COM、MCU、ADC、PORT、DIO等多款核心MCAL和BSW上层交互模块,聚焦功能安全的工程逻辑与合规落地方法。希望不管是功能安全入门新手,还是需要梳理项目流程的开发者,都能在这里找到贴合实战的参考内容。
在前面已发布的两篇文章《【功能安全软件实践】软件安全机制3--安全通信要求》和《【功能安全软件实践】软件安全机制3--CP安全通信》中,我们分别探讨了Adaptive Platform(AP)和Classic Platform(CP)的端到端(End-to-End, E2E)保护机制,重点分析了E2E如何帮助检测安全关键数据在传输过程中的损坏、丢失、重复、乱序和超时等错误。需要说明的是,E2E属于功能安全语境下的通信保护机制,核心关注数据完整性与时序一致性,并不等同于加密、认证或保密等信息安全机制。然而,E2E保护并非凭空运行——它嵌入在AUTOSAR CP的通信栈之中,依赖于从应用层到物理层的完整数据通路。那么,一个信号从软件组件发出,到最终出现在CAN总线上,究竟经历了哪些层级?每一层又承担了怎样的职责?本文将沿着RTE → COM → PduR → CanIf → Can的完整通信链路,逐层解析数据流转机制,并结合E2E保护与CanSm/ComM状态管理,帮助开发者构建对AUTOSAR CP通信体系及E2E边界的全景认知。

1. 通信链路全景:从应用层到物理层
在AUTOSAR CP架构中,通信功能被严格分层设计,每一层只与相邻层交互,形成清晰的调用链路。从上到下,核心通信栈由以下五层构成:
1)RTE
作为SWC与BSW之间的通信桥梁,RTE屏蔽了底层通信细节。SWC通过Rte_Write/Rte_Read接口与外界交互,而RTE负责将调用映射到COM层的发送/接收服务。此外,RTE还管理触发机制——通过Event Mapping配置,决定何时激活SWC的Runnable Entity来处理接收到的数据。
2)COM
信号级别的通信管理器。COM的核心职责是将应用层的信号打包为PDU,或将接收到的PDU解包为信号。发送端,COM根据传输模式决定何时触发发送——可以是周期发送、事件驱动或混合模式;接收端,COM提供信号过滤和通知机制,只有满足条件的数据才会通知上层。COM还支持信号网关,实现不同PDU之间的信号路由。
3)PduR
PDU级别的路由器。PduR根据路由表配置,将上层的PDU路由到正确的底层接口模块。它上接COM,下接CanIf,是通信栈的“交通枢纽”。PduR还支持网关路由,即从一个总线接收PDU并转发到另一个总线,实现ECU间的报文转发。若项目采用E2E Transformer一类工具链集成方式,PduR通常只负责转发已经由上层完成E2E封装的PDU,本身并不承担E2E保护逻辑。
4)CanIf
CAN通信的抽象接口层。CanIf屏蔽了底层CAN控制器的硬件差异,为上层提供统一的PDU收发接口。发送时,CanIf将PDU映射到特定的HTH;接收时,CanIf通过HRH匹配报文,并通过RxIndication回调通知上层。CanIf还负责发送确认和控制器模式管理(通过CanIf_SetControllerMode与CanSm交互)。
5)Can
MCAL层的CAN驱动,直接与CAN控制器硬件交互。Can模块负责CAN控制器的初始化、波特率配置、中断处理和消息缓冲区管理。它是通信栈中唯一直接操作硬件寄存器的模块,所有上层的通信功能最终都通过Can驱动完成物理收发。
表1 AUTOSAR CP通信栈各层职责对比

2. 数据流详解:一帧报文的发送与接收旅程
理解了各层职责后,让我们跟踪一帧报文在通信栈中的完整旅程,看看数据如何从SWC一路到达CAN总线,以及反向路径又是怎样的。
1)发送路径
SWC调用Rte_Write将信号值写入RTE;RTE将信号传递给COM层;COM层将信号打包为PDU,并根据TMS判断是否满足发送条件;满足条件后,COM调用PduR_ComTransmit将PDU交给PduR;PduR查找路由表,确定目标CAN通道,调用CanIf_Transmit;CanIf将PDU映射到对应的HTH,调用Can_Write将消息写入CAN控制器的发送缓冲区;CAN控制器在总线空闲时将消息发送到CAN总线上;发送完成后,Can驱动产生TxConfirmation中断,逐层向上确认发送成功。
2)接收路径
CAN控制器通过中断接收到总线上的报文;Can驱动的中断服务程序将报文从硬件缓冲区取出,调用CanIf的RxIndication回调;CanIf根据HRH匹配规则,确定该报文对应的PDU ID,调用PduR的RxIndication;PduR根据路由表将PDU向上路由至COM层;COM层将PDU解包为信号,执行Data Filter过滤,对满足条件的信号设置更新标志;RTE根据Event Mapping配置,触发SWC的Runnable Entity执行,SWC通过Rte_Read获取信号值。
3. E2E保护在通信链路中的嵌入
前文介绍过几类工程上常见的E2E集成方式——Wrapper、Transformer和Com Callout。现在,让我们将它们放回通信链路的上下文中,重点讨论典型的E2E检查点位置,以及由此形成的保护边界。
首先需要明确边界。AUTOSAR E2E主要用于检测数据损坏、重复、丢失、乱序以及延迟/超时等通信错误;它不直接提供保密性、身份认证或总线攻击防护能力。若项目还需要消息认证、抗伪造或抗重放等信息安全能力,通常应结合SecOC等机制另行设计。因此,讨论“保护范围”时,更准确的说法是“E2E检查点覆盖到哪里”,而不是把它等同于广义的安全通信。
1)Transformer模式
典型情况下,E2E相关的封装与校验逻辑由工具链基于系统描述生成,对SWC相对透明。发送侧通常在数据进入下层通信栈前完成CRC和Counter等E2E字段处理,接收侧则在数据交付应用前完成校验。其典型保护边界接近发送端RTE侧到接收端RTE侧,但具体落点、状态暴露方式以及代码生成形态仍依赖供应商工具链和项目配置。这类方式通常较符合AUTOSAR分层解耦思路。
2)Com Callout模式
E2E逻辑挂接在COM发送/接收处理的回调点附近。发送时,项目可在Send Callout中补充E2E保护;接收时,可在Receive Callout中完成校验。由于检查点更靠近COM层,其典型保护边界通常小于应用侧封装方案,对应用内部缓存、映射或拷贝错误的覆盖能力也更弱。它仍可用于工程上的端到端数据保护,但覆盖能力取决于回调放置位置以及状态传递设计。
3)Wrapper模式
在RTE接口之上增加一层应用适配逻辑,每当SWC调用Rte_Write/Read时,先由Wrapper执行E2E保护或校验。若项目将检查点前移到该层,保护边界可以进一步贴近应用侧;代价是侵入性更高——涉及安全信号的接口需要额外封装,代码复用和维护成本也会上升。
不同集成方式都需要把E2E校验结果传递给应用或诊断路径,但状态类型、访问接口和上报时机并不存在单一固定模式。以Profile 1为例,项目通常会处理相应的E2E状态结果;Dem(诊断事件管理器)也并非必经路径,只有在需要记录DTC、冻结帧或纳入整车诊断策略时才会介入。Wrapper模式下,状态可由封装接口直接返回给应用;Transformer模式下,工具链通常会生成配套的状态访问路径或接口;Com Callout模式下,则往往需要项目自行设计通知、共享状态或诊断上报机制。
表2 三种E2E集成模式对比

4. 状态管理:CanSm与ComM
通信链路不仅需要正确的数据流转,还需要可靠的状态管理来确保通信在合适的条件下进行。AUTOSAR CP通常通过CanSm和ComM两个模块来管理通信状态,它们与通信栈协同,为通信的启停、降级与恢复提供支撑。
CanSm负责协调CAN网络状态以及BusOff恢复流程。工程上常见的控制器模式包括UNINIT、STOPPED、STARTED和SLEEP,但实际状态迁移与恢复节奏仍要以具体配置和供应商实现为准。STARTED状态下控制器可以正常收发;STOPPED状态下不参与通信;SLEEP状态用于低功耗。BusOff发生后,CanSm通常会按照配置触发恢复流程,通过CanIf/Can驱动接口将控制器切换至相应模式,并在满足条件后重新恢复通信。
ComM(Communication Manager)是更高层级的通信状态协调器,用于管理各通信通道的请求与模式。常见模式包括FULL_COM(正常收发)、SILENT_COM(通常只接收不发送)和NO_COM(不参与通信)。通信用户通过ComM_RequestComMode发起模式请求后,ComM会结合网络管理、状态机和底层总线状态协调切换;在CAN网络中,这通常体现为与CanSm、Com等模块联动完成启停与发送许可控制。
几类E2E集成方式与ComM/CanSm的协同,需要结合具体接入位置来理解。与ComM的协同:当通道切换到NO_COM或SILENT_COM后,报文收发会受限;此时E2E逻辑是否继续被调用、调用频率是否保持不变,以及接收端何时判定超时,取决于Runnable调度、接收路径是否仍被激活以及E2E检查点放置位置。与BusOff恢复的协同:BusOff期间链路中断,接收端通常会在若干报文周期后表现为超时或同步异常;恢复完成后,接收端往往还需要经历重新同步过程,是否立即回到“正常”状态取决于所用E2E Profile、计数器窗口和状态机配置。因此,更稳妥的工程做法是把CanSm/ComM视为通信可用性管理机制,把E2E视为数据正确性监测机制,两者协同但不应相互替代。
5. 实践要点
理论框架之外,实际项目中通信链路的配置与调试同样值得关注。以下从工程角度梳理几个关键实践要点。
通信定义是配置起点:根据通信矩阵定义信号与报文,转换为系统描述格式后导入配置工具。各消息建议合理分组以优化代码生成效率,同时确保数据类型定义完整。
层级配置需逐层协调:CAN控制器、CanIf、PduR、COM、RTE等各层配置需逐层确认,关键点包括控制器硬件参数(波特率、中断、缓冲区)与硬件手册一致;BSW层与MCAL层的CAN配置需保持一致,避免索引错误;RTE生成前需检查EventMapping和端口命名,确保无遗漏或冲突。
工程中常见的通信问题多集中在以下几个方面:
1)状态与使能一致性
CAN控制器未正确启动会导致发送写入失败,需确保控制器状态(CanSm)与通信使能(ComM)协调一致。
2)配置协调一致性
上下层配置如波特率计算、模式枚举量定义需仔细核对,不一致会导致通信失败甚至BusOff。
3)生成代码完整性
代码生成后需检查各模块头文件和MainFunction调度是否齐全。通信栈的各层MainFunction须在OS任务中周期调用,否则收发逻辑无法正常执行。

最后,请大家思考及回顾以下问题:
问 | CanIf和Can模块有什么区别? |
答 | CanIf是CAN接口抽象层,为上层提供统一的PDU收发接口,屏蔽不同CAN控制器的硬件差异;Can是MCAL驱动层,直接操作CAN控制器硬件寄存器。CanIf通过调用Can模块的接口完成实际的物理收发,上层模块只需与CanIf交互,无需关心底层硬件细节。 |
问 | BusOff后通信如何恢复? |
答 | CanSm通常会依据BusOff恢复配置触发控制器模式切换与重启流程。恢复期间,接收端可能出现超时或同步异常;恢复后是否立即回到正常状态,还取决于报文周期、E2E Profile和接收端状态机。 |
问 | E2E保护与CanSm状态管理如何配合? |
答 | CanSm负责把总线从异常状态带回可通信状态,E2E负责在数据恢复流动后继续检测超时、计数器和CRC等异常。BusOff或模式切换期间,应用看到的E2E结果往往会出现超时、不同步或等待同步等状态;具体报码点和恢复节奏取决于集成方式与配置。两者结合后,可以为功能安全应用提供更完整的通信可用性与数据正确性信息。 |

本文系统梳理了AUTOSAR CP通信栈从RTE到CAN的完整链路。RTE负责把SWC访问映射到下层通信服务,COM承担信号打包/解包与传输控制,PduR完成PDU路由,CanIf负责CAN接口抽象,Can驱动落到硬件收发。在此基础上,E2E为安全相关数据提供完整性与时序一致性检测,CanSm和ComM负责通信状态与可用性管理。需要强调的是,E2E并不等同于加密或认证机制,是否满足ISO 26262目标还取决于系统级安全需求、架构设计与验证证据。理解这条链路及其边界,是做好AUTOSAR CP安全相关通信设计的基础。

AUTOSAR_SWS_COM, AUTOSAR FO R22-11.
AUTOSAR_SWS_PduR, AUTOSAR FO R22-11.
AUTOSAR_SWS_CANIF, AUTOSAR FO R22-11.
AUTOSAR_SWS_CANDriver, AUTOSAR FO R22-11.
AUTOSAR_SWS_CANSM, AUTOSAR FO R22-11.
AUTOSAR_SWS_COMM, AUTOSAR FO R22-11.
AUTOSAR_PRS_E2Eprotocol, AUTOSAR FO R22-11


我们功能安全团队成立于2008年,是国内较早从事功能安全技术研究的团队,作为功能安全国家标准委员会成员参与功能安全、预期功能安全标准制定,作为芯片创新联盟核心成员参与车规级自主芯片功能安全国标制定。目前有专职的功能安全技术人员80余人,团队成员大多来自985/211高校,核心项目实施团队拥有8年以上电控产品开发经验,可以提供面向量产车型开发从概念设计到正式投产的全栈功能安全咨询服务,当前已成功为国内外整车及零部件企业提供150+项工程咨询服务。

未来,我们将紧跟行业发展趋势和市场需求,结合自身汽车电子产品研发和国内外咨询实践,一如既往地坚持自主创新道路,为智能汽车安全保驾护航。

如涉及文字或图片侵权请及时与我们联系反馈,文章版权及解释权归原作者及发布单位所有,如需转载或引用文本的任何内容,请注明出处。

✌✌tips:敬爱的读者朋友们,由于微信的推送规则,即使您关注了我们,可能也常常收不到推送,记得点击"HiFusa"名片,设为星标⭐ ,文章会自动推送哦!

张鹏飞 | 作者
董小雨|刘天宇 | 编辑
夏信凯 | 图片
董小雨|赵宁|邵亮 | 校审
hifusa@hirain.com | 联络/投稿
转发分享!
推荐阅读 · 其他合集
【功能安全基础知识】
【行业观察】
【AI功能安全】
【安全组件设计】
夜雨聆风