[CP_AUTOSAR]_分层软件架构_关于接口的一些规范说明

1、接口类型

  在前面 《分层软件架构_总览》_点击跳转中,简要介绍了CP_AUTOSAR分层软件的架构,其主要分为应用层,运行时环境(RTE)以及基础软件层(BSW)。而软件模块之间的信息交互需要依赖于各自的接口,关于接口的一些规范在AUTOSAR中也有说明,本文将简要介绍接口。
  AUTOSAR架构中的接口类型详见下表:

接口类型描述
AUTOSAR Interface定义了SWC、BSW软件模块间信息交互的端口,通过这些端口,模块之间可以交互,实现交互的方式可以局部交互也可以是基于网络的;
Standardized AUTOSAR Interface是一些语法和语义更加符合AUTOSAR标准的“AUTOSAR Interface”,被用于在BSW中的服务层中,接口可供SWC使用;
Standardized Interface没有使用到像"AUTOSAR Interface"的相关规范,而多出现在“C”语言中;因此,这种接口被经常用在同一个ECU上的软件模块之间的信息交互。如果说软件模块使用Standardized Interface通信,那么该通信所经过的路线,不可能会穿过网络(CAN/ETH…);

2、简化的接口案例说明

  从下图可以看出,BSW中软件模块(操作系统 OS /服务/通信以及ECU抽象层)通信的接口为Standardized Interface,未穿过网络;SWC与SWC、SWC与BSW或者是BSW与BSW之间,如SWC与ECU抽象层交互,使用AUTOSAR Interface;SWC访问BSW中的服务层时,则需要通过Standardized AUTOSAR Interface。

在这里插入图片描述

3、关于接口的一些规则

在这里插入图片描述

3.1、水平接口

  服务层、ECU抽象层和复杂驱动层,可以使用水平接口,比如Error Manager模块使用NVRAM模块中接口来存储错误数据。而在μC Abstraction Layer中,不能使用水平接口(除非是由于性能原因,需要通知其它模块的)。

3.2、垂直接口

图标描述
在这里插入图片描述一层可以去访问下面软件层的所有接口;                                            
在这里插入图片描述应避免绕过一个软件层;                       
在这里插入图片描述绕过两个或两个以上的软件层是不允许的,绕过μC Abstraction Layer也是不被允许;                      
在这里插入图片描述一个软件模块可以其它更低层组内的模块,比如SPI总线访问外部硬件;                            
在这里插入图片描述所有层都可以与系统服务层进行交互;                            

3.3、软件模块交互矩阵

  AUTOSAR基础软件层之间所允许的通信矩阵如下图所示:
  该矩阵图按行阅读,绿色勾号 在这里插入图片描述 表示允许使用接口;红色 在这里插入图片描述表示不允许使用接口;蓝色三角形 在这里插入图片描述表示限制性使用(只允许回调去使用)。比如:对于最后一行的I/O驱动模块来说,只允许使用系统服务层中的OS,但无法使用其它模块的接口;

在这里插入图片描述

4、复杂驱动层的交互

在这里插入图片描述

  与复杂驱动层之间的交互遵循如下规则:
  1、其它软件模块访问CDD:
  只有CDD提供一个可以被AUTOSAR软件模块配置的接口,这样才被允许访问。一个典型的例子就是PDU Router:CDD可能会实施一个新总线系统接口模块,那么在配置PDU Router模块时,则需要考虑这些接口。
  2、CDD访问其它软件模块:
  一样地,只有AUTOSAR软件模块提供可以被CDD访问的接口,这就意味着:
  -> 接口被定义为可以重入(re-entrant)的;
  -> 如果使用的是回调例程,那么名称则是可以被配置的;
  -> 不存在对模块状态进行管理的上层模块(并行访问可能会改变状态,而上层模块却没有通知)。
  3、CDD可以访问如下软件模块:
  -> SPI 驱动;
  -> GPT 驱动;
  -> 具有重入限制的I/O驱动程序通常只存在于单独的组/通道等,水平访问大多是不被允许的,在配置时需要考虑这一点;
  -> NVRAM Manager,其作为内存堆栈的唯一访问点;
  -> Watchdog Manager,其作为看门狗堆栈的唯一访问点;
  -> PDU Router,其作为通信堆栈的总线和协议的唯一访问点;
  -> 总线特定的接口模块,其作为通信堆栈的唯一总线访问点;
  -> NM 接口模块,其作为网络管理堆栈的唯一访问点;
  -> Communication Manager 和 BSW 模式管理,其作为状态管理的唯一访问点;
  -> Det, Dem 和 Dlt;
  -> OS,只要所使用的OS对象不被某个软件模块使用即可。对于每个软件模块都有必要检查各自的功能是否被标记为可重入(re-entrant)的。例如,init 函数通常不能重入,只能由ECU State Manager软件模块所调用。
  4、多核架构下,有如下补充的规则:
  -> BSW软件模块可以被分布到多个核中,而每个核能够执行的BSW服务函数,取决于自身的BswOperationInvokedEvent的任务图;
  -> 跨越分区和核的边界,只允许那些使用了主从模式的内部通信机制;
  -> 在同一个核中,CDD才能去访问BSW的standardized interfaces;
  -> CDD在另外一个核,其可以使用normal port mechanism去访问AUTOSAR interfaces 和 standardized AUTOSAR interfaces;这牵扯到了RTE,其使用了操作系统的IOC机制来发送请求到另外一个核中。
  -> 如果CDD想访问另外一个核的BSW的standardized interfaces:
     1.要么是CDD所在的核,能够提供standardized interfaces的从服务,并提交这些回调到另外的核;
     2.另外一个核需要实施CDD的stub part(一个接口或者占位符,用于与其他软件模块交互),并使用OS的IOC机制(类似于RTE层所做的)去组织通信;

   更多内容可点击返回参考 CP_AUTOSAR_总目录

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值