AP Autosar平台设计 18 核心类型Core Types

13 篇文章 9 订阅

目录

18 核心类型Core Types

18.1错误处理

18.1.1概述

18.1.2错误代码ErrorCode

18.1.3结果Result

18.1.4 Future and Promise

18.2高级数据类型Advanced data types

18.3基本数据类型

18.4全局初始化和关闭功能


18 核心类型Core Types

核心类型定义了多个功能集群使用的公共类和功能,作为其公共接口的一部分。 定义核心类型的理由之一是包括接口定义中经常使用的常见复杂数据类型。

18.1错误处理

18.1.1概述

处理错误对于任何软件开发来说都是一个至关重要的主题。对于安全关键软件来说,它甚至更重要,因为生命可以依赖于它。然而,当前开发安全关键软件的标准对构建工具链施加了重大限制,特别是关于C++异常。对于ASIL应用程序,由于缺少ASIL认证的C++编译器的例外支持,通常使用C++异常是不可能的。

自适应平台引入了一种概念,它允许在没有C++异常的情况下进行错误处理,并定义了一些C++数据类型来帮助实现这一点。

从程序员的角度来看,实现这个概念的核心类型是ara::core::ErrorCode和ara::core::Result。

18.1.2错误代码ErrorCode

ara::core::ErrorCode的实例表示软件中的特定错误条件。它类似于std::error_code,但在重要方面与之不同。

ErrorCode始终包含枚举值(类型擦除type-erased为整数类型)和对错误域的引用。枚举值描述了错误的特定类型,错误域引用定义了该错误适用的环境。其他可选成员是用户定义的消息字符串和供应商定义的补充错误描述值。

在自适应平台中,每个功能集群定义一个或多个错误域。例如,功能集群“Core Types”定义了两个错误域“Core”和“Future”,其中包含不同错误条件集的错误代码。

18.1.3结果Result

类ara::core::Result是包含值或错误的包装器类型。由于其模板化性质,值和错误都可以是任何类型。但是,错误类型默认为ara::core::ErrorCode,预计此分配将在整个Adaptive平台中保留。

由于错误类型有一个默认值,大多数ara::core::Result声明只需要给出值的类型,例如,对于包含int或ara::core::ErrorCode的Result type,ara::core::Result<int>

可以通过成员函数访问包含的值和错误Result::Value or Result::Error调用者负责确保仅当Result instance实例分别包含值或错误时才调用这些访问函数。Result内容的类型,即值或错误,可以通过Result::HasValue查询。这些成员函数中没有一个抛出任何异常,因此可以在不支持C++异常的环境中使用。

除了上面描述的无异常工作流之外,类ara::core::Result 允许转换包含的 ara::core::ErrorCode 通过调用 ara::core::Result::ValueOrThrow 将对象转化为 C++ 异常。此调用按原样返回任何包含的值,但通过抛出相应的异常类型来处理包含的错误,异常类型自动派生自包含的 ara::core::ErrorCode 的内容。

18.1.4 Future and Promise

与ara::core::Result用作同步函数调用的通用返回类型的方式类似,ara::core::Future用作异步函数调用的通用返回类型。

ara::core::Future与std::Future密切相关,但已扩展为与ara::core::Result互操作。

与ara::core::Result类似,ara::core::Future是一个包含值或错误的类。可通过两种方式提取此内容:

1.通过调用ara::core::Future::get,它返回包含的值(如果存在),否则抛出异常

2.通过调用 ara::core::Future::GetResult,它返回一个 ara::core::Result 对象,其中包含来自 Future 的值或错误

这两个调用都将阻塞,直到异步函数调用提供了值或错误

18.2高级数据类型Advanced data types

除了上一节中提到的错误处理数据类型之外

AP还包含许多其他数据类型和辅助函数。

其中一些类型已经包含在C++11标准中;但是,行为几乎相同的类型在ara::core命名空间中重新定义。这是因为std::types的内存分配行为通常不适合汽车用途。因此,ara::core定义了它们自己的内存分配行为。

这类数据类型的示例有Vector、Map和String。

ara::core 中定义的其他类型已在较新的 C++ 标准中定义或提议,自适应平台将它们包含到ara::core命名空间中,因为它们对于支持Manifest的某些构造是必要的,或者因为它们被认为在API中非常有用。

此类数据类型的示例有StringView、Span、Optional和Variant。

18.3基本数据类型

存在另一个文档AUTOSAR_SWS_AdaptivePlatformTypes,它定义了可在ServiceInterface描述中使用的基本类型。本文件可能被视为将来与Core Types文件合并。

18.4全局初始化和关闭功能

以下函数可用于初始化和反初始化自适应应用程序AUTOSAR运行时的各个数据结构和线程:

Øara::core::Initialize

Øara::core::Deinitialize

ara::core::Initialize 初始化 AUTOSAR Adaptive Runtime for Applications 的数据结构和线程。在此调用之前,不可能与 ARA 进行交互。此调用必须在 main() 内部进行,即在保证静态内存初始化已完成的地方。根据各个功能集群规范,调用应用程序可能必须提供

其他配置数据(例如,为日志记录设置应用程序 ID)或进行其他初始化调用(例如,在 ara::com 中启动 FindService),然后才能对相应功能集群进行其他 API 调用。此类调用必须在调用 Initialize() 之后进行。在静态初始化完成之前调用 ARA API 会导致未定义的行为。静态初始化后进行的调用具有已完成但在调用 Initialize() 之前将被功能集群实现拒绝并出现错误,或者,如果未定义要报告的错误,则会导致未定义的行为。

Ara::core::Deinitialize销毁应用程序AUTOSAR自适应运行时的所有数据结构和线程。此呼叫后,无法与ARA进行交互。此调用必须在main()内部进行,即在保证静态初始化已完成且静态初始化数据尚未开始销毁的位置进行。在调用ARA::core::Deinitialize()之后但在销毁静态初始化数据之前对ARA API进行的调用将被错误拒绝,或者,如果未定义错误,将导致未定义的行为。销毁静态初始化数据后对ARA API的调用将导致未定义的行为。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.背景 2 2.技术驱动因素 2 3.AP的特点 3 4.经典、自适应和非AUTOSAR ECU的集成 4 1.逻辑视图 5 2.物理视图 7 3.方法论和Manifest 8 5.应用设计 10 6.执行Manifest 10 7.服务Instance Manifest 11 1.概述 11 3.调度 12 4.内存管理 12 5.设备管理 12 1.概览 12 2.系统启动 12 3.执行管理责任 13 4.确定性执行 13 5.资源限制 14 6.应用程序恢复 14 7.受信任的平台 15 1) 可以要求将功能组设置为专用状态 16 2)(部分)网络可被要求取消/激活 16 3) 可以要求机器关闭或重新启动 16 4) 其他自适应(平台)应用程序的行为可能会受到影响 16 5) 可以执行项目特定的动作 16 1.概述 20 2.架构 20 3.组件 20 1.概述 21 2.诊断通信子集群 22 3.事件存储子集群 23 1.概述 25 2.设计 26 3.架构 26 1.网络管理算法概述 26 2.架构 27  图1 NM概述 27 1.术语 40 2.IAM框架的范围和重点 41 3.AUTOSAR规范的内容 41 4.IAM框架的体系结构 ①一般框架 42 (1) 使用加密的密钥或密钥句柄进行操作 46 (2) 尽管可能会损害应用程序安全地管理密钥 46 (3) 限制应用程序对键的访问和允许的操作 46  API扩展说明 47 2.架构 47 1.Safety概述 48 2.信息交换保护(E2E保护) 49 3.平台健康管理 49 Core Types定义了多个功能集群作为其公共 interface 的一部分使用的通用类和功能。定义Core Types的理由之一是包括 Interface 定义中经常使用的常见复杂数据类型。 52 1.错误处理 52 2.高级数据类型 53 3.全局初始化和关闭功能 53
Autosar AP设计工具是一种用于实施和管理Autosar软件构架的软件工具。Autosar(汽车软件架构)是一种开放式的软件架构,用于在汽车电子系统中实现功能和通信。AP代表应用程序。Autosar AP设计工具的目标是帮助开发人员在Autosar环境下设计和开发应用程序。以下是该工具的一些关键功能和优势。 首先,Autosar AP设计工具提供了一个集成的开发环境,使开发人员能够在一个统一的平台上进行设计和开发工作。这种集成可以大大简化工作流程,提高开发效率。 其次,工具提供了自动生成和自动配置的功能。在Autosar中,许多重复的任务和模块配置需要手动完成。但是,AP设计工具可以根据开发人员的设置和需求自动完成这些任务,从而减少了手动工作和错误。 另外,该工具还提供了模型驱动的设计方法。开发人员可以使用图形化界面设计自己的应用程序模型,并将其转换为可以在Autosar平台上运行的代码。这种方法可以帮助开发人员更好地理解和管理复杂的系统。 此外,工具还提供了强大的调试和测试功能。开发人员可以使用工具中的调试器和仿真器对应用程序进行调试和测试,以确保其正确性和性能。 最后,工具还可以与其他Autosar工具和平台集成,如配置管理工具、代码生成工具等,从而构建一个完整的开发和管理解决方案。 总之,Autosar AP设计工具是一种强大的软件工具,可以帮助开发人员在Autosar环境下设计和开发应用程序,并提供了自动生成、自动配置、模型驱动设计、调试和测试等多种功能,从而提高了开发效率和应用程序质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值