来源|汽车电子与软件
作者|车载以太网小L
最近Adaptive AUTOSAR相关话题特别火爆,小L也准备蹭个热点,跟大家唠唠PREEvision中关于Adaptive AUTOSAR的系统设计,看看我是如何把PREEvision玩转,让它把该做的事做到极致。
我在之前的文章里说过,Adaptive AUTOSAR(简称AP)并不是用来取代Classic AUTOSAR(简称CP),而是对CP的一种扩展运用,所使用的软硬件平台是不相同的。随着汽车网联化,智能化和电动化的不断发展,CP所对应的嵌入式系统已经无法满足大量数据的高运算能力需求,因此AP顺势而生。- CP只能支持SOME/IP协议,而AP可以运行SOME/IP,也支持HTTP协议,AP后续还会增加其他协议
- CP仅支持静态SOME/IP服务交互机制,而AP可以支持静态和动态SOME/IP服务交互机制,动态这个属性,很厉害,有没有?

- CP对传输层加密策略TLS极不友好,而AP可以很好的部署TLS加密算法
规范:AP规范是AUTOSAR公开发布的规范,当前版本是AUTOSAR Adaptive Release19.11,历史版本如下图所示,以上各个版本的下载路径为https://www.autosar.org/standards/adaptive-platform/,目前运用的比较广的是19.03版,大家可以自行下载学习。下图是Vector关于AP建模给出的官方流程图,从图上看,所有的设计项都是严格围绕着AUTOSAR AP规范开展的,如果大家日常使用PV的时候,觉得PV很难使用,那其实只是对理论内容理解的不够,对技术点相互关联关系认识的不深刻,才会觉得PV里面旁枝错节,不好上手。我在刚开始时,也有段时间不上道,每天都很郁闷,后来慢慢的自己做了大量的总结和归纳之后,突然PV的能力就一路开挂,不仅在短时间内精通CP和AP的PV系统设计,最终的成果就是PV中可以做到一键式生成CP Arxml和AP Arxml,这样PV对我们来说仅仅是工具,它可以帮我把大把的时间专注于系统设计和方法论上。下图是我自己总结的AP内容,如果要做PV的AP系统设计,这些内容就必须全部掌握,并知道所有内容的交互机制,这些仅仅是系统设计的基础和前提,如何将你脑袋里想要做的设计和这些理论很好的结合起来,才更加考验一个SOA架构师的能力。
首先,打开v9.5以上版本PREEvision(简称PV)软件,在Design Model中创建新的ProductLine,并重命名(随意)。
接下来,创建所需要的Package结构,文件结构如图所示,这里有一点需要说明:Service和ServiceInterface分开新建UML Package,不然Adaptive AUTOSAR Explorer(Adaptive 系统表格化设计界面) Service Interface步骤无法识别到Service Interface。接下来,我们正式进入PREEvision建模介绍。
通过以下方法打开Adaptive AUTOSAR Explorer来定义服务相关内容,Explorer以表格形式展示设计项,便于可视化,帮助我们快速的进行AP系统设计。
服务是一系列软件功能的抽象描述,同时可以被多个不同的Client调用。而服务定义不仅定义服务本身,同时还定义服务和它关联项的依赖性。点击Create new Service新建Service,Service ID,Service Provider,Service Interface,Service Consumer这几个属性,其中Service Provider,Service Interface,Service Consumer是PV自动生成的,我们只需要重命名成自己想要的效果即可。Service定义好之后,如下图所示,其中自动生成的Service Interface会默认放在Service同一个UML Package下,这里需要move到我们自己定义的ServiceInterface Package下,不然第二步Service Interface就识别不到定义的ServiceInterface,这点是和CP Service Definition的唯一区别
。
服务接口主要是描述服务的能力,可以给client提供哪些交互能力。服务接口包括《SOME/IP到底讲了什么》中说到的method,event,FF method,Properties,这些可以在Service Interface Editor窗口被创建和修改。Service definition步骤之后,需要先关联Service和ServiceInterface,只有关联了之后才能进行Service Interface的相关定义。接下来定义具体的服务接口,直接在Service Interface Editor中新建任意你想要的的服务接口类型。ii. ServiceInterface Data Type Editor
如标题所示,该步骤需要定义服务接口相关的数据类型,之后将定义的数据类型关联到对应的服务接口中,如果是Method还需要定义数据类型相关的输入输出方向,如图所示是我最后设计的成功 iii.SOME/IP Interface Deployment EditorSOME/IP Interface Deployment是中间件的传输层配置,该配置的目标是为了中间件能够识别Method的call以及发送Event信息,可以使用SOME/IP Interface Deployment Editor来定义SOME/IP Interface Deployment。该步骤需要定义每个服务接口对应的SOME/IP Interface Deployment,并为每个Deployment限定好传输层协议,服务接口对应的ID,EventGroup等,其中SOME/IP Interface Deployment有快捷键,可以自动生成,如图所示,是我做好后的效果图。
iv.Service Interface Transformation Properties
如《SOME/IP到底讲什么》所说,SOME/IP支持序列化和反序列化,而CP和AP对于序列化和序列化的实现方式大不同,AP需要通过Service Interface Transformation这个属性来进行关联,最终配置好的效果如图所示。以上是服务定义和服务接口定义的所有内容,不知道大家看完后有没有出现一堆的问号,哈哈。
今天就先介绍到这里吧,感兴趣的话,敬请关注小L下回内容,别忘了关注哦!