AUTOSAR(AUTomotive Open Standard ARchitecture,汽车开放系统架构)指定了嵌入在ECU中的软件架构。更确切地说,它提供了由三个主要部分组成的一种参考模型:
•应用层。
•基本软件(中间件软件组件)。
AUTOSAR的主要目标之一是提高嵌入式系统的质量和可靠性。通过使用一个合适的抽象概念,参考模型支持了软件和硬件之间的分离,并且简化了控制的复杂性。它也允许应用软件组件的可移植性,并因此允许产品修改、升级、更新的灵活性以及在产品线内和跨产品线的解决方案可拓展性。AUTOSAR参考架构的示意图如图4.5所示。如果AUTOSAR的代码只访问由RTE定义的入口点,那么应用软件组件可以和AUTOSAR兼容。此外,一个在中间件内使用的基本软件组件必须是在AUTOSAR中定义的类型之一;如果它提供在其类型的规范上正式定义的服务和接口,那么它是和AUTOSAR兼容的。通常是由供应商提供的基本软件组件和应用程序本身的规范(应用级别任务的描述、发送或接收信号、事件、警报等)来产生AUTOSAR中间件。因此,它的调度可以针对每个ECU来优化。
图4.5 AUTOSAR参考架构
AUTOSAR中间件的主要目标之一是隐藏硬件平台的特点以及应用软件组件的分布。因此,ECU之间与ECU内的通信服务具有重大意义,且由AUTOSAR联盟提供的文件对它进行了彻底描述(见图4.6中不同模块的概述)。这些服务的作用对于嵌入式和分布式应用的行为和时间特性是至关重要的。因此,必须准确掌握它们的设计和配置,并且时间特性的验证成为一项重要的活动。因为由某一层次的服务处理的对象(例如,信号、帧、I-PDU等)与由另一层次的服务处理的对象不同,所以问题是复杂的。然而,每个对象都强烈依赖于一个或多个属于相邻层次的服务处理的对象。AUTOSAR标准提出了两个通信模型:
•“发送器/接收器”在两个应用软件组件(属于同一ECU上相同的任务或两个不同的任务,或属于两个远程任务)之间用于传递信息。
•“客户/服务器”支持函数调用。
支持发送器/接收器的两种通信模型:
•“显式”模式是由一个对AUTOSAR中间件产生发送或接收数据的显性调用的组件指定。
•“隐式”模式意味着由中间件自动完成的数据读取(或写入)发生在没有显性调用AUTOSAR服务的情况下组件消耗(或产生)数据的调用前(或执行结束后)。
图4.6 通信软件组件和架构
AUTOSAR确定了关于通信的三个主要目标:处于应用层面的软件组件间的信息交换、由一个或多个信号的群组构成的I-PDU和实际上在网络上传输的N-PDU(DLL PDU)。AUTOSAR精确定义了:
•根据长度和类型规定应用层面的信号。理论上讲,一个信号通过端口在应用软件组件间交换信息,而不考虑该组件的分布。应用程序需要精确传递性能参数,因为这些参数将影响传输的行为:
-“触发”该参数的值表明,每当信号通过应用程序提供给中间件时,它必须在网络上传输(稍后我们将会看到,这意味着包含此信号的帧将在此信号发射后由应用程序组件直接发送)。
-相反,信号的“待定”值表明其在网络上的实际传输只取决于包含此信号的帧的发射规则。
此外,当指定一个信号时,设计者必须表明它是否是一个“数据”或一个“事件”。在前者的情况下,传入的数据不需要在接收端排队:当一个新的值到达时,它会清除相同信号的前一个值。后一种情况规定信号将在接收端排队,因此它可以确保当每个信号被传输时,新的值都会提供给应用程序。缓冲或排队的处理都由RTE完成。
•I-PDU由AUTOSAR COM组件建立。每个I-PDU都由一个或多个信号组成,并且通过PDU路由器传递到通信接口。一个I-PDU的最大长度取决于通信接口下面的L-PDU(即DLL PDU)的最大长度:对于CAN和LIN,L-PDU最大长度是8B,而对于FlexRay,其最大长度是254B。AUTOSAR COM确保了两个组件位于同一ECU时的本地传输,或当组件是远程的时候,通过建立合适的目标和触发较低层相应的服务确保传输。这一方案确保了组件的可移植性,并隐藏了它们的分布。从信号到I-PDU和从I-PDU到信号的转换,都根据一个离线生成的配置完成。每个I-PDU由不同可能数值的传输模式的行为参数来描述:
-“直接”表明只要包含在I-PDU内的一个“触发”信号在应用层被发送,发送I-PDU就进行。(www.daowen.com)
-“定期”意味着I-PDU的发送只定期发生;它规定I-PDU不包含触发信号。
-“混合”意味着要考虑由包含在I-PDU内的触发信号施加的规则,另外,如果I-PDU包含至少一个“等待”信号,那么I-PDU将定期发送。
-“无”描述了I-PDU的特性,其中I-PDU的发送规则取决于存在的网络协议(例如FlexRay),并且在这样的模式中,没有传输是通过AUTOSAR开始的。
•一个N-PDU由基本组件CAN TP(Transport Protocol传输协议)或FlexRay TP建立。它包含了将在网络上传输的帧的数据有效载荷和协议控制信息。值得注意的是,传输层的使用并不是强制性的,且I-PDU则可以直接传输到更低的层上,如图4.6所示。当使用一个传输层时,可以通过以下方式获得N-PDU:
-分离I-PDU以获得多个符合帧数据有效载荷长度的N-PDU。
-由几个I-PDU组装成一个N-PDU。
RTE实现了AUTOSAR中间件接口和相应的服务。尤其,RTE可以处理“隐式/显式”的通信模式,且通信包含了事件(排队)或数据(不排队)的事实。图4.7说明了两个远程应用程序组件(在发送端的ASC-S和在接收端的ASC-R)之间的信号S的传输是如何被RTE和COM组件处理的。信号S被认为是一个数据,因此它不需要排队,并且它被显式接收(显示模式)。在每个ECU上,RET根据应用层的组件间信息交换的规定产生。因此,特别是在接收端,在RTE中为每个被ECU接收的数据定义了一个缓冲区。在系统初始化时,在接收器终端的信号S的值被设置为静态定义的值(在图4.7的示例中,初始值是0)。缓冲区在t1和t3之间包含了一个值0,从时间t3开始值为20。由于一个由应用软件组件ASC-R在接收端完成的读取调用值将被返回,因此在时间t2时该值为0,而时间t4时该值为20。
图4.7 显式通信模式下一个数据信号的发送器/接收器
在图4.8中给出了一个相似的例子,但这个时间信号S是一个“事件”,因此,它要通过RTE在接收的ECU上排队。在时间t1时,S的队列被初始化(队列为空)。在时间t3时,值20开始排队,在t4时一个由接收器应用组件完成的读取调用返回值20,且队列被清空。在时间t2和t5的时候,这样的一个读取调用返回一个代码,它表明队列是空的。
图4.8 显式通信模式下一个事件信号的发送器/接收器通信模型
AUTOSAR COM组件负责几项功能:在发送端,它确保传输并通知应用程序其输出(成功或错误)。特别是,AUTOSAR COM可以通知应用程序,在指定期限之前(即期限监控)I-PDU的传输是否发生。在接收端,它也可以通知应用程序(接收成功或接收错误),并支持信号过滤机制(把接收的I-PDU的每一个信号派送给应用程序或网关)。在发送和接收结束时,负责转换字节顺序。COM组件的一个重要作用是打包信号到I-PDUs和从I-PDUs中解压信号。需要注意的是,由于I-PDU的最大长度取决于存在的网络,所以COM组件的设计必须考虑到网络,因此它并非完全独立于硬件架构。COM组件也需要确定发送I-PDUs的时间节点。它基于I-PDU的属性传输模式和其包含的每条信号的属性转移性能。图4.9总结了可能的组合。注意:在本表中没有标明“无”的传输模式,在该种情况下传输由存在的网络层驱动。
从图4.9中可知,实际的I-PDU发送和它因此所包含的信号发送都与一些规则有关。图4.10说明了一个包括两个信号S1和S2的I-PDU触发时如何直接被传输。在t1、t2、t3、t4时间时,发送信号S1或信号S2到COM组件上,将触发I-PDU发射到下层。在图4.11中,我们考虑了一个包装了信号S1(被触发)和信号S2(挂上)的I-PDU。I-PDU的传输模式被设置与期间dt混合。每当S1的新值被提供给RTE,I-PDU就被传送给下层(t1和t6时)。此外,每隔dt时间(t4和t5时)I-PDU也被传输。需要注意的是,在这个配置中,S2的一些值可能没有被传输,例如在t2时提供的S2的值。
图4.9 I-PDU的传输模式与信号传输性质的关系
图4.10 直接模式中有两个触发信号的I-PDU传输
图4.11 在包含一个触发信号(S1)和一个挂起信号(S2)的混合模式中I-PDU的传输
COM组件离线产生在信号、I-PDU和ECU上的应用软件组件分配知识的基础上。根据配置,AUTOSAR PDU路由器(图4.6)分派每个I-PDU到正确的网络通信堆栈中。一旦软件组件和体系结构的配置已知,就离线静态生成基本组件。其他通信堆栈的基本软件组件负责需要时的I-PDU的分解/重组(FlexRay TP,CAN TP),或者负责提供接口(FlexRay接口、CAN接口、LIN接口)给通信驱动器。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。