上课时间到啦,掏出你们的小本本~今天我们要跟大家分享的是:如何用PREEvision设计E2E通信保护。

说到E2E通信保护,相信很多童鞋已经开始抓耳挠腮了。

当前汽车EE架构朝着智能化、网联化发展,车载网络变得更加复杂,通信安全性越来越重要,对此,AUTOSAR提出了E2E通信安全机制,能够动态、灵活地实现对通信过程的保护。如何设计E2E通信保护成为了许多开发人员脱发的难题,而PREEvision作为功能强大的架构开发工具,可以帮助我们轻松实现E2E通信保护设计(终于不用秃头了
)。

在学习如何设计E2E通信保护设计之前,我们对E2E通信保护做个简单的了解。
E2E通信保护概述
E2E即End to End,实现从终端到终端的保护。在这里终端可以理解为应用层软件模块SWC,E2E通信保护关注的是从发送端SWC到接收端SWC整个通信链路过程中的数据保护。我们先来看看在整个AUTOSAR通信链路中会有哪些故障发生。
整个通信链路包括应用层、RTE、BSW、硬件层,故障来源主要是软件相关故障和硬件相关故障。如下图所示是通信链路中的容易产生故障的环节,S1~S4是软件相关故障,H1~H3是硬件相关故障。

软件相关故障
S1:RTE生成代码出错
S2:COM服务层代码出错
S3:协议栈接口层和驱动层之间出错
S4:跨核通信中IOC/OS出错
硬件相关故障
H1: 通信物理网络故障
H2: 通信网络的接口或线缆EMC干扰
H3: 跨核通信中微控制器故障
E2E通信保护是通过E2E模块调用E2E Library来实现的。E2E Library是独立于BSW的AUTOSAR模块,能够提供若干种E2E Profiles供用户选择,E2E Profiles包含一系列错误保护机制,这些保护机制包括以下内容:
1)CRC,由CRC Library提供,CRC Library也是独立于BSW的AUTOSAR模块;
2)Sequence Counter和Alive Counter,其值随着每次数据发送逐渐增加;
3)Data ID,标记每个需要被保护的数据,CRC计算需覆盖该字段。
当前AUTOSAR标准中的E2E Library能够提供8种Profiles:Profile 1、2、4、5、6、7、11和22,每一种Profile都有特定的控制参数。关于Profile的介绍,可以参考AUTOSAR文档《AUTOSAR_SWS_E2ELibrary》,每种Profile包含的参数都有具体描述。
E2E通信保护原理
在发送端,E2E模块通过调用E2E Profile,根据被保护的数据、Data ID以及Counter计算出CRC值,DataID、Counter和CRC组成E2E Header,随着被保护数据一起发送;在接收端,调用E2E Profile,根据接收到的数据、Data ID和Counter计算出CRC值,并与接收到的CRC值进行对比验证。当对比结果不一致时,则提示错误发生,将错误值返回给E2E模块,然后由E2E模块传递给应用层SWC进行处理。
E2E Library的调用主要由E2E Transformer、E2E Protection Wrapper和COM Callout这三种E2E模块来实现。
1)E2E Protection Wrapper

E2E Protection Wrapper位于RTE层以上,属于应用层SWC的子层模块,实现的是基于Data Element的数据保护。如上图所示,当发送端SWC发送数据时,先将数据发送给Protection Wrapper,Protection Wrapper调用E2E Library,添加控制参数,实现数据的保护;接收端的Protection Wrapper调用E2E Library,对数据进行校验,提取出安全数据返回给接收端SWC。除了对经过RTE和BSW的数据进行保护,E2E Protection Wrapper还可以保护SWC之间通过VFB(Virtual Functional Bus)通信的数据。
2)E2E COM Callout


E2E COM Callout位于RTE层以下,实现的是基于IPDU(Signal Group)的数据保护。如上图所示,发送端SWC将I-Signals发送至COM模块,由COM E2E Callouts调用E2E Library,将控制参数添加到I-PDU中,再将I-PDU传输至PDU Router。对于接收端来说,I-PDU从PDU Router传输至COM模块,此时COM Callout调用E2E Library对数据进行校验,校验完成后COM将I-PDU中的信号解析,再经过RTE发送至应用层SWC。
3)E2E Transformer

E2E Transformer位于RTE层以下,由RTE调用,实现的也是基于Data Element的数据保护。以上图为例,Ethernet数据从发送端SWC经过RTE进行传输,RTE首先调用SOME/IP Transformer,对数据进行SOME/IP序列化,序列化后的数据返回给RTE,再调用E2E Transformer进行E2E序列化,E2E Transformer调用E2E Library添加E2E控制字段,之后将数据再次返回给RTE,最后由RTE发送给COM模块。在接收端,COM模块接收到的数据分别进行E2E反序列化和SOME/IP反序列化,最后经过RTE传输至应用层SWC。

在PREEvision中设计E2E通信保护
PREEvision集成了E2E保护的功能,下面小编就和大家一起分享下在PREEvision中基于Transformer and E2E Explorer设计E2E保护的流程。
Transformer and E2E Explorer是PREEvision自带的Explorer模块,操作界面类似于以前介绍过的SOA Explorer,以分步骤的形式建模,主要是创建SOME/IP Transformer和E2E Transformer。SOME/IP Transformer的设计方法在文章《如何在PREEvision中进行SOA建模》中已作过介绍,这里就不再展开。
通过Transformer and E2E Explorer在已有通信模型的基础上创建E2E Transformer,并将E2E Transformer分配给信号,来实现E2E保护。
E2E Explorer的建模过程分为以下4步:
1)Transformer Configuration
2)Transformer Chains
3)Transformation Properties
4)Signal Assignment

1、Transformer Configuration
在此步骤创建E2E Transformer,并在Explorer表格或Property View中设置相关参数,主要参数如下:
ID:Transformer的ID值;
Protocol:Transformer的协议名称,设置为E2E;
Transformer Class:Transformer的类别,设置为SAFETY;
Version:协议版本,设置为1.0.0;
Header Length:E2E Header长度,单位为bit;
In Place:选择是in-place模式还是out-of-place模式;
Profile Name:用到的E2E Profile名称,例如可以设为PROFILE_01;
Data ID Mode:Data ID模式,以Profile 1为例:
› All 16 Bit,对应E2E_P01_DATAID_BOTH
› Alternating 16 Bit,对应E2E_P01_DATAID_ALT
› Lower 8 bit,对应E2E_P01_DATAID_LOW
› Lower 12 Bit,对应E2E_P01_DATAID_NIBBLE;
Profile Behavior:用的AUTOSAR版本,设置为R-4--2,表示用的是4.2之后的版本
Window Size:E2E状态机监控窗口的大小。

此外,还可以设置E2E Transformer的一些扩展属性:
Counter Offset:Counter在数据场中的Offset,也就是在数据Layout中的位置;
CRC Offset:CRC在数据场中的位置;
Data ID Nibble Offset:Data ID Nibble在数据Layout中的位置;
Max DeltaCounter:接收到的两个连续数据的Counter值的最大允许差值。
以上列举E2E Transformer的一些主要属性,除此之外还有很多其它属性,这里就不全部列举了,大家可以参考下AUTOSAR E2E Library文档了解这些属性的含义。
2、Transformer Chains
Transformer Chain能够将不同的Transformer串联应用,共同实现数据的序列化。以下图为例,Ethernet发送端发送的数据,先后经过SOME/IP序列化和E2E序列化,在SOME/IP信号的基础上实现E2E保护。

在下图所示的表格Transformer Chain Configuration中可以创建Data Transformation,每个Data Transformation表示一个Transformer Chain,通过创建Transformer Assignment,可以将SOME/IP Transformer和E2E Transformer关联到Data Transformation。在表格中的Transformer Kind列可以设置Data Transformation类别:
AsymmetricFromByteArray-表示Data Transformation仅用在接收端;
AsymmetricToByteArray-表示Data Transformation仅用在发送端;
Symmetric-表示Data Transformation在发送端和接收端都被使用。

3、Transformation Properties

此步骤创建E2E Transformation Properties,并分配给需要被保护的信号。E2E Transformation Properties表示AUTOSAR中的End To End TransformationI Signal Props,可以在表格E2E Properties中设置以下属性:
Cs ErrorReaction:设置Client-Server通信模式的故障处理方式,有autonomous和application only两种方式。Autonomous表示Transformer和RTE协同处理故障;application only表示在应用层实现故障处理;
Data ID:被保护数据的标识符;
Data Length:被保护数据的长度;
Min Data Length:被保护数据的最小长度;
Max Data Length:被保护数据的最大长度。
4、Signal Assignment
最后一步是把Data Transformation分配给Signal,在表格Signal/Transformation Assignment 中可以看到Signals和对应的Data Transmission、Transformer。LdCom Analysis列显示Com,表明该信号经过Com模块传输;若显示LdCom,则表明信号经过LdCom模块传输。

通过以上步骤就完成了E2E保护的建模,之后在模型中的软件层或硬件层可以导出ARXML文件,导出的ARXML文件包含E2E Transformer的属性和配置信息。将ARXML导入到Davinci Configurator进行E2E的配置,生成代码。
以上就是基于E2E Transformer Explorer设计E2E的基本流程,除了这种方法,还可以基于PREEvision模型中的I-PDU和Data Element进行建模。使用PREEvision设计E2E具有很好的可视化效果,步骤清晰明了,参数配置灵活。在实际项目中,E2E的应用场景会更加复杂,但设计思想是不变的,通过对PREEvision模型的深入研究并不断实践,能够更好地理解汽车通信安全机制,提高汽车软件开发的安全性和可靠性。
OK,关于E2E通信保护的内容今天就介绍到这里啦,想要了解更多内容(想要少脱发
),欢迎大家持续关注“怿星科技”公众号!
更多精彩推荐:
手把手教你如何在PREEvision中进行CAN的多路信号复用设计
如何利用PREEvision和MATLAB开发AUTOSAR软件组件

4月16日线上公开培训《SOME/IP协议介绍》课件来咯,点击下方“阅读原文”即可提取。
温馨提示:请使用电脑下载;如需转载或引用,请先联系我们或注明资料来源(请尊重相关人员的劳动成果~)

