AUTOSAR_EXP_ARAComAPI的7章笔记(6)

news2024/11/23 12:25:25
☞返回总目录

相关总结:ara::com 与 AUTOSAR 元模型的关系总结

7.4 ara::com 与 AUTOSAR 元模型的关系

在本文档中,我们一直在不涉及具体的AP元模型(其清单部分)的情况下解释 ara::com API的思想和机制,AP元模型是正式描述服务接口签名(以及部分行为)的基础,而从这个签名中生成了像代理类骨架类这样的ara::com API 工件以及通信中使用的数据类型。在 5.1 中,我们甚至引入了一个过于简化的IDL,只是为了让读者免受真实元模型/IDL 的复杂性的影响。

本章绝不是对 AUTOSAR元模型的全面解释,AUTOSAR元模型在其自己的文档中有完整的描述,但它将阐明 ara::com 与 [2:AUTOSAR_TPS_ManifestSpecification] 中描述的元模型部分之间的关系。所以请记住,以下部分仍然是比较高层次的,并试图对这种关系提供一个基本的理解。

7.4.1 与 AUTOSAR_TR_AdaptiveMethodology 的关联

建模元素概述以及它们如何相互关联:服务接口部署、实际生成取决于提供的部署信息(例如,稍后将生成的服务接口元素以及与服务实例清单的连接)。

AUTOSAR 自适应平台方法学解释了构建自适应 AUTOSAR系统所需的过程方面以及它们如何相互关联 [TR_AMETH_00100]。它定义了交付或使用的活动工作产品 [TR_AMETH_00102] 以及由原始设备制造商供应商执行的角色。

AP软件开发的主要步骤包括:

  • 架构和设计。

  • AP软件开发。

  • 集成和部署。

AP应用程序ARA层之上运行,并使用服务接口端口交换信息。AP方法学的集成和部署步骤对ara::com API的工作贡献重要。它支持生成服务接口描述 ARXML文件,该文件聚合了服务接口端口面向服务通信的服务接口由事件方法字段定义,这是独立于底层通信软件组件传输层完成的。

AP平台支持两种类型的端口,即提供端口所需端口提供端口细节和服务接口用于生成服务骨架类,所需端口细节和服务接口用于生成代理类代理类骨架类使用 ara::com API 与其他AP平台集群AP应用程序进行通信。

服务实例会进行配置,尤其是将服务实例绑定到选定的传输层,确定某个具体的服务实例提供服务还是需要服务,以及是否有到特定机器的映射关系。服务实例的配置情况会在服务实例清单中体现出来。

自适应软件的Executable通过执行清单来进行实例化。这里的实例化指的是将Executable绑定到操作系统特定进程的上下文环境中。根据机器模式的不同,每个进程可能会以不同的启动配置来启动。此外,执行清单还定义了软件进程之间的依赖关系。

7.4.2 服务接口

ara::com的角度来看,最重要的元模型元素服务接口(SI),因为它从签名方面定义了 ara::com代理或骨架。服务接口描述了一个服务接口由哪些方法、字段和事件组成,以及这些元素的签名(参数数据类型)是什么样子。所以,5.1 基本上是元模型服务接口真实元模型数据类型系统的简化。

元模型元素服务接口ara::com 之间的关系很清楚:ara::com代理类骨架类是从服务接口生成的。

7.4.3 软件组件

AUTOSAR方法论定义了一个比接口更高层次的元素,就是软件组件软件组件的理念是用定义良好的接口描述一个可重用的软件部分。为此,AUTOSAR清单规范定义了一个模型元素 SoftwareComponentType,它是一个抽象元素,有几个具体的子类型,其中子类型 AdaptiveApplicationSwComponentType对于AP应用软件开发人员来说是最重要的。一个 SoftwareComponentType 模型元素由 C++代码实现。这样一个组件 “向外部提供” 或 “从外部需要” 哪些服务接口是通过端口来表达的。端口服务接口进行类型化提供端口P-ports)表示类型化该端口的服务接口是被提供的,而所需端口R-ports)表示类型化该端口的服务接口是被 SoftwareComponentType所需要的。

图 7.6 给出了一个大致的概念,即模型视图如何与代码实现相关联。

图的上部分表示两种不同软件组件类型A和B(元模型层面),在实现层面(图的下部分)存在具体的实现。软件组件类型A的所需端口R-Port)的实现基于实现层面上的ara::com代理类的一个实例,而软件组件类型B的提供端口P-Port)的实现则使用ara::com骨架类的一个实例。代理类骨架类是从服务接口定义生成的,相应的端口引用了这个服务接口,例子中,它是我们一直使用的服务接口 “RadarService”。

SoftwareComponentType实现的代码片段显然可以被重用。AdaptiveApplicationSwComponentType的实现,在C++实现层面上,通常归结为一个或几个 C++的类。所以,重用仅仅意味着在不同的上下文中多次实例化这个类或这些类。在这里,我们基本上可以区分以下情况:

  • 在代码中显式地多次实例化C++类。

  • 通过多次启动 / 运行同一个Executable进行隐式地多次实例化。

第一种情况仍然属于 “实现层面” 的范畴。

上图展示了一个示例,其中 A 和 B 的实现被实例化在不同的上下文中。左下角有一个Executable 1,它直接使用了两个 A的实现实例和一个B的实现实例。与此相反,右侧展示了一个Executable 2,它 “直接”(即在其最顶层)使用了一个B的实现实例和一个复合软件组件的实例,而这个复合软件组件自身 “在其内部” 又实例化了一个A的实现实例和一个B的实现实例。注意:这种从其他组件组成软件组件以形成复合品的自然实现概念在 AUTOSAR元模型中以组合软件组件类型(CompositionSwComponentType)的形式得到了充分体现,它本身就是一个软件组件类型,并允许软件组件的任意递归嵌套 / 组合。

另一方面,第二种情况属于 “部署层面” 的范畴,并将在下面的子章节中进行说明。

7.4.4 AP应用程序/Executable和进程

AP 中的可部署软件单元被称为AP应用程序(相应的元模型元素是 AdaptiveAutosarApplication)。这样一个AP应用程序由 1 ~ n 个Executable组成,而Executable又是通过CompositionSwComponentType(具有任意嵌套)的实例化构建而成,如前一章所述。通常,集成商然后决定到底启动哪些AP应用程序(以其 1 ~ n 个Executable的形式)以及启动某个AP应用程序/其相关Executable的次数。这意味着这种隐式实例化,不需要编写特定的代码!而是需要集成商必须处理机器配置,以配置应用程序的启动次数。一个启动的AP应用程序然后会变成 1 个到 n 个进程(取决于它由多少个Executable组成)。我们将此称为 “部署层面”。

上图展示了一个简单的例子,其中有两个 AP 应用程序,每个应用程序恰好由一个 Executable 组成。具有 Executable1 的 AP 应用程序 1 被部署两次,在 Executable 启动后启动进程 1 和进程 2,而由 Executable2 组成的应用程序 2 被部署一次,在启动后启动进程 3。

7.4.5 基于 ara::com 的应用程序代码中使用元模型标识符

到目前为止对元模型 /ara::com 关系的解释应该有助于理解在 4.3 中描述的 ResolveInstanceIDs 中使用的 instance specifier 的结构。如前一章所述并在图 7.6 中描绘的那样,instance specifier 以某种方式与 SoftwareComponentType 模型中的相应端口相关联。如果你阅读了前面的章节,仅模型的端口名称不足以在其最终实例化中明确地识别它,因为相同的组件实现可能在代码中被多次实例化,然后最终在不同的进程中多次启动。实例 ID 显然必须分配给对象,这些对象在部署中最终具有独特的标识。

上图用一个简单的例子概述了 “问题”。在Executable 2 中,在不同的上下文中(嵌套级别)有三个SoftwareComponentTypeB 实现的实例化。所有实例都提供了一个特定的服务接口 “RadarService” 实例。应用于进程 2 服务实例清单的集成商必须在 ara::com级别上进行技术映射。也就是说,他必须决定在每个 B实例化中使用哪种技术传输绑定,以及随后的哪种技术传输绑定特定实例ID。在我们的例子中,集成商希望在右侧嵌套在复合组件中的 B实例化的上下文中通过 SOME/IP 绑定提供服务接口 “RadarService”,并使用 SOME/IP 特定实例 ID “1”,而他决定在左侧的 B 实例化的上下文中通过本地 IPC(Unix 域套接字)绑定提供服务接口 “RadarService”,并使用 Unix 域套接字特定实例 ID“/tmp/Radar/3” 和 “/tmp/Radar/4”,这些 B实例化没有嵌套(它们在Executable的 “顶层” 实例化)。在这里很明显,在服务实例清单中,它允许指定进程内的端口实例化技术绑定及其具体实例ID 的映射,仅使用来自模型的端口名称是不够区分的。为了在Executable(以及因此在进程中)获得唯一标识符,必须考虑SoftwareComponentType的嵌套实例化和重用的性质。每次SoftwareComponentType被实例化时,它的实例化在其实例化上下文中都会获得一个唯一的名称。这个概念适用于 C++ 实现级别和 AUTOSAR元模型级别!

在我们的具体例子中,这意味着:

  • 顶层的B实例化在其级别上获得唯一名称:“B_Inst_1” 和 “B_Inst_2”。

  • 复合组件类型内的B实例化在这个级别上获得唯一名称:“B_Inst_1”。

  • 顶层的复合组件实例化在其级别上获得唯一名称:“Comp_Inst_1”。

  • Executable /进程的角度来看,我们因此对B的所有实例都有唯一标识符

    • B_Inst_1”。

    • B_Inst_2”。

    • Comp_Inst_1::B_Inst_1”。

对于AP软件组件开发人员来说,这意味着:如果你构建一个实例说明符并通过ResolveInstanceIDs()将其转换为 ara::com::InstanceIdentifier,或者直接与 FindService ()一起使用(R端口),或者作为骨架构造函数参数而使用(P端口),那么实例说明符的形式应该是这样的:

< 上下文标识符 >/< 端口名称 >

端口名称AdaptiveApplicationSwComponentType的模型中获取。由于你不一定是决定你的组件在哪里以及部署多少次的人,你应该预见到,你的AdaptiveApplicationSwComponentType实现可以接收一个字符串化的 <上下文标识符>,你可以:

  • 在构建ara::core::InstanceSpecifier实例化反映你自己的组件端口代理/骨架时直接使用它。

  • “传递” 给从你自己的AdaptiveApplicationSwComponentType实现实例化的其他AdaptiveApplicationSwComponentType实现(即创建一个新的嵌套级别)。

注意:由于 AUTOSAR AP 没有规定元模型级别组件模型应如何转换为(C++)实现级别组件实例化(组件的嵌套)以及 <上下文标识符> 的 “传递”,这取决于实现者!对于可多次实例化的AdaptiveApplicationSwComponentType,通过一个 <上下文标识符>构造函数参数来解决这个问题可能是一个 “自然” 的解决方案。

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

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

相关文章

浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)

首先&#xff0c;在InternStudio平台上创建开发机。 创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo&#xff0c;依次表示JupyterLab、Terminal和Code Server&#xff0c;我们使用Terminal就行。&#xff08;JupyterLab可以直接看文件夹&#xff09;…

webgl threejs 云渲染(服务器渲染、后端渲染)解决方案

云渲染和流式传输共享三维模型场景 1、本地无需高端GPU设备即可提供三维项目渲染 云渲染和云流化媒体都可以让3D模型共享变得简单便捷。配备强大GPU的远程服务器早就可以处理密集的处理工作&#xff0c;而专有应用程序&#xff0c;用户也可以从任何个人设备查看全保真模型并与…

统信桌面操作系统V20专业版安装指南

1.概述 统信桌面操作系统安装器用于完成系统安装的任务&#xff0c;本手册会介绍统信UOS的安装环境、配置要求、安装方法&#xff0c;以及系统初始化设置&#xff0c;希望用户根据本文档可以快速高效的完成系统安装。 1.1安装配置要求 您安装系统前需了解安装统信桌面操作系…

16. 指针类型和步长概念问题

1. 项目场景&#xff1a; ➣ Jack Qiao对米粒说&#xff1a;“今天有道友遇到一个问题&#xff0c;举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子&#xff1a;数组 arr[5] { 0…

设计模式-创建型-抽象工厂模式

1.概念 工厂方法模式只能生产一个产品系列&#xff0c;抽象工厂可以生产多个产品系列 2.作用 多个具体产品组成一个产品族&#xff08;产品系列&#xff09;&#xff0c;一个具体工厂负责生产一个产品族 3.应用场景 系统所需产品间由依赖关系&#xff0c;可以划分为同一产…

20241121 android中树结构列表(使用recyclerView实现)

1、adapter-item的布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"wrap_content&…

Kubernetes的pod控制器

文章目录 一&#xff0c;什么是pod控制器二&#xff0c;pod控制器类型&#xff08;重点&#xff09;1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Job6.Cronjob 三&#xff0c;pod与控制器的关系1.Deployment2.SatefulSet2.1StatefulSet组成2.2headless的由来2.3有状态服…

网口输出的加速度传感器

一、功能概述 1.1 设备简介 本模块为了对电机、风机、水泵等旋转设备进行预测性运维而开发&#xff0c;只需一个模块&#xff0c; 就可以采集旋转设备的 3 路振动信号&#xff08;XYZ 轴&#xff09;和一路温度信号&#xff0c;防护等级 IP67 &#xff0c;能够 适应恶劣的工业…

RocketMQ: 部署结构与存储特点

RocketMQ 是什么 它是一个队列模型的消息中间件&#xff0c;具有高性能、高可靠、高实时、分布式特点 Producer、Consumer、队列都可以分布式Producer 向一些队列轮流发送消息 队列集合称为 TopicConsumer 如果做广播消费则一个 consumer 实例消费这个 Topic 对应的所有队列如果…

【Python系列】浅析 Python 中的字典更新与应用场景

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

正版Simsolid快速无网格划分工具软件

相信各位结构工程师、产品设计工程师、仿真分析师们对SimSolid都不陌生&#xff0c;Altair SimSolid 是一款革命性的仿真软件&#xff0c;旨在为结构分析提供快速而准确的解决方案。SimSolid的独特之处在于它可以直接在完整的设计几何体上进行复杂的仿真&#xff0c;无需传统的…

DevOps-Jenkins-新手入门级

1. Jenkins概述 1. Jenkins是一个开源持续集成的工具&#xff0c;是由JAVA开发而成 2. Jenkins是一个调度平台&#xff0c;本身不处理任何事情&#xff0c;调用插件来完成所有的工作 1.1 什么是代码部署 代码发布/部署>开发书写的程序代码---->部署测试/生产环境 web服务…

Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码

前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始&#xff0c;filter 被弃用&#xff0c;导致无法进行调节过滤。 TermInSetQuery 指定…

tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 这次主要是学习数据增强, 训练集 验证集 测试集的构建等等的基本方法, 数据集还是用的上一篇的猫狗识别;基础篇还剩下几个, 后面的难度会逐步提升;欢迎…

ssm面向品牌会员的在线商城小程序

摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff0c;网络化和电子化。它将是直接管理面向品牌会员的在线商城小程序的最新形式。本小程序是以面向品牌会员的在线商城管理为目标&#xff0c;使用 java技术制…

国土安全部发布关键基础设施安全人工智能框架

美国国土安全部 (DHS) 发布建议&#xff0c;概述如何在关键基础设施中安全开发和部署人工智能 (AI)。 https://www.dhs.gov/news/2024/11/14/groundbreaking-framework-safe-and-secure-deployment-ai-critical-infrastructure 关键基础设施中人工智能的角色和职责框架 https:/…

五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则

一、引言 选择合适的架构模式是一个至关重要的决策&#xff0c;尤其是在单体架构和微服务架构之间的选择&#xff0c;本文将带大家认识什么是单体架构&#xff0c;什么是微服务架构&#xff0c;以及两者如何去选择&#xff0c;如何去转换。 二、什么是单体架构 单体架构&a…

【网络协议】【TCP】精讲TCP数据包传递的地址解析(含三次握手四次挥手图文并茂精华版)

目录 前言 1.TCP定义 1.1 什么是面向连接? 1.2 什么是可靠的通信协议? 1.3 什么是面向字节流的? 2. 数据包传递的地址解析 3. 三次握手过程详解 3.1 第一次握手 3.2 第二次握手 3.3 第三次握手 4. 四次挥手 4.1 第一次挥手 4.2 第二次挥手 4.3 第三次挥手 4.…

Win11 24H2新BUG或影响30%CPU性能,修复方法在这里

原文转载修改自&#xff08;更多互联网新闻/搞机小知识&#xff09;&#xff1a; 一招提升Win11 24H2 CPU 30%性能&#xff0c;小BUG大影响 就在刚刚&#xff0c;小江在网上冲浪的时候突然发现了这么一则帖子&#xff0c;标题如下&#xff1a;基准测试&#xff08;特别是 Time…

人工智能的核心思想-神经网络

神经网络原理 引言 在理解ChatGPT之前&#xff0c;我们需要从神经网络开始&#xff0c;了解最简单的“鹦鹉学舌”是如何实现的。神经网络是人工智能领域的基础&#xff0c;它模仿了人脑神经元的结构和功能&#xff0c;通过学习和训练来解决复杂的任务。本文将详细介绍神经网络…