查看原文
其他

AUTOSAR 通信栈分析(一)

快乐的肌肉 汽车MCU软件设计 2024-03-08

目录1.通信栈架构概述

1.1 SDU、PDU及命名规则

    1.1.1 SDU、PCI和PDU

    1.1.2 SDU\PDU命名规则

1.2 通信方式

2.Com解析

2.1 基本功能介绍        

2.2 Signal / I-PDU Group 

2.3 发送模式

2.4 发送模式选择 

3.小结


01

通信栈架构概述

相信大多数工程师接触AUTOSAR都是从CAN通信开始点点点,如上图所示,通信栈由通信服务层、通信硬件抽象层以及通信驱动层构成;
具体而言,包括CAN、LIN、FlexRay、Eth的通信,如下图所示:

可以看到,在上图的通信链路出现了I-PDU、N-PDU、L-PDU等等,这些名词是什么意思呢?我们进一步进行分析。
1.1  SDU、PDU及命名规则

1.1.1 SDU、PCI和PDU

AUTOSAR通信栈参考了OSI的7层模型概念:

SDU:全称Service Data Unit

PCI  :全称Protocol Control Information

PDU:全称Protocol Data Unit

PDU = PCI | SDU 

     一般来说,我们最常讨论的就是PDU,为什么不单独把SDU拉出来说呢?因为SDU是针对通信层级来说,抽象一点讲,就是当本层收到上层传来的原始数据之后,需要在本层做处理,那么这个原始数据就叫做SDU,处理添加的信息就叫做PCI;处理完成要发送给下一层,这个时候把PCI和SDU组合成PDU传递给下一层,接收数据是同样的流程。如下图所示:


Layer N收到Layer N+1传来的PDU,这时候在Layer N层,这个PDU就叫做SDU,这个SDU在Layer N层添加完PCI后,发送给Layer N-1层,发送的就是PDU,而Layer N-1接收到是Layer N的PDU,但在它这一层又叫做SDU。换句话说,只有同层级的才能叫SDU。
这个例子最常见就是TP层和IF层之间的通信,如下:

1.1.2 SDU\PDU命名规则

有了上述概念,我们再来看看I\N\L-PDU是什么意思。根据AUTOSAR规范,S\PDU的命名规则均按如下格式:<bus prefix><layer prefix>-PDU。因此,对于AUTOSAR架构,不同层级的PDU命名如下:

        根据上表,我们可以把PDU命名规则以图形的方式表达出来,如下

  • 以普通CAN通信为例,其PDU命名如下:

 以诊断通信为例,添加了网络层的东西,因此命名如下:

1.2  通信方式

  • 直接数据传输方式

该方式主要用在外部ECU的交流;

以普通CAN报文为例

  • 通常路线为 Com->PduR->CanIf->Can模块

  • 对应API为 PduR_ComTransmit->CanIf_Transmit->Can_Write 

  • 数据缓冲方式

该方式主要的用于Lin或者FlexRay通信,在传输时先缓冲要发送的数据,然后根据底层机制如Lin或Fr的静态的周期性的调度表来触发缓冲的数据的传输。

  • 数据转换流程

        目前,基于SOA架构的兴起,AUTOSAR也相应作了一些改变,如下:

RTE首先通过SOME/IP转换数据格式,然后再通过E2E进行功能安全级别的封装,最后通过AUTOSAR COM栈进行数据传输。这里面最重要的就是S2S(Signsal to Service Translation),这也是传统控制类ECU与SOA架构下的不同ECU的通信基础。



02


Com层基本概念解析2.1 基本功能介绍

Com层位域AUTSOA BSW架构中的服务层,主要就是处理信号,为SWC提供信号级别(Signal)的通信数据服务接口,或者根据信号自定义发送类型来发送PDU。

因此这一层提供的API通常是以signal为主,如下:
  • Com_SendSignal

  • Com_ReceiveSignal

  • Com_SendSignalGrou

  • Com_UpdateShadowSignal

  • ....

2.2 Signal/I-PDU Group

AUTOSAR提供了信号组和PDU组的方式,以满足SWC的复杂数据类型,比如说一个非常复杂的结构体数据量很大,不容易在一个信号里进行封装,但为了保证发送数据的整体原子性,就以信号组的概念来满足。信号组使用shadow buffer的机制来管理信号数据一致性,RTE或者SWC通过这个shadow buffer去访问信号组里的信号,如果该buffer需要与I-PDU进行同步,RTE或者SEC可以通过Com_SendSignalGroup\ComReceiveSignalGroup显式地触发同步,这种就是原子级的同步方式。具体步骤如下:

此外,在I-PDU层级也有PDU Group的概念,RTE或者SWC可以控制针对某些PDU Group的收发禁用,这在首帧NM报文实现上非常有用。 如下图:

2.3 发送模式

在AUTOSAR规范里,报文的发送模式总共可以分为四种,如下表
发送模式\传输属性TimerTriggeredPending
直接/N-Times--立即发送
周期根据周期配置发送--
混合根据周期配置发送立即发送
None-

         直接\N次发送和周期发送很好理解,如下图:

混合类型的,就是平时按照周期去发送,如果有事件触发后立即发送,不管此时周期是否到了。

2.4 发送模式选择

有了以上基本概念之后,我们最后来发送模式选择,为什么要定义发送模式的选择呢?主要是I-PDU里包含了不止一个信号,这种发送模式选择就是根据I-PDU里的信号状态来选择发送模式。这里有两个概念,TMC(Transmission Mode Condition)和TMS(Transmission Mode Selector)AUTOSAR COM模块在发送端使用过滤机制作为TMC,但不会过滤掉发送端的信号。

过滤机制

描述

ALWAYS

每次都能通过过滤

NEVER

每次都不能通过过滤

MASKED_NEW_EQUALS_X

新的发送的值和配置的掩码相与等于一个配置值的时候才能通过

MASKED_NEW_DIFFERS_X

新的发送的值和配置的掩码相与不等于一个配置值的时候才能通过

MASKED_NEW_DIFFERS_MASKED_OLD

新的发送的值和配置的掩码相与后的结果不等于之前发送的值和配置的掩码相与后的结果的时候才能通过

NEW_IS_WITHIN 

新发送的值在一个配置的范围之内才能通过

NEW_IS_OUTSIDE

新发送的值不在一个配置的范围之内才能通过

ONE_EVERY_N

每隔N(配置的一个值)次才能通过过滤一次

最终根据TMC的真假从而选择发送模式,这就到我们配置时常见的ComTxModeTrue/False。

整体流程如下:



03


小结

本章内容,我们将通信栈的整体结果做了一个描述,并详细讨论了Com层常用的几个概念,例如发送模式、发送模式选择、信号组和PDU组等,但还有很多细节没有讲,比如说Update Bits、deadline监控、动态长度的信号等等,这需要在项目工程中具体问题具体分析;在下节内容,我们将继续介绍PduR、以CAN通信为例介绍发送接收流程。

往期回顾:

1.汽车标定合集

汽车标定文章合集
汽车标定技术--XCP协议如何支持测量功能
硬核:汽车标定--多周期测量显示异常汽车标定技术--MPC57xx是如何支持标定的页切换

2.AUTOSAR合集

AUTOSAR OS概述(一)
AUTOSAR OS概述(二)
AUTOSAR文章合集
Flash模拟EEPROM原理浅析

3.汽车网络安全合集

汽车网络安全方案产品交付形态的思考
汽车网络安全方案需求分析
车载信息安全场景概述
汽车网络安全渗透测试概述
汽车网络安全文章合集

4.汽车功能安全合集


5.汽车虚拟化合集

    汽车ECU虚拟化技术初探(一)


继续滑动看下一个

AUTOSAR 通信栈分析(一)

快乐的肌肉 汽车MCU软件设计
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存