2、AUTOSAR应用软件层

     应用软件层(Application Software Layer,ASW)包含若干个软件组件(Software Component,SWC),软件组件之间通过端口(Port)进行交互。每个软件组件可以包含一个或多个运行实体(Runnable Enity,RE),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。

     软件组件(SWC)不仅仅是应用层的核心,也是一些抽象层、复杂驱动层等实现的载体。AUTOSAR软件组件大体上可以分为原子软件组件(Aotmic SWC)和部件(Composition SWC)。其中,部件包含若干原子软件部件。原子软件组件则可根据用途分为以下几种类型:

1)应用软件组件(Application SWC),主要实现应用层算法;

2)传感器/执行器软件组件(Sensor/Actuator SWC),主要用于处理具体传感器/执行器的信号,可以直接与ECU抽象层进行交互;

3)标定参数软件组件(Parameter SWC),主要提供标定参数值;

4)ECU抽象软件组件(ECU Abstraction SWC),主要提供访问ECU具体I/O的功能,其一般提供引用C/S接口的供型端口,即Server端口,交由其他软件组件的需型端口(Client端口)调用;

5)复杂设备驱动软件组件(Complex Device Driver SWC),其可以定义端口与其他软件组件进行通信,还可以与ECU硬件直接交互,但由于此特点,导致其移植性较差;

6)服务软件组件(Service SWC),主要用于基础软件层,通过标准接口或标准AUTOSAR接口与其他类型的软件组件进行交互;


2.1 软件组件的数据类型

        AUTOSAR规范中定义了以下三种数据类型(Data Type):

1)应用数据类型(Application Data Type,ADT),其是在软件组件设计阶段抽象出来的数据类型,用于表征实际物理世界的量,提供给应用层使用,仅仅只是一种定义,一般在设计软件中为了方便使用,并不生成实际代码。

2)实现数据类型(Implementation Data Type,IDT),其是代码级别的数据类型,是对ADT的具体实现;它还需要引用基础数据类型(Base Data Type),并且还可以配置一些计算方法(Compute Method)和限制条件(Data Constaint)。

3)基础数据类型(Base Data Type);

        在AUTOSAR中,用户可直接只用IDT,但若是使用了ADT,则必须进行数据类型映射(Data Type Mapping),即将ADT与IDT进行映射,从而对每个ADT进行具体实现,最终才能进行代码生成。


2.2 软件组件的端口与端口接口

        软件组件的端口根据输入/输出方向可分为需型端口(Require Port,RPort)、供型端口(Provide Port,PPort)以及供需端口(Provide and Require Port,PRPort)(在AUTOSAR4.1.1标准中提出)。

1)需型端口(Require Port,RPort),用于从其他软件组件获取所需数据或者请求的操作;

2)供型端口(Provide Port,PPort),用于对外提供某种数据或者某类操作;

3)供需端口(Provide and Require Port,PRPort),兼有需型与供型两种端口的特性。

        三种端口间的相互连接关系如下图所示,需型端口与供型端口通过箭头连线连接,而供需端口则可认为是自我相连。

        由于端口仅仅定义了方向,在AUTOSAR中端口的属性则用端口接口(Port Interface)来表征。端口接口主要有以下几种类型:

1)发送者--接收者接口(Sender--Receiver Interface);

2)客户端--服务器接口(Client--Server Interface);

3)模式转换接口(Mode Switch Interface);

4)非易失性数据接口(Non-volatile Data Interface);

5)参数接口(Parameter Interface);

6)触发接口(Trigger Interface);

        比较常用的端口接口是发送者--接收者接口(Sender--Receiver Interface)和客户端--服务器接口(Client--Server Interface),下图展示了两种接口在使用过程中的情况,注意观察两种端口接口的不同之处。

        对于发送者--接收者接口(Sender--Receiver Interface),其主要用于数据的传递,发送者发送数据到一个或多个接收者。该类型接口中定义了一系列的数据元素(Data Element,DE),并且彼此相互独立。如下图所示,该SR接口中定义了两个数据元素,名字为DE_1和DE_2,并且每个数据元素的数据类型各不相同。

         需要说明的是,一个软件组件的多个需型端口、供型端口、供需端口可以引用同一个发送者--接收者接口,并且它们可以使用该接口中所定义的任意一个或者多个数据元素,而不一定使用所有数据元素。

        对于客户端--服务器接口(Client--Server Interface),其主要用于操作(Operation,OP)即函数调用关系,服务器是操作的提供者,多个客户端可以调用同一个操作,但同一客户端不能调用多个操作。客户端--服务器接口(Client--Server Interface)定义了一系列操作函数,它们由引用该接口的供型端口所在的软件组件来实现,并提供给引用该接口的需型端口所在的软件组件调用。下图展示了客户端--服务器接口定义的两个操作OP_1和OP_2,并对每个操作都定义了相关参数和方向,即函数的形参。


 2.3 软件组件的内部行为

        软件组件的内部行为(Internal Behaviour,IB)主要包括:

1)运行实体(Runnable Entity,RE),其是一段可执行的代码,封装了一些算法。一个软件组件可以包含一个或多个运行实体;

2)运行实体的RTE事件(RTE Event),每个运行实体都会被赋予一个RTE事件,该事件可以引发这个运行实体的执行。对于RTE事件可以分为多个种类,较常用的RTE事件主要有以下几种:

        ①周期性事件(Timing Event);

        ②数据接收事件(Data-received Event);

        ③客户端调用服务器事件(Sever-Call Event);

        下图展示的三个运行实体则对应了三种常用的RTE事件,注意观察其不同之处。

 3)运行实体与所属软件组件的端口访问(Port Access),其是和端口所引用的端口接口类型密切相关的。

        对于S/R通信模式,可分为显示(Explicit)和隐式(Implicit)两种模式。若运行实体采用显示模式的S/R通信方式,则数据读写是实时的。当多个运行实体需要读取相同的数据是,若能在运行实体运行之前先把数据读到缓存中,在运行实体运行结束之后再把数据写出去,则可以改善运行效率,这就是隐式模式。下图展示了两种模式的不同之处。

         对于C/S通信模式,可分为同步(Synchronous)和异步(Asynchronous)两种模式,其对比如下图所示。

 

4)运行实体间变量(Inter Runnable Variable,IRV) ,即两个运行实体之间交互的变量,其关系如下图所示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值