大数跨境

如何用PREEvision设计E2E通信保护

如何用PREEvision设计E2E通信保护 怿星科技
2020-04-17
1
导读:内附4月16日怿星直播课程《SOME/IP协议介绍》培训资料下载链接。



内附4月16日怿星直播课程《SOME/IP协议介绍》培训资料下载链接,若需要请直接拉至底部点击“阅读原文”。


上课时间到啦,掏出你们的小本本~今天我们要跟大家分享的是:如何用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中进行SOA建模

手把手教你如何在PREEvision中进行CAN的多路信号复用设计

PREEvision对汽车以太网的支持

干货 | 教你如何在PREEvision中一键生成报告

如何利用PREEvision和MATLAB开发AUTOSAR软件组件

闲谈PREEvision中的二次开发

汽车以太网标准化组织介绍

汽车以太网应用案例之DoIP刷写——让数据“飞”起来



4月16日线上公开培训《SOME/IP协议介绍》课件来咯,点击下方“阅读原文”即可提取。

温馨提示:请使用电脑下载;如需转载或引用,请先联系我们或注明资料来源(请尊重相关人员的劳动成果~)

【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读694
粉丝0
内容428