Autosar - 【3 SWC】

2023-12-20 18:30
文章标签 autosar swc

本文主要是介绍Autosar - 【3 SWC】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SWC(Software Component)是AUTOSAR的核心概念之一,它是一个功能独立的软件单元,可以在不同的ECU(Electronic Control Unit)上运行。SWC由AUTOSAR描述文件(ARXML)定义,并通过AUTOSAR的代码生成工具生成代码。SWC的核心功能是通过输入和输出端口与其他SWC或底层软件组件(BSW)交互,同时也可以使用内部端口进行内部通信。

3.1 SWC概述

AutoSAR主要分为3个层级:应用软件层(AppL),实时运行环境(RTE)和基础软件层(BSW)。APPL由多个SWC组成,在此,每个SWC可以理解为一个.c文件,而整个应用软件层便是一个文件夹。如下图所示:

上图可以看出,整个工程是一个AutoSAR架构,其中的AppL、RTE和BSW分别对应一个文件夹,而SWC组件就是一个个的.c文件(和.h)。

AppL中最重要的是SWC,而SWC与其他SWC通信需要接口, SWC中又由Runnable组成,所以AppL主要的组成就分下面三部分:

  • 应用软件组件(Application SWC)
  • AutoSAR接口(Ports)
  • 可运行实体(Runnable)

3.1.1 应用软件组件(SWC)

  1. 原子SWC(Atomic SWC)

不可再拆分的SWC,特点是每个原子级SWC对应一个.c文件,且这个c文件就是的最小单元,不可再分。可运行实体(runnable)是组成SWC的更小单元,即将SWC看成是最小单元,runnable是其中的函数。

  1. 集合SWC(Composition SWC)

AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个个更小的Atomic SWC。通常,可以将功能相近或者需要整合到一处方便观看的SWC利用一个compositon SWC包含起来。如上图中的“车顶灯ECU”。

SWC最形象的对比就是一个.C文件了,那么Composition SWC顾名思义就是.C文件的集合,体现在代码上,就是保存.C文件的文件夹。

  1. 特殊SWC

实际上,需要添加代码的不止是应用层的SWC。在BSW中,IO硬件抽象层(IoHwAb,和复杂驱动(Cdd)都是需要手动添加代码的,而这两个地方也可以算作是SWC,在DaVinci Developer中可以作为SWC进行配置和加runnable等操作的。因此,可将其看作是特殊的SWC。

 3.1.2 AutoSAR(Port)

Port是依附在SWC上的概念,比如配置工具配置SWC后,需要配置这个SWC的Port。

  1. 其实也好理解,如果一个.C文件孤零零的放在那里,与别的C文件没有任何数据交互,那么作为一套代码中的一个C文件,根本没法发挥作用,所以必然在SWC上需要配置上或者输入(R-Port)的或者输出(P-Port)的Port。

但是如果只是Port这个概念的话,实在是太难以理解了,但是如果顺着SWC等于C文件这个思路考虑的话,当C文件之间进行数据交互会是用什么方式呢?

  1. 那么最简单的方法就是“全局变量”。实际上,在配置好的代码中,可以发现,如果我为SWC1和SWC2之间配置了一个SR的interface的话,SWC1中会有一个函数Rte_Write(),里面会对一个全局变量进行赋值。而另一边SWC2的里面会有一个Rte_Read()的函数,来读取这个全局变量。通过这种方式,达到了数据的交互。

Ports是SWC和SWC做接口(Interface)通信使用,或是SWC通过RTE和BSW做接口(Interface)通信使用,Ports主要分为5种类型。

  1. Send/Receiver(S/R)接口

作用:传输数据。通过RTE传输数据,并且通过RTE管理数据的传输,避免数据出问题(例如同时调用同一数据时可能出错)。

例子

Receiver接口类型:Rte_Read_<Port>_<Data Element>()

  1. Client/Server(C/S)接口

作用: 提供操作。就是Server提供函数供Client调用

  1. 可以同步和异步。同步就是直接调用,相当于函数直接插入上下文运行;异步的话需要等待,相当于让函数在另一个线程中运行,运行完了再返回,原上下文依然运行;
  2. 一个接口可以提供多个操作,就是一个接口可以包含很多函数;
  3. ECU内部和跨ECU都可以调用,跨ECU也是通过外部总线。

例子

Client接口类型:Rte_Call_<Port>_<Function>()

3.1.3 可运行实体(Runnable)

AUTOSAR 当中,一个运行实体(Runnable)是指一个原子软件组件(AUTOSAR Atomic Software Component)提供的最小代码段,同时也是一个可以被单独调度的任务。

Runnables,即Runnable entities,也是SWC的组成部分,运行在RTE里面,由RTE周期事件触发或者其他事件触发时调用。Runnable包含着实际运行的函数。

注:Runnable是需要OS中的Task做载体。

AUTOSAR SWC还包含必须在运行时调用的函数。这些C函数在AUTOSAR中称为Runnables。

Runnables不能由它们自己执行;它们必须分配给 OS的可执行实体。可以通过将Runnables的函数调用插入OS任务主体来执行此类分配。

然后,Runnables在调用方OS-Task的上下文中循环执行和/或事件驱动。Runnables对任务的分配是根据图1和图2执行的。

图1:AUTOSAR分层软件架构-Runnables的映射

图2显示了对图1中关系的解释。根据此图,AUTOSAR SWC中的Runnables被分配给 OS任务。

图2:SWC到 OS-Applications的映射

AUTOSAR OS-Applications是 OS对象(如Task、ISR、调度表、计数器和警报)的集合,它们构成了一个内聚的功能单元。属于同一 OS-Applications的所有对象都可以相互访问。

OS-Applications中的 OS对象可能属于不同的AUTOSAR SWC。RTE实现了一个内存区域, OS-Applications的所有成员都可以不受限制地访问该区域,以方便SWC之间有效地进行通信。

这篇关于Autosar - 【3 SWC】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517036

相关文章

React第五章(swc)

swc 什么是swc? SWC 既可用于编译,也可用于打包。对于编译,它使用现代 JavaScript 功能获取 JavaScript / TypeScript 文件并输出所有主流浏览器支持的有效代码。 SWC在单线程上比 Babel 快 20 倍,在四核上快 70 倍。 简单点来说swc实现了和babel一样的功能,但是它比babel快。 FAQ为什么快? 编译型 Rust 是

基于Hypervisor智能驾舱的AUTOSAR解决方案

MENTOR嵌入式管理程序 目前,通常使用两种类型的管理程序(图6): Type 1本机管理程序:一种在硬件上本机运行的管理程序,因为它充当核心中的操作系统。Type 2托管虚拟机监控程序:此类型的虚拟机监控程序必须由另一个操作系统托管,并且仅负责使用主机操作系统可用的资源来虚拟化客户操作系统。 图6:虚拟机管理程序 虚拟化的工作原理是从硬件上运行的应用程序中抽象出物理硬件和设备。虚拟化流程管理

Autosar(Davinci) --- 创建一个S/R类型的port(下)

前言:         前面章节我们讲解了S/R类型的Port如何创建,这一章节,我们着重讲一下生成的代码,以及我们如何添加代码让这些门与灯之间的关系产生连接。 一、CtSaDoor.c 在【Rte.c】的【IO_TASK】中我们可以看到,反复的判断Rte_Ev_Cyclic_IO_Task_0_200ms这个条件是否成立,当200ms到达时,调用RCtSaDoorReadDoor函数,去读

AUTOSAR Adaptive与智能汽车E/E架构发展趋势

AUTOSAR Adaptive是一个面向现代汽车应用需求的标准,特别适用于那些需要高计算能力和灵活性的应用。以下是AUTOSAR Adaptive的典型特性: 高计算能力:AUTOSAR Adaptive支持使用MPU(微处理器),这些处理器的性能与PC或智能手机中的处理器相当。这样的高计算能力是实现半自动驾驶和其他复杂功能所必需的。动态更新和管理:AUTOSAR Adaptive的架构允

LIN协议栈 AUTOSAR架构下 状态管理

一、LIN State Manager 概述 功能 :负责控制 LIN 总线的通信状态,包括切换调度表(仅 LIN 主节点)、处理睡眠和唤醒操作、通知上层新状态等。约束 :每个 ECU 中最多有一个实例;所有关于调度表的操作仅适用于 LIN 主节点;适用于所有使用 LIN 的汽车领域。依赖关系 :依赖于 Communication Manager(ComM)和 LIN Interface(Lin

Autosar OS基础知识导图

Autosar OS基础 概述 Autosar简介 定义 Autosar(汽车开放系统架构)是由汽车制造商,软件供应商及其他相关厂商专为汽车软件合作指定的规范、标准、架构。 目标 建立一个独立于硬件的分层软件架构‌:‌实现高内聚、‌低耦合,‌提高软件的可重用性、‌可扩展性和互操作性。为应用实施提供一套方法论‌:‌包括制定无缝的软件架构堆叠流程,‌并将应用软件无缝整合至ECU中。制定统一的车

AUTOSAR开源OS——Trampoline的编译与使用(一)

环境准备 本人环境 CentOS7 代码下载 GitHub上去clone对应的代码到本地 git clone https://github.com/TrampolineRTOS/trampoline.git 编译goil 进入到如下目录/trampoline/goil/makefile-unix cd /trampoline/goil/makefile-unix 使用如下命令

AUTOSAR_EXP_ARAComAPI的5章笔记(1)

5.1 High Level API Structure ara::com提供了一个支持AUTOSAR服务模型的API。服务有Method、Event、Filed和Trigger。 Method:在服务应用程序中执行一个可以返回值的函数(如校准方法)。 Event:当特定条件发生时(例如制动事件),服务应用程序发送一个事件(也可能包括一个值)。客户端应用程序可以订阅事件。 Filed:在

【OS】AUTOSAR OsTask切换原理

目录 前言 正文 1.OS管理CSA依赖的底层指令 1.1. SVLCX指令 1.2. RFE指令 2. OsTask上下文切换关键数据结构 3.OsTask初始化时进行的CSA操作 4.OsTask被抢占时进行的CSA操作 5.总结 前言 在《【OS】AUTOSAR Os是如何启动第一个Task的》一文和《【OS】AUTOSAR OS如何实现Task抢占》一文中都涉

Autosar(Davinci) --- 创建一个OS TASK

目录 前言 一、认识OS 二、创建一个Basic Task 三、创建一个Extended Task 四、Task Mapping 五、生成代码 六、代码集成与编译 七、烧录&调试 八、Basic Task & Extended Task代码分析 前言         所有的runnable都是基于在TASK上运行的,那么我们这章就讲解,如何去创建一个TASK。 一、