[深入浅出AutoSAR] SWC 设计与应用
依AutoSAR及经验辛苦整理,原创保护,禁止转载。
专栏 《深入浅出AutoSAR》
全文 3100 字, 包含
1. SWC 概念
2. 数据类型(Datatype)
3. 端口(Port)
4. 端口接口(Portinterface)
5. Component
前言
SWC (Software Component) 是 AutoSAR 架构中的核心概念之一。SWC主要包含的内容有以下几点:数据类型(datatype),端口接口(Portinterface),端口(Port),软件组件(SW-C)。
1. SWC 概念
SWC最形象的对比就是一个.C文件了,那么Composition SWC顾名思义就是.C文件的集合,体现在代码上,就是保存.C文件的文件夹。
SWC 是指软件组件,是一个独立的、可重用的、自我描述的、可替换的软件单元。它具有清晰的输入输出接口,相较于整个汽车电子系统来说,是一个更小的功能模块。SWC 可以是一个可执行的模块或者是一个库,它独立于其他组件工作,自带相应的状态和管理接口。SWC 之间的通信通过 AutoSAR 定义的接口进行。SWC一般位于AUTOSAR架构的Application层。
在使用 AutoSAR 架构下,开发人员首先需要将整个汽车电子系统分解为不同的 SWC。每个 SWC 都应该具有一些特定的功能,如传感器数据处理、控制算法、用户界面等等。每个 SWC 都需要定义其输入输出接口,以及其它自述和控制接口,这些接口都要符合 AutoSAR 定义的规范。然后,开发人员需要将这些 SWC 部署在具体的硬件平台上,并在系统级别上进行配置和管理。
SWC 内容
通常包括以下内容:
-
接口定义文件:用于描述SWC和其他SWC之间的接口,包括输入输出信号、服务等。
-
算法实现:包括控制算法、诊断算法、通信协议等。
-
状态机和事件驱动的代码实现:用于描述SWC内部的状态和事件处理逻辑。
-
代码生成工具链:用于将SWC部署到目标平台,例如生成可执行代码、配置文件等。
2. 数据类型(Datatype)
SWC主要是用于上层应用层设计,偏算法设计,那么既然是算法就涉及函数,函数就涉及变量,变量就自然涉及变量的数据类型。AUTOSAR架构中Datatype方面我们主要用到的一般是下面4个:
SwBaseType | 定义ECU软件中使用的基本数据类型 |
ApplicationDataType | 应用数据类型 |
ImplementationDataType | 实现数据类型 |
Data Type Mapping | 将应用数据类型和实现数据类型Mapping上 |
为什么要Mapping呢?
代码生成是基于实现数据类型的,就算没有应用数据类型,也能生成。
新建数据类型顺序:
- 新建实现数据类型,然后关联基本数据类型
- 新建应用数据类型
- 将应用数据类型和实现数据类型进行Mapping上(这里有个细节,datamapping要在IB里调用的)
3. 端口 (Port)
Port是依附在SWC上的概念,比如配置工具配置SWC后,需要配置这个SWC的Port。其实也好理解,如果一个C文件孤零零的放在那里,与别的C文件没有任何数据交互,那么作为一套代码中的一个C文件,根本没法发挥作用,所以必然在SWC上需要配置上或者输入(R-Port)的或者输出(P-Port)的Port。
端口比作结婚的两家亲家方,接口比作结婚时男方给女方的彩礼。在通信中,端口相当于需要接收和发送的两方;接口就相当于通信的数据内容,大概可以这么理解。那么显而易见,Port就可以分为接收,发送和接发送,分别对应RPort,PPort和RPPort。
所以,我们要实现数据通信,就必须建立Port,然后配置他对应的接口。值得注意的是,我们在SWC连线的时候就知道了,要实现连线,就必须PPort和RPort所调用的接口是一样的,当然很好理解,彩礼肯定一定要一样呀,如果男方说8.8万,女方说18.8万,这样的彩礼对接,即通信是不可能成功的。
SWC 有很多Port, 是 SWC 的输入输出。 可作多个 SWC 的交互。实际上,在配置好的代码中,可以发现,如果我为SWC1和SWC2之间配置了一个SR的interface的话,SWC1中会有一个函数Rte_Write(),里面会对一个全局变量进行赋值。而另一边SWC2的里面会有一个Rte_Read()的函数,来读取这个全局变量。通过这种方式,达到了数据的交互。
Port分为require-port和provide-port,用来获取/提供某一服务或数据。当然,PortPrototype的定义需要先有PortInterface详细描述是有哪些信息交换,类似于面向对象的编程语言中的Interface定义。
当需要进行数据交换时,链接两个PortPrototype即可,R-P port成对连接(Assembly Connections)。
4. 端口接口(Portinterface)
Port之间具体传输何种信息,是由端口接口(PortInterface)定义的, 可以认为是Port所携带的内容。
PortInterface有以下几种种类:
- SenderReceiverInterface
- NvDataInterface
- ParameterInterface
- ModeSwitchInterface
- ClientServerInterface
- TriggerInterface
常用的是SR接口(SenderReceiverInterface)和CS接口(ClientServerInterface),当然还有ModeSwitch接口(一般BswM和EcuM用),外部触发trigger接口,标定参数接口等。主要记录一下SR和CS这两种。
5. Component
Component表示系统的模块化部分。Component根据提供的和所需的接口定义其行为。 因此,Component作为一种类型,其一致性由这些提供和必需的接口定义(包括它们的静态和动态语义)。一个Component可以由多个类或组件拼凑而成。
Component 分类
图片来源: 【精选】AUTOSAR SWC详解-CSDN博客
Component 分类用途
6. Composition
CompositionSwComponentType用来将已有的SWC组合起来,作为一个功能组(也可以说是一个模块)来实现。这样的话内部逻辑对于集成人员来说不必关系,只需关心Composition级别暴露的port,由于CompositionSwComponentType本身也是SwComponentType,同样可以将它作为一部分,被包含于另一个CompositionSwComponentType当中。
当你需要暴露某一port时,应当在Composition上创建相同类型的Delegation port,并用Delegation Connection连接对应的SWC上的port。
Q/A
Q: Interface和port的关系和区别?
A: Interface与Implementation相对应,它有自己的规章制度,到我这里,要按我的标准做事。
port就象一个洞,到这里取/放东西,需要经过这个“洞”,因为其他地方是封住的,当然,也有可能存在其他的“洞”,重要的是,“洞”的后面黑黑一团,进出这个“洞”,可能有规则,可能有规则但不告诉你,还可能没规则。
参考
KimChan | [Classic AUTOSAR学习] SWC设计与应用(一)-- 什么是SWC (Software Component) - 知乎 |
智能汽车小拿 | Autosar基本概念介绍: SWC/Runnable/Port和 Interface - 知乎 (zhihu.com) |
图片来源: COMIDOC
免责声明:
本文根据公开信息整理,旨在介绍更多的汽车知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。
相关文章:

[深入浅出AutoSAR] SWC 设计与应用
依AutoSAR及经验辛苦整理,原创保护,禁止转载。 专栏 《深入浅出AutoSAR》 全文 3100 字, 包含 1. SWC 概念 2. 数据类型(Datatype) 3. 端口(Port) 4. 端口接口(Portinterface&…...

【Ubuntu系统搭建STM32开发环境(国内镜像全程快速配置)】
源于本人失败的经历苦心研究 虚拟机安装ubuntu换源VScode安装安装Java环境安装cubemx安装 arm-Linux-gcc安装gdb server安装OpenOCD 虚拟机安装ubuntu 系统镜像可以在阿里云镜像站且下载速度很快。 选择安装的版本。 我选择的是:ubuntu-22.10-desktop-amd64.iso。…...

Java 中的 Default 关键字
default 关键字:是在 Java 8 中引入的新概念,也可称为 Virtual extension methods——虚拟扩展方法与public、private等都属于修饰符关键字,与其它两个关键字不同之处在于default关键字大部分都用于修饰接口。 default 修饰方法时只能在接口…...

AdaBoost:增强机器学习的力量
一、介绍 机器学习已成为现代技术的基石,为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中,AdaBoost(自适应增强的缩写)作为一种强大的集成方法脱颖而出,为该领域的成功做出了重大贡献。AdaBoost 是一…...

c++踩坑点,类型转换
std::string转换到PVOID std::string转换到PVOID的方式如下 这样的话成功转换 “const char *” 类型的实参与 “WCHAR *” “const char *” 类型的实参与 “WCHAR *” 类型的形参不兼容 可以看到这种报错,可以直接强转如下: 但是在我们这里不适…...

mysql—面试50题—1
注:面试50题将分为5个部分,每部分10题 一、查询数据 学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student …...
vue解决报错Unable to preventDefault inside passive event listener invocation.
"Unable to preventDefault inside passive event listener invocation"是浏览器开发中的一个警告信息。这个警告通常出现在使用passive事件监听器时,当在事件处理函数中调用preventDefault()方法时会引发该警告。 在传统的事件监听模型中,当…...

实际项目中最常用的设计模式
在软件开发领域,设计模式是一种经过验证的通用解决方案,用于解决各种常见问题。它们有助于提高代码的可维护性、可扩展性和可重用性。虽然有许多不同的设计模式,但以下是实际项目中最常用的一些: 1. 单例模式 (Singleton Pattern) 单例模式确保一个类只有一个实例,并提供…...
使用stream流根据对象属性对复杂list对象去重
日常开发中,我们可能会遇到这样一种情况,需要对数据库查询出来的数据进行一个二次处理,从而达到我们需要的数据结构。stream流正是java8提供的对复杂list操作方便工具。 我们先介绍如何使用stream流根据对象属性对复杂list对象去重࿰…...

vue3脚手架搭建
一.安装 vue3.0 脚手架 如果之前安装了2.0的脚手架,要先卸载掉,输入: npm uninstall vue-cli -g 进行全局卸载 1.安装node.js(npm) node.js:简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是…...

MongoDB 未授权访问漏洞
简介 MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,它的特点是高性能、易部署、易使用,存储数据非常方便,默认情况下是没有认证的这就导致不熟悉它的研发人员部署后没有做访问控制导致…...
花5分钟学习机器学习基础知识
一、什么是机器学习 机器学习的目的是让机器学习,而不是执行预设的算法。 机器学习适用于难以制定规则的问题,如垃圾邮件识别、图像识别。 机器学习模拟人类学习过程:从样本中学习归纳总结,形成模型,然后应用模型完成任务。 机器学习需要大量样本数据和计算能力支持。当前数…...

Qt学习:使用OpenGL绘制3D图形
文章目录 前言一、Qt下使用OpenGL绘制图形介绍二、示例完整代码总结 前言 文章中引用的内容均来自这本书中的原文:【Qt Creator快速入门_霍亚飞编著】,本文的示例也是在书中代码的基础上进行编写的(其中部分代码使用原文编译不过,…...

在chrom浏览器安装Vue.js devtools插件,遇到恶意扩展程序字样,附百度网盘下载链接
遇到的问题 拖拽下载好的 Vue.js devtools 插件到谷歌扩展程序, 百度网盘下载地址 链接:https://pan.baidu.com/s/1FeK6pwc2UzRUUlMFN3rW5w?pwdw361 提取码:w361 提示: 解决办法 将Vue.js devtools 插件的后缀从.crx改为.zi…...

WSL2的安装与配置(创建Anaconda虚拟环境、更新软件包、安装PyTorch、VSCode)
1. WSL2 安装 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /a…...

【鸿蒙软件开发】ArkTS常见组件之单选框Radio和切换按钮Toggle
文章目录 前言一、Radio单选框1.1 创建单选框1.2 添加Radio事件1.3 场景示例二、切换按钮Toggle2.1 创建切换按钮2.2 创建有子组件的Toggle2.3 自定义样式selectedColor属性switchPointColor属性 2.4 添加事件2.5 示例代码 总结 前言 Radio是单选框组件,通常用于提…...

今年阿里云双十一服务器优惠价格讨论_看看大家怎么说?
2023阿里云双十一云服务器大概会降到什么区间?阿里云服务器网认为会在当前的优惠价格基础上,降价10%左右,可以在阿里云CLUB中心领券:aliyun.club 云服务器专用满减优惠券。阿里云服务器网从各个渠道了解到大家对今年阿里云双十一服…...
LC-1402. 做菜顺序(记忆化搜索 ==> 动态规划、贪心)
1402. 做菜顺序 困难 一个厨师收集了他 n 道菜的满意程度 satisfaction ,这个厨师做出每道菜的时间都是 1 单位时间。 一道菜的 「 like-time 系数 」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度&#x…...
泰森多边形
泰森多边形 93 泰森多边形又叫沃洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是一组由连接两邻点线段的垂直平分线组成的连续多边形。一个泰森多边形内的任一点到构成该多边形的控制点的距离小于到其他多边形控制点的距离。…...
YOLOV8 进行docker环境配置
修改docker文件 原docekerfile中ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/下载很慢,可以在外部下载好,放入docker文件夹中,再将源代码改为ADD Arial.ttf…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...