Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

2023-05-16

 ChatGPT回答:

Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块,其主要功能包括:

  1. 任务调度:支持对任务进行调度和执行,以实现系统中各个功能的协调运行;
  2. 软件组件管理:支持对软件组件的生命周期进行管理,包括定义、配置、实例化、启停等操作;
  3. 服务注册与发现:支持服务的注册和发现,以支持不同组件之间的通信和协作;
  4. 可靠性保证:支持对软件执行的可靠性进行保证,包括错误检测、容错处理、重试机制等;
  5. 性能优化:支持对软件执行的性能进行优化,包括任务调度算法、资源分配策略、缓存管理等;
  6. 版本管理:支持对软件组件和任务进行版本管理,以确保系统的可维护性和升级性;
  7. 安全管理:支持对软件执行的安全进行管理,包括访问控制、认证和加密等。

总之,Adaptive AUTOSAR Execution Management 模块提供了一种可靠的软件执行管理机制,可以更好地支持系统的设计、实现和运行。

7 Execution Management

7.1 What is Execution Management?

执行管理是自适应平台基础中的一个功能集群。执行管理为应用程序提供了一个C++API,以及一个实现执行管理活动方面的守护进程rb-exmd。

作为RTA-VRTE Starter Kit的一部分提供的执行管理库与访问守护进程的应用程序链接。

执行管理功能集群依赖于操作系统接口和日志与跟踪功能集群。

执行管理守护进程rb-exmd使用librb-ara-exec.so库。

 

 7.2 Responsibilities

执行管理功能集群负责控制自适应应用程序的启动和关闭,并管理其运行时执行。为此,执行管理负责:

  • Adaptive Application Control:如何启动应用程序实例,即流程创建和配置。
  • State Management:何时启动/停止应用程序实例,即响应状态更改请求。
  • Resource management:配置CPU和内存上的资源限制,并在适当的情况下对其进行监管。

7.2.1 Adaptive Application Control

自适应应用程序可以满足一个或多个用户需求,但每个应用程序本身并不是一个简单的实体。相反,它是一个由可执行代码、程序数据和元信息组成的软件包。元信息告诉执行管理如何以及何时控制应用程序执行。

一般来说,执行管理使用的元信息包含在使用ARXML定义的清单中。自适应AUTOSAR方法没有设想在machine本身上使用ARXML,而是将通用ARXML清单处理成特定于实现的形式,供执行管理使用。

对于RTA-VRTE入门套件,处理后的表格包括基于数据的FlatCFG配置——详见第4.5.6.2节。

在自适应平台内,执行管理负责控制所有自适应应用程序实例,无论它们是AUTOSAR平台提供商提供的平台级应用程序,即RTA-VRTE入门套件本身的一部分,还是包括系统功能行为的用户级应用程序。

自适应应用程序的实例由配置中的进程表示,而进程又由执行管理部署中的实例对象表示。每个实例可以被分配为在不同的功能组状态下处于活动状态,具有不同的启动参数、不同的过程控制超时等。

7.2.2 State Management

执行管理还提供对机器内状态的控制,例如,更新和配置管理功能集群可能会请求特定状态来停止它将要更新的应用程序;执行管理需要控制状态之间的变化,因为它负责以受控的方式停止应用程序。请注意,在自适应平台内反映功能集群体系结构状态管理将在第8章中进一步描述。

7.2.3 Resource Management

执行管理可以为自适应应用程序实例配置资源控制,例如CPU预算。请注意,反映功能集群体系结构的是,资源管理由执行管理配置,但在运行时由操作系统进行监管——因此,执行管理需要操作系统的支持才能使此功能发挥作用。

7.2.4 Interaction with Functional Clusters

执行管理功能集群仅存在于自适应平台中;经典平台中没有直接的模拟,因为它的职责分为多个基本软件模块(用于平台启动的EcuM/BswM,用于应用程序通信和调度的RTE)。然而,就像经典平台,执行管理与操作系统协同工作,执行应用程序的运行时调度。因此,执行管理依赖于操作系统接口(OSI)功能集群来配置应用程序执行的运行时方面,例如控制进程运行时调度的调度参数。

7.3 Platform Lifecycle

执行管理的基本任务是管理平台生命周期——自适应平台的有序启动和关闭。

执行管理使用对MachineFG功能组的状态更改来反映生命周期中的状态。

AUTOSAR为MachineFG功能组定义了两种强制状态:STARTUP and SHUTDOWN。

可以为MachineFG功能组定义其他用户定义状态,以反映平台生命周期的不同运行阶段。

执行管理是在机器中执行的第一个自适应平台组件。它负责启动所有其他自适应应用程序,因此,执行管理组件是所有自适应应用程序的父进程,因此可以监视它们的状态

MachineFG功能组的初始状态由AUTOSAR定义为STARTUP。进入STARTUP状态时,执行管理通过启动平台级应用程序来执行平台启动,该应用程序从平台(foundation)、自适应AUTOSAR服务以及分配到startup状态的任何用户级应用程序实现功能集群。

State Manager状态管理器(请参阅第8章)请求MachineFG功能组内的状态更改,以管理平台生命周期。状态管理器是一个用户定义的应用程序,用于决定何时需要更改状态;但是,执行管理执行实际的更改,因为它只负责应用程序的执行。然后,执行管理通过基于在执行管理配置期间建立的状态分配启动/停止应用程序来响应来自状态管理器的状态更改请求。

执行管理仅负责启动和停止自适应应用程序。

初始应用程序配置(基于清单信息)通知执行管理应如何以及何时启动每个自适应应用程序。

例如,适用的功能组、命令行参数、亲核性设置等。

最后,平台关闭被处理为向特定AUTOSAR定义的shutdown MachineFG功能组状态的转换。然而,由于关闭硬件所需的机制是特定于Machine的,这通常由进入SHUTDOWN状态时由执行管理运行的应用程序来处理。

7.3.1 Function Group Configuration

平台生命周期使用MachineFG功能组进行管理。与所有功能组一样(见第4.4.3.1节),这是在执行管理配置期间使用ISOLAR VRTE进行配置的。

AUTOSAR定义了两种强制性的平台生命周期状态;STARTUP and SHUTDOWN/RESTART.

一旦使用FunctionGroup访问了平台生命周期功能组MachineFG,就可以将功能组状态作为FunctionGroupState对象的实例进行访问。

其他用户定义的平台生命周期状态可以通过使用MachineFG中的其他状态进行配置来定义。

7.3.2 Application Assignment

初始化功能组和功能组状态后,必须使用执行编辑器将每个自适应应用程序分配给一个或多个状态。必须将自适应应用程序分配给至少一个功能组状态,以确保执行管理启动应用程序实例。

进程必须至少分配给一个功能组状态,否则执行管理将永远无法启动这个进程。

7.3.3 Platform Shutdown

执行管理不会直接关闭machine,而是AUTOSAR希望有一个特殊的进程(应用程序)可以执行此任务。这个过程取决于底层操作系统。

例如,在Linux上,可以使用reboot命令实现,在QNX上使用shutdown-S reboot指令实现。

需要关闭的进程应分配给处于shutdown状态的MachineFG功能组。

然后,状态管理器会将所有其它功能组切换到Off(从而停止所有活动),然后请求执行管理将MachineFG切换到Off,从而启动关闭应用程序。

7.4 Application Lifecycle

为了支持平台状态管理,执行管理包括“应用程序生命周期”的概念。

应用程序生命周期中状态之间的转换由进程本身控制,并使执行管理能够控制功能组内应用程序的启动顺序。

应用程序生命周期包括两种互补状态:

  1. 执行状态Execution State
  2. 进程状态Process State.

进程使用ReportExecutionState API向执行管理报告其当前执行状态。此API采用单个参数,即进程的下一个执行状态,这样做只是为了报告kRunning状态,因为在自适应应用程序终止后会自动报告kTerminating状态。execution state是进程自己的状态视图。

Process State是执行管理层对进程执行阶段的视图。此状态在执行管理内部进行管理,可以响应ReportExecutionState API调用或由于执行管理操作而更改。

因此,进程状态可以具有比执行状态更多的状态,例如kInitializing、kTerminated等。

Process State由执行管理在内部进行管理,因此进程无法直接看到这些状态。相反,进程状态由执行管理用于评估执行相关性。

这控制进程启动/停止的顺序,即使进程的启动取决于另一个处于kRunning或kTerminated进程状态的进程。

与功能组状态不同,执行状态值由AUTOSAR定义,不能通过配置进行扩展。

同样,Process State是执行管理的内部,因此由平台实现来固定。

Execution State的可能值由类型ExecutionState定义。

定义的值为:

kRunning:指示报告应用程序正在从kInitializing移动到kRunning Execution State。

kInitializing、kTerminating和kTerminated Execution States由Execution Management内部管理。

例如,当创建进程时,应用程序会自动进入kInitializion状态。

因此,这些状态不是ExecutionState枚举类型的一部分,应用程序无法直接报告。

向新执行状态的转换由自适应应用程序本身管理,而不是由外部状态管理器管理。自适应平台包括流程的ReportExecutionState API,用于报告向执行管理的转换。

API是作为类ExecutionClient的成员函数实现的。

#include "ara/exec/execution_client.h"
ara::exec::ExecutionClient appclient;

一旦创建了类ExecutionClient的实例(通常在全局范围内),进程就可以使用ReportExecutionState API报告执行状态转换。

ara::core::Result<void>
ExecutionClient::ReportExecutionState(state)

进程应及时报告执行状态转换,以避免触发超时。特别是,对于RTA-VRTE入门套件,转换到kRunning的默认超时为2s。

从执行管理的角度来看,只有一个执行状态转换很重要:kInitializing-->kRunning。

当初始化完成并且应用程序准备好提供服务时,进程会报告此状态转换。

自适应应用程序也可以在初始化阶段发现所需的服务,但由于潜在的延迟(由于发现服务所花费的时间),可能会选择将发现推迟到kRunning状态。

以前的RTA-VRTE入门套件版本也支持kRunning àkTerminating状态转换,这对应于一个进程进入终止阶段,在终止阶段,它应该在终止之前释放分配的资源。AUTOSAR和RTA-VRTE入门套件不再需要报告kTerminating状态转换,无论是响应从执行管理接收到的SIGTERM信号,还是由于自终止。相反,自适应应用程序只需要报告kRunning状态转换,并且在发送SIGTERM时自动设置kTerminating。

7.4.1 Handling Termination

正确处理应用程序的终止非常重要,因为执行管理会检测到意外终止并记录警告。

执行管理通过向应用程序发送SIGTERM信号来请求关闭应用程序。所有应用程序都需要注册一个信号处理程序,该信号处理程序捕获SIGTERM信号并启动应用程序的关闭。

#include <csignal>
void signal_handler( int signal )
{
    gSignalStatus = ( signal == SIGTERM );
}

然后必须向操作系统注册处理程序:

// Install a signal handler

std::signal( SIGTERM, signal_handler );

一旦应用程序接受了关闭请求,它就可以终止,从而释放资源,不需要通知执行管理。

建议从main返回EXIT_SUCCESS或EXIT_FAILURE,而不是依赖于简单的数值。

如果没有用户定义的信号处理程序,POSIX默认值将导致进程立即“异常”终止。

因此,建议始终定义一个处理程序。

当执行管理请求应用程序终止时,它会启动超时定时器。如果此超时到期而应用程序未终止,则进程将被终止。

7.5 Deployment

每个自适应平台实例,即每个目标ECU,都包括一个单独的执行管理实例。

RTA-VRTE入门套件执行管理实例必须使用处理的执行清单进行配置,该清单使执行管理能够确定何时以及如何在目标ECU上启动应用程序进程。

RTA-VRTE入门套件执行管理支持两种机制来生成处理后的执行清单文件,以便在目标ECU上使用:预编译和基于数据的FlatCFG。

早期版本的RTA-VRTE入门套件依赖于使用生成的源文件ExMConfig.cpp进行预编译配置,该文件包含应用程序实例创建、注册、依赖项配置等,供执行管理在自适应平台实例启动期间使用

对ExMConfig.cpp文件的修改适用于Adaptive Platform实例启动时启动的应用程序列表。

不赞成使用预编译配置,而赞成使用基于数据的FlatCFG配置

后者支持Adaptive Platform实例的更新,而无需通过更新FlatCFG配置数据而不是共享库来重建执行管理。

执行管理守护进程(rb-exmd)使用共享库libflatcfg.so在运行时加载FlatCFG配置

通过右键单击ISOLAR VRTE项目并选择ARA Generators -->Generate Flatbuffers Config Files将执行清单信息处理为基于数据的FlatCFG

处理后的FlatCFG配置包含在节点数据文件中,在项目的gen/out文件夹中生成

<softwarestername>/exm_<softwarestername>_flatcfg.bin

执行管理仅启动已注册的自适应应用程序。未能为每个应用程序实例创建和注册实例对象将导致应用程序无法启动。

执行管理配置的示例实现包括在示例应用程序中,并形成用于在用户应用程序中使用的自适应的有用资源。本节的其余部分将解释文件中定义的结构和功能。

RTA-VRTE入门套件的ISOLAR VRTE包括一个执行编辑器,可简化可执行文件和进程的配置,并允许自动生成预编译配置调用函数。

7.5.1 Daemon Process

RTA-VRTE入门套件执行管理是作为守护进程rb-exmd实现的。

rb-exmd进程必须在平台启动的早期启动,因为它负责启动所有进一步的平台和应用程序流程。

rb-exmd守护进程配置由一个二进制文件(exm__<softwareclustername>_flatcfg.bin)在运行时加载,并根据ECUCFG_ENV_VAR_ROOTFOLDER环境变量进行定位。

执行管理基于数据的FlatCFG配置(第4.10.1节)允许通过将数据文件部署到目标ECU来动态更新进程执行配置(未来版本的RTA-VRTE入门套件将支持在执行管理本身运行时进行更新)。

必须向执行管理守护进程传递启动超时参数,并且配置文件的路径应配置如下

export ECUCFG_ENV_VAR_ROOTFOLDER=/opt/vrte/exm-aap-execution-manager/etc/ecu-cfg

\EXMD -t <timeout_in_ms>

Where ECUCFG_ENV_VAR_ROOTFOLDER contains the

exm__<softwareclustername>_flatcfg.bin.

‹timeout_in_ms›参数表示所有启动过程启动所需的最大时间(以毫秒为单位);即在MachineFG STARTUP中配置为激活的所有进程必须报告执行状态kRunning在此间隔内,否则执行管理将中止启动。

7.5.2 Log & Trace

作为自适应应用程序的执行管理使用日志和跟踪,因此需要对日志通道的使用进行FlatCFG配置。必须使用执行编辑器为执行管理生成日志和跟踪的配置。执行管理不是一个普通的自适应应用程序,因此需要采取特殊步骤来生成和部署必要的FlatCFG文件:

1.创建用于执行管理的可执行文件和进程。

2.创建一个软件集群来声明进程和日志与跟踪。

3.生成用于执行管理的FlatCFG。

4.将执行管理FlatCFG部署到目标ECU。

5.在启动执行管理时设置描述日志记录参数的环境变量。

这些步骤在第12.4.1.1节中的日志和跟踪功能集群文件中有详细描述。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11) 的相关文章

  • Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信

    Diagnostic Server 对于AUTOSAR adaptive平台 xff0c 不用重新刷写整个ECU即可添加新的软件包 xff0c 各个软件包描述为SoftwareClusters xff0c 每个SoftwareCluster
  • NVMe-MI --- Management Interface Command Set

    Management Interface Command Set 命令集定义了当NMIMT值被设置为NVMe MI命令时 xff0c 请求者可以提交的命令信息 管理接口命令集同时适用于带外机制和带内隧道机制 NVMe MI消息结构以及所有N
  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱
  • AutoSAR 学习笔记5:基于 AutoSAR 工具链的开发流程

    1 西门子 CVI 工具开发流程 博世 ETAS 工具开发流程 Vector Davinci 工具开发流程
  • 【读懂Autosar代码】-1-概述

    点击返回 Autosar从入门到精通 实战篇 总目录 案例背景 共5页精讲 聊一聊这些封装中关键字宏的命名是如何构成的 FUNC FUNC P2CONST FUNC P2VAR P2VAR P2CONST CONSTP2VAR CONSTP
  • Classic AUTOSAR专题

    往期小怿向各位小伙伴介绍了Classic AUTOSAR专题之I O模块 相信看过的小伙伴对Classic AUTOSAR的I O模块已经有基本的认知了 本期为大家介绍 AUTOSAR模块之诊断模块 内容超丰富 将分两期推出哦 目录 1 概
  • AutoSAR系列讲解(实践篇)7.7-实验:配置SWC&RTE(下)

    AutoSAR系列讲解 实践篇 7 7 实验 配置SWC RTE 下 实验 配置SWC RTE 下 三 步骤二 配置Runnable及其Tasks映射 1 添加及配置Runnable 2 打开Cfg并同步工程 3 导入DBC文件 4 创建T
  • 一文入门车载以太网,吐血整理!不看后悔!

    前言 近些年来 随着为了让汽车更加安全 智能 环保等 一系列的高级辅助驾驶功能喷涌而出 未来满足这些需求 就对传统的电子电器架构带来了严峻的考验 需要越来越多的电子部件参与信息交互 导致对网络传输速率 稳定性 负载率等方面都提出了更为严格的
  • Linux System Network Management Manual

    最近读得一本好书 名字叫做 Linux系统管理与网络管理 为了加深理解与学习 现将书名与目录摘录如下 后续会根据书中的内容做一些整理 I 基础篇 1 Linux系统简介 2 Linux系统安装 3 图形桌面系统管理 4 命令行界面 II 系
  • pom文件中的dependencyManagement和dependencies的区别

    dependencyManagement 只是声明依赖 并不实现引入 因此子项目中需要显示的声明需要用的依赖 如果不在子项目中声明依赖 是不会从父项目中继承下来的 只有在子项目中写了该依赖 并且没有指定版本 才会从父项目中继承该项 并且ve
  • Autosar软件架构

    软件架构 应用层通过 Simulink模型实现 模型的代码生成使用统一配置脚本 底层软件模块满足AUTOSAR 4 2 1标准要求 其软件架构如下图所示 软件架构 2 2 2 Com通信模块配置 BCU通过唤醒信号控制相应CAN消息的通信使
  • 数据类型:C++中的基本数据类型

    数据类型 C 中的基本数据类型 在C 中 数据类型是用于存储不同种类数据的变量类型 C 提供了多种基本数据类型 包括字符型和数值类型 本篇博客将详细介绍C 中的基本数据类型 并提供相应的示例代码 目录 引言 字符型数据类型 2 1 char
  • 团队梯队人才培养模型,60页人才梯队建设与人才培养

    团队梯队人才培养模型 60页人才梯队建设与人才培养 果断收藏 今日头条 人才梯队建设与人才培养 目录 1 人才梯队建设理念 2 人才梯队建设路径 3 梯队人才培养内容与方法 团队总监以上人员管理不成熟的表现 1 无法从项目运作导向转变到战略
  • 在Linux中,如何使用外部jar文件执行Java jar文件?

    在Linux中 如何使用外部jar文件执行Java jar文件 要么使用 cp flag java cp path to somefolder jar path to otherfolder jar com YourMainClass 或者
  • 在 MYSQL / PHP 中设置最大执行时间

    我有一个 XML 文档 其中包含大约 48 000 个子文档 50MB 我运行一个 INSERT MYSQL 查询 为每个子项创建新条目 问题是由于它的大小 需要花费很多时间 执行后我收到这个 Fatal error Maximum exe
  • 避免PHP执行时间限制

    我需要用 PHP 语言创建一个脚本来执行数字排列 但 PHP 的执行时间限制设置为 60 秒 我怎样才能运行脚本 以便在需要运行超过60个sesunde时 不被服务器中断 我知道我可以更改 php 中的最大执行时间限制 但我想听到另一个不需
  • 如何使用带有 stdin 的 wall 命令将消息广播到 python 中的所有 bash 终端?

    我想向我的树莓派上的所有 bash 终端广播消息 我知道有 wall 命令来执行该步骤 我可以使用 os system python 模块来执行该命令 但是 运行命令 wall text txt 需要 sudo 权限 有没有办法将 wall
  • 防止PHP脚本被淹没

    我想防止我的脚本被淹没 如果用户按 F5 它每次都会执行脚本 我想防止这种情况并允许每 2 秒执行一个脚本 有什么解决方案吗 您可以使用内存缓存来执行此操作 简单的演示脚本 memcache new Memcache memcache gt
  • 如何让我的用户脚本也在隔离沙箱和 unsafeWindow 中执行代码?

    对于我的用户脚本中的大部分代码 我需要使用unsafeWindow对于我的脚本执行的网站 我通过使用来做到这一点 grant unsafeWindow 但是 我的一些代码无法执行unsafeWindow并且需要在 Tampermonkey
  • 停止所有 JavaScript 执行

    是否有一个相当于 php die 函数的 javascript 可以停止所有 javascript 包括将来的 ajax 请求回调 超时等 运行 注意 我无法在调试器中使用断点 因为 bug 存在于 ie8 中 并且调试器会阻止您在断点处向

随机推荐

  • 目标设定的SMART原则

    目标设定的SMART原则来源于管理大师彼得 德鲁克的 管理的实践 xff0c 有五个基本的原则 xff1a 1 目标必须是具体的 xff08 Specific xff09 2 目标必须是可以衡量的 xff08 Measurable xff0
  • 软件安全开发 - 流程规范

    写一篇软件安全开发流程分享给大家 xff0c 帮助从事软件开发 xff0c 测试 xff0c 管理的人员 xff0c 规范操作 xff0c 重视软件工程安全 现今社会存在各种网络安全事件 xff0c 比如勒索病毒导致许多网络系统瘫痪 xff
  • 读保护_混合ASIL系统中不同安全等级模块间的边界保护

    01 功能安全组件的软件开发 针对ISO 26262对功能安全软件研发的要求 xff0c AUTOSAR将功能安全需求进行了具体拆分 当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念 在AUTOSAR系统设计的架构中 xff
  • 功能安全的一些好文

    特约专栏 一篇文章带你认识功能安全 本文将结合ISO 26262 xff0c 从什么是功能安全 什么是功能安全工程师以及功能安全工程师主要做什么 xff0c 三个方面展开对功能安全的介绍 https mp weixin qq com s v
  • make和makefile

    第二十六课 xff1a Makefile设计 哔哩哔哩 bilibili 内部资料 课程简介 大连理工大学国家精品课 嵌入式软件设计是计算机 软件工程等学科的专业方向课 xff0c 是一门实践性 技术性很强的重要课程 本课程的主要任务是全面
  • acm算法有用吗?写给自己。

    acm算法有用吗 xff1f 写给自己 xff0c 也希望能帮助那些大一迷茫的人 我是一个普通二本院校即将进入大三的acmer xff0c 一般问这个问题的人都是一个acmer的失败者 xff0c 因为成功的人都去忙着学习该学习的算法了 x
  • 算法题中常用的C++ STL

    一 栈 xff08 stack xff09 stack实现了一种先进后出的数据结构 xff0c 使用时需要包含stack头文件 C 43 43 定义stack语法 xff1a span class hljs stl container sp
  • Boot Loader

    在嵌入式操作系统中 xff0c BootLoader是在操作系统内核运行之前运行 可以初始化硬件设备 建立内存空间映射图 xff0c 从而将系统的软硬件环境带到一个合适状态 xff0c 以便为最终调用操作系统内核准备好正确的环境 在嵌入式系
  • 什么是SecOC 板端加密通讯

    板端加密通讯 Security Onboard Communication 缩写为SecOC SecOC是AUTOSAR标准中提出的针对ECU间通信安全提出的标准 CAN网络是明文传输 xff0c 广播报文 xff0c 无发送合法性校验 为
  • C++11:noexcept关键字

    1 介绍 C 43 43 11新标准引入的noexcept 运算符 xff0c 可以用于指定某个函数不抛出异常 预先知道函数不会抛出异常有助于简化调用该函数的代码 xff0c 而且编译器确认函数不会抛出异常 xff0c 它就能执行某些特殊的
  • 嵌入式应用程序设计流程

    第三十课 xff1a 应用程序设计流程 哔哩哔哩 bilibili arm linux gcc 交叉编译器 通过挂载实现程序调试 xff1a xff08 省去程序下载环节 xff09 第三十二课 xff1a 文件操作 哔哩哔哩 bilibi
  • uboot和bootloader有啥区别

    uboot和bootloader有啥区别 reboot to bootloader有什么用 IT教学网 片内的ram用来存储启动代码 xff0c 在2440初始化sdram之前 xff0c 代码就在片内ram中运行 片内ram装载的是nor
  • 微内核和宏内核以及混合内核

    操作系统内核的几个重要的特点 xff1a 内核是操作系统的核心部分 xff0c 它管理着系统的各种资源内核可以看成连接应用程序和硬件的一座桥梁 xff0c 是直接运行在硬件上的最基础的软件实体在一些简单的硬件设备上可以没有内核或操作系统而直
  • Adaptive AUTOSAR——Time Synchronization(VRTE 3.0 R21-11)

    15 Time Synchronization 15 1 What is Time Synchronization 时间同步是自适应平台基础中的一个功能集群 时间同步通过库向应用程序提供C 43 43 API xff0c 该库作为RTA V
  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • Adaptive AUTOSAR 学习笔记 - AP 背景、技术及特征

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20 11 版本 本文从AUTOSAR EXP PlatformDesign pdf开始 xff0c 一边学习 xff0c 一边顺带着翻译一下 尽力而为 x
  • gPTP时钟同步(时间同步)协议简介

    一 时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗 xff1f 齐步走的动作要领你还记得吗 xff1f 教官首先发出 齐步 走 的命令 xff0c 大家听到 齐步 二字后 xff0c 开始调整动作 xff0c 最终所有人实现动
  • acm有用吗?

    acm有用吗 xff1f 废话 xff0c 没用的话费这么大劲干什么来了 xff0c 但是搞acm需要前期的高付出 xff0c 但是后期会有高回报 xff0c 也不是什么都不管不顾的高付出 xff0c 学好基础课的情况下高付出 中学加小学1
  • std::atomic 原子操作

    类模板 template lt class T gt struct atomic 多线程小结 xff1a 非原子操作 xff0c 不加锁 xff0c 效率很高 xff0c 但无法得到正确的结果非原子操作 xff0c 加锁 xff0c 效率很
  • Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

    ChatGPT回答 xff1a Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块 xff0c 其主要功能包括 xff1a 任务调度 xff1a 支持对任务进行调度和执行 xff0c 以