Autosar软件组件概述

AUTOSAR中的应用软件设计为独立的软件单元,即软件组件类型(SwComponentTypes),封装了相关功能和行为的实现,并通过端口原型(PortPrototypes),向外部暴露自己。

AUTOSAR 标准应用了设计模式中的原型(Prototype)模式,要求应用软件的可重用性,可以重复使用已有的组件来创建新的模型元素,而不是每个项目都重复创建单独的组件。

软件组件面向虚拟功能总线(VFB)进行开发的,VFB 是一个抽象的通信通道,不依赖于 ECU 和通信总线,不直接调用操作系统或硬件驱动,可以在开发过程的晚期阶段部署到实际的 ECU 上。

软件组件

1.软件组件类型(SwComponentType)

是AUTOSAR软件组件的基础类,它是一个抽象类,包含了与软件组件相关的基本属性和行为定义,有三个子类,分别是AtomicSwComponentType、CompositionSwComponentType和ParameterSwComponentType,这些子类进一步细化了软件组件的类型和功能。

  • 原子软件组件类型:是SwComponentType的具体实现,代表不可再分解和分布在多个ECU上的原子软件组件。它具有原子性,意味着其功能和行为是不可分割的,并且在运行时不会被分布到多个ECU上。
  • 组合软件组件类型:用于组合多个其他软件组件,以实现更复杂的系统功能。它通过聚合其他软件组件来创建更大的系统单元,从而实现系统的模块化设计和可扩展性。
  • 参数软件组件类型:主要用于定义和管理软件组件的参数信息。与AtomicSwComponentType不同,它不能聚合SwcInternalBehavior,这意味着它没有内部行为的概念,只专注于参数的定义和管理。

软件组件模型
 

2.端口原型(PortPrototype)

端口原型在软件组件之间的通信中起着关键作用,它们定义了数据的传输方向和接口规范,端口原型通过端口接口来定义其通信行为,不同类型的端口接口具有不同的语义和功能,端口接口提供了一种标准化的方式来描述端口之间的通信协议和数据格式,使得不同的软件组件可以相互理解和交互。

端口接口是实现软件组件之间通信的基础,它们定义了数据的传输方式、格式和语义。不同类型的端口接口对应着不同的通信场景和需求,例如,客户端-服务器接口用于实现客户端和服务器之间的远程调用,而发送方-接收方接口用于实现异步的数据传输。

端口接口是通过在端口原型上添加额外的模型信息来实现的,这些信息包括接口的名称、描述、数据类型、操作等。这些信息被用于生成代码和实现通信功能。

端口原型包含:

需求端口原型(RPortPrototype):表示需求端口,需要某些服务或数据。它通常用于客户端与服务器之间的通信,客户端通过RPortPrototype向服务器请求服务或数据。

提供端口原型(PPortPrototype):表示提供端口,提供服务或数据。它通常用于服务器向客户端提供服务或数据的场景。

提供-需求端口原型(PRPortPrototype):可以同时作为需求和提供端口,具有双重功能。它既可以接收来自其他组件的请求,也可以向其他组件提供服务或数据。

端口组件继承与组合
 

3.原子软件组件类型

原子软件组件类型是软件组件类型的子类,可以聚合一个内部行为(InternalBehavior)类,能够实现更复杂的功能和行为,在模型中独立地开发和测试内部行为,而不会影响其他部分的开发。

在完成软件组件的基本架构设计后,可以在后期添加更多的细节,如内部行为的实现、数据处理逻辑等。

泛化(继承)
 

4.参数软件组件类型

不能聚合SwcInternalBehavior,唯一聚合的端口原型是《参数接口类型(ParameterInterface)》的PPortPrototype。

 数据属性定义:在汽车电子系统中,校准参数的准确性和一致性对于系统的性能和可靠性至关重要,通过定义特定的数据属性,可以确保每个参数在系统中的作用和意义是明确的,并且可以根据不同的角色进行灵活的配置和管理。

实例化数据定义:《实例化数据定义属性(InstantiationDataDefProps)》提供了一种在运行时动态配置数据属性的方式,通过聚合这些属性,参数软件组件类型可以根据具体的实例化需求来设置数据属性的值,从而实现更加灵活和可定制的系统配置。

参数软件组件
 

5.软件组件的符号名称

原子软件组件类型(AtomicSwComponentType)体现在运行时环境(RTE)的源代码中,原子软件组件类型的一个实例被部署在该运行时环境中。

如果具有相同短名称的原子软件组件类型实例被部署到特定的RTE中,可能会导致命名冲突。

为了缓解这种潜在的风险,可以为原子软件组件类型提供一个伴随的符号名称,用于解决命名冲突,符号名称是通过原子软件组件类型拥有的符号属性(SymbolProps)类的属性 “symbol” 来提供。

在生成RTE代码时,根据软件组件的符号名称来识别和处理不同的组件实例,确保RTE能够正确地生成代码,并将不同的组件实例正确地组合在一起。

组合符号名称

我的开源项目链接,欢迎star:​
基于UDS on CAN的Bootloader的刷写上位机:​
https://github.com/sydyg/UDS-on-Bootloader.git​
OSEKNM协议栈:​
https://github.com/sydyg/OSEK_NM​

赠送汽车研发入门资料,助力中国汽车行业发展。​
https://mv0qxzpryx9.feishu.cn/wiki/TPvDwYGcAizCVEkH3fVci48nn9f?from=from_copylink   ​
密码:8M&78193

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std::setw中文不能对齐的问题

从别的博主那 copy过来 记录下 #include <codecvt> #include <locale>class chs_codecvt : public std::codecvt_byname<wchar_t, char, std::mbstate_t> {public:chs_codecvt() : codecvt_byname("zh_CN.GBK") {} };int encoding_diff(string …

【VUE】封装用户树形选择和部门树形选择控件

用vue实现封装用户树形选择和部门树形选择控件&#xff0c;采用el-tree。方便各个功能模块的使用和以后的开发。 一、封装用户树形选择控件&#xff08;userTree.vue&#xff09; <template><div style"padding: 10px;"><!-- 选择人员对话框 -->…

Java 类,变量,对象

类的声明 1、类的权限访问修饰符&#xff0c;public 缺省 public修涉的&#xff0c;在同包中可以进行访问&#xff0c;在不同包中也可以进行访问&#xff0c;缺省的修饰符只能在同包中进行访问 2、类的成员&#xff1a;属性&#xff0c;属性如何调用&#xff1f;对象.属性 1、权…

日常随笔1--MySQL中添加Redo日志文件的步骤详解

Redo日志是MySQL中重要的事务日志&#xff0c;用于记录事务对数据库进行的修改操作&#xff0c;确保数据库的持久性和恢复能力。本文将详细介绍在MySQL中添加Redo日志文件的步骤&#xff0c;包括设置Redo日志文件大小、位置和数量等。 1. 确认当前Redo日志文件状态 在添加新的…

xtu oj 原根

文章目录 回顾杂思路c 语言代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询&#xff0c;降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数&#xff08;大数据&#xff09; 杂 有一些题可能是往年的程设的题&#xff0c;现在搬到…

20255 - 中医方剂学 - 考研 - 执业

第1章 总论 1.我国现存最早的记载方剂的医书是&#xff08;&#xff09;( ) [单选] A.《太平圣惠方》 B.《黄帝内经》 C.《五十二病方》 D.《千金要方》 E.《外台秘要》 正确答案: C 2.我国最早的中医经典理论著作是&#xff08;&#xff09;( ) [单选] A.《伤寒杂病论…

Higress 重磅更新:AI 能力全面开源,云原生能力再升级

作者&#xff1a;澄潭、钰诚 新版本简介 Higress 最新的 1.4 版本基于为通义千问&#xff0c;以及多家云上 AGI 厂商客户提供 AI 网关的积累沉淀&#xff0c;开源了大量 AI 原生的网关能力。同时也在 Ingress、可观测、流控等云原生能力上做了全方位升级&#xff1a; AI 能力…

VS code部署Vue项目Demo

在之前已经在IDEA中部署过vue项目demo。本次在上次基础上进行。 IDEA中Vue的安装和使用【window10】_idea安装vue-CSDN博客 步骤一、安装VSCode 双击安装即可 步骤二&#xff1a;检查npm是否安装 步骤三&#xff1a;检查vue是否安装 &#xff08;vue create 项目名 只要在v…

9.指针与链表

一、指针 1.基本介绍 在程序中&#xff0c;我们的数据都有其存储的地址。在程序每次的实际运行过程中&#xff0c;变量在物理内存中的存储位置不尽相同。不过&#xff0c;我们仍能够在编程时&#xff0c;通过一定的语句&#xff0c;来取得数据在内存中的地址。地址也是数据。…

Leetcode 单词规律

即判断给定的模式字符串&#xff08;pattern&#xff09;和单词字符串&#xff08;s&#xff09;是否遵循相同的对应规则。具体来说&#xff0c;就是要判断 pattern 中的字符与 s 中的单词是否存在一一对应的关系&#xff0c;即双射&#xff08;bijection&#xff09;。 算法思…

安卓无障碍获取录屏权限

每次需要录屏操作时&#xff0c;都会弹窗需要用户手动授权比较麻烦&#xff0c;可以通过无障碍模拟用户点击进行授权。 方法主要有三种&#xff1a; 1.查找“立即开始”&#xff08;华为手机是“允许”&#xff09;节点&#xff0c;模拟点击&#xff1b; Overridepublic void…

【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem

git clone 是 Git 版本控制系统中的一个基本命令&#xff0c;用于从远程仓库复制一个完整的版本库到本地。这个命令不仅复制远程仓库中的所有文件&#xff0c;还复制仓库的历史记录&#xff0c;使得你可以在本地进行版本控制操作&#xff0c;如提交&#xff08;commit&#xff…

Electron+Vue实现两种方式的截屏功能

本次介绍的截屏功能一共有两种分别是在electron环境中与非electron环境中 非electron环境 这个环境下会有一些限制&#xff1a; 1.只能截浏览器中的画面 2.如果里面有iframe或者base64的图片会加载不出来&#xff08;这个会有解决办法&#xff09; yarn add -D js-web-scree…

Java爬虫:获取商品评论数据的高效工具

在电子商务的激烈竞争中&#xff0c;商品评论作为消费者购买决策的重要参考&#xff0c;对于商家来说具有极高的价值。它不仅能够帮助商家了解消费者的需求和反馈&#xff0c;还能作为改进产品和服务的依据。Java爬虫技术&#xff0c;以其稳健性和高效性&#xff0c;成为了获取…

基于Spring Cloud的电商系统设计与实现——用户与商品模块的研究(上)

操作系统&#xff1a;Windows Java开发包&#xff1a;JDK1.8 项目管理工具&#xff1a;Maven3.6.0 项目开发工具&#xff1a;IntelliJIDEA 数据库&#xff1a;MySQL Spring Cloud版本&#xff1a;Finchley.SR2 Spring Boot版本&#xff1a;2.0.6.RELEASE 目录 用户模块—user-…

Android 通过计算器暗码启动应用

项目不带通话功能&#xff0c;要求通过计算器输入暗码打开测试应用。 查看布局文件 数字显示控件 packages\apps\ExactCalculator\res\layout\display_one_line.xml ...<com.android.calculator2.CalculatorScrollViewandroid:id"id/formula_container"android:…

golang中的上下文

背景 在Go语言中&#xff0c;使用context包来管理跨API和进程间的请求生命周期是常见的做法。特别是在涉及到并发编程时&#xff0c;如启动协程&#xff08;goroutine&#xff09;来处理异步任务&#xff0c;正确地传递和监听context变得尤为重要。比如&#xff0c;在gin框架中…

YOLO系列入门:1、YOLO V11环境搭建

YOLO了解 yolo检测原理 yolo是目标检测模型&#xff0c;目标检测包含物体分类、位置预测两个内容。目前yolo的开发公司官网为&#xff1a;https://docs.ultralytics.com/zh截止到目前2024年10月&#xff0c;最新的是yolo11。关于YOLO的介绍可以参考这篇文章&#xff1a;https…

NCCL报错

1、报错信息&#xff1a; raise RuntimeError("Distributed package doesnt have NCCL " "built in") RuntimeError: Distributed package doesnt have NCCL built in 2、报错原因&#xff1a; windows系统不支持nccl&#xff0c;采用gloo&#xff1b; …

@PostConstruct和afterPropertiesSet方法执行多次的原因

近日&#xff0c;遇到一个问题&#xff0c;PostConstruct方法会莫名执行多次&#xff0c;单看代码看不出问题&#xff0c;印象中也只会在bean初始化的时候执行一次而已。 然后问AI&#xff0c;问百度&#xff0c;没找到原因。 后面自己猜测&#xff08;现在都是面向猜测编程&am…