[深入浅出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…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...