Autosar-Os是怎么运行的?(时间保护)

写在前面:
入行一段时间了,基于个人理解整理一些东西,如有错误,欢迎各位大佬评论区指正!!!


1.功能概述

AUTOSAR OS 的四大可定制类型凸显了时间保护(Timing Protection)这一关键功能机制的重要性。作为实时操作系统,AUTOSAR OS 需要在预设时限内精确执行任务。然而,超时错误偶有发生,此时系统需采取有效的时间保护措施以预防此类情况。

Deadline Monitoring 是常见的时间保护手段。一旦 OS 检测到任务运行超时,它会触发相应的 Hook 函数以报告系统错误。然而,AUTOSAR OS 并未采用监控截止时间的方法来实现时间保护,因为这种方式往往无法精确识别错误的根源。

以任务 1 为例,即便其运行时间超过截止时间,也不一定意味着任务 1 本身存在错误。实际上,可能是在执行任务 1 之前,任务 2 频繁抢占资源或长时间阻塞资源访问,间接导致任务 1 超时。若仅因任务 1 超时而判断其为错误并停止,那么真正的罪魁祸首任务 2 则可能继续逍遥法外,这显然不合理,也无法有效保护 OS 中各任务的时间管理。

为了更好地说明这一点,我们可以设想一个操作系统,其中包含任务 A、B、C,每个任务都有明确的优先级、执行时间和截止时间,如下表所示:

假设所有任务均于时间 0 准备就绪,执行流程将严格遵循以下时序,确保所有任务均按时完成。

  • 任务 A 因最高优先级而首先执行。
  • 随后,任务 B 在 1 个 Tick 后启动,任务 C 则在 3 个 Tick 后开始。
  • 任务 C 执行 1 个 Tick 后被任务 A 中断,待任务 A 完成后,任务 C 继续执行。
  • 至第 10 个 Tick,任务 C 完成,整个过程中无超时现象,且剩余 1 个 Tick 的空闲时间。

现考虑任务 A 与 B 出现行为异常的情形。异常状态如下图所示:

  • 任务 A 的第二个周期与任务 B 的第一个周期均出现运行时间延长的情况,但均在截止时间之内完成。
  • 任务 B 在第二个周期提前启动,同样未超过其截止时间。
  • 尽管任务 C 按照正常时序执行,但由于任务 A 与任务 B 的异常行为,导致任务 C 的执行超时,从而引发超时错误。

因此,从上述案例的分析中,我们可以得出以下结论:在固定优先级抢占式操作系统,如 AUTOSAR OS 中,任务或中断服务例程(ISR)是否能够满足其截止日期,主要取决于三大关键因素:

  1. 任务/ISR 的执行时间: 这包括任务从获得 CPU 执行权到主动放弃 CPU 的执行周期时间,以及第二类 ISR 从开始到结束的总运行时间。

  2. 任务/ISR 因低优先级任务/ISR 锁定共享资源或禁用中断而遭受的阻塞时间: 这涉及任务或 ISR 持有共享资源的时间(从 GetResource 调用到 ReleaseResource 调用的时间),操作系统中断被任务/ISR 挂起的时间(OSInterrupts 关闭到打开的时间),以及任务/ISR 暂停/禁用所有中断的持续时间(AllInterrupts 关闭到打开的时间)。

  3. 任务/ISR 的到达间隔率: 这指的是任务从连续两次获得 CPU 执行权之间的间隔时间,包括任务从 SUSPENDED 状态转换到 READY 状态的时间,以及从 WAITING 状态转换到 READY 状态的时间。对于第二类 ISR,这还包括其连续两次执行之间的间隔时间。

针对上述三大关键因素,AUTOSAR OS 采用了以下三种时间保护机制:

  1. 执行时间保护: 确保任务或第二类 ISR 的执行时间在静态配置的上限之内,称为执行预算。这主要保护任务的实际执行时间和第二类 ISR 的完整运行周期。

  2. 锁定时间保护: 确保任务或 ISR 锁定共享资源或禁用中断的时间不超过静态配置的上限,称为锁定预算。这主要涉及对共享资源持有时间、操作系统中断挂起时间以及所有中断禁用时间的监控。

  3. 到达间隔时间保护: 保证任务或第二类 ISR 到达间隔时间在静态配置的下限之上,称为时间帧。这确保了任务从 READY 状态转换的间隔时间以及第二类 ISR 的执行间隔符合预设要求。

下图显示了执行时间保护和到达间隔时间保护如何与 AUTOSAR OS 的任务状态转换模型进行交互。

特别的,值得注意的是 AUTOSAR OS 的时间保护机制具备以下基本特性:

  1. 任务与二类中断的专用性: 时间保护机制仅适用于任务和第二类中断,而不适用于第一类中断。这是因为在 AUTOSAR OS 中,第一类中断通常被设计为异步事件处理,其执行时间通常较短且难以预测,因此不适用于时间保护。

  2. OS 启动先决条件: 在操作系统(OS)未启动之前,时间保护机制将不会生效。这是因为时间保护机制依赖于 OS 提供的服务和资源,如任务调度、中断管理等,而这些服务在 OS 未启动前是不可用的。

  3. 信任级别的要求: 在 trusted OS-Applications 场景中,所有的时间信息都必须准确无误,否则系统可能会在运行时发生失败。这是因为信任级别的应用通常对实时性和可靠性有更高的要求,任何时间上的误差都可能导致系统行为异常。然而,对于 non-trusted OS Applications,时间保护机制可以作为加强可执行对象之间定时界限的一个手段,以提高系统的稳定性和可靠性。

  4. 中断禁用限制: DisableAllInterrupts 和 SuspendAllInterrupts 等相关接口并不能关闭时间保护定时器中断。这是因为时间保护定时器中断是确保系统实时性和任务截止日期的重要机制,如果允许这些接口关闭时间保护定时器中断,将会破坏时间保护的完整性和有效性。因此,AUTOSAR OS 设计规定这些接口不得影响时间保护定时器中断的正常工作。

关于时间保护机制在检测到时间异常后的具体处理细节,AUTOSAR_SWS_OS 7.7.2.2 Requirements 规范中进行了明确的规定。当时间保护机制检测到任何与时间相关的异常时,会调用 ProtectionHook 函数,并传递相应的错误码,以便应用程序或系统能够采取适当的措施进行响应。

  • E_OS_PROTECTION_ARRIVAL:当触发到达间隔时间保护时,意味着任务或 ISR 的到达间隔时间违反了静态配置的下限(时间帧)。这种情况下,ProtectionHook 函数将收到 E_OS_PROTECTION_ARRIVAL 错误码。这通常表明系统调度或任务管理存在问题,可能需要重新评估任务的时间需求或调度策略。

  • E_OS_PROTECTION_TIME:当触发执行时间保护或锁定时间保护时,意味着任务或 ISR 的执行时间或锁定时间超过了静态配置的上限(执行预算或锁定预算)。在这种情况下,ProtectionHook 函数将收到 E_OS_PROTECTION_TIME 错误码。这通常表明存在代码效率问题、资源争用或优先级配置不当等问题,需要进行性能调优或资源分配调整。

  • E_OS_PROTECTION_LOCKED:当触发锁定时间保护时,意味着任务或 ISR 因锁定共享资源或禁用中断而遭受的阻塞时间超过了静态配置的上限。此时,ProtectionHook 函数将接收到 E_OS_PROTECTION_LOCKED 错误码。这通常表明资源管理或中断控制存在问题,可能需要优化资源访问方式、减少资源争用或调整中断处理策略。

ProtectionHook 函数的具体实现取决于应用程序或系统的需求。在接收到这些错误码后,它可以用于记录错误信息、触发警报、执行恢复操作或采取其他适当的措施来应对时间异常。

2.硬件实现

以英飞凌芯片为例:

TriCore 架构的时间保护定时器具有以下功能:

  • 单调递减: 时间保护定时器以 CPU 主频的频率单调递减。这意味着定时器从写入的非零值开始,以固定的时钟周期逐渐递减至零。

  • 启动与关闭: 通过写入非零值来启动定时器,而写入零值则关闭定时器。这种机制允许软件精确地控制何时开始和停止时间监控。

  • 异常陷阱触发: 当定时器到期(即递减至零)时,会触发一个异常陷阱(Class-4Tin-7)。这是一个硬件级别的中断,用于通知软件有一个时间保护事件发生了。重要的是,这个异常陷阱是不能通过 DisableAllInterrupts/SuspendAllInterrupts 等接口关闭的,因为它是由硬件直接管理和触发的。

  • 多核支持: 每个核都配备了独立的时间保护定时器。以 TC397 为例,它有 6 个核,每个核有 3 个独立的时间保护定时器。这意味着总共有 6 * 3 = 18 个时间保护定时器可供使用。这种设计允许每个任务或第二类中断服务例程(ISR)在不同的核上运行,并独立地受到时间保护的监控。

另外,TriCore 架构还提供了一个 CPU_CCNT 的寄存器,该寄存器在手册Infineon-AURIX_TC3xx_Architecture_vol1-UserManual-v01_00-EN中的 12.11 Performance Counter Registers 章节可以查阅到,该寄存器会记录当前的 CPU 时钟周期,这个寄存器非常适合用来进行间隔时间保护。

3.功能实现

3.1Scalability Class

Os-OS配置项中的Scalability Class选择SC2或者SC4。

Autosar OS可分为四个等级:SC1~SC4)(SC: Scalability Class,可伸缩的类型 )。各等级支持的功能如下:

3.2Timming Protection

OsTaskAllInterruptLockBudget :一个任务在其执行期间可以锁定所有中断的最大时间(通过suspend endallinterrupts()或DisableAllInterrupts()(以秒为单位)

TaskExecutionBudget:一个任务最大允许执行时间

TaskOsInterruptLockBudget:一个任务运行锁定共享资源或禁用中断的时间的最大时间(通过suspend endosinterrupts())(以秒为单位)。

TaskTimeFrame:连续Task之间的最小到达时间。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue框架技术相关概述以及前端框架整合

vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…

玩转大语言模型——使用langchain和Ollama本地部署大语言模型

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…

亚博microros小车-原生ubuntu支持系列:15 激光雷达巡逻

一 TF坐标转换 ros2 -5.1 坐标变化工具介绍_ros怎么发布坐标变化-CSDN博客 ros2笔记-5.3 C中地图坐标系变换_c变换坐标系-CSDN博客 header:stamp:sec: 1737893911nanosec: 912000000frame_id: odom_frame child_frame_id: base_footprint pose:pose:position:x: 0.053831271…

C++并发编程指南06

文章目录 4.4 简化代码与同步工具同步工具作为构建块 4.4.1 使用Future的函数化编程函数化编程简介C支持函数化编程 快速排序 - FP模式快速排序串行版快速排序并行版 spawn_task函数结论快速排序 - 串行版快速排序 - 并行版spawn_task函数使用 spawn_task 实现并行快速排序详细…

ios swift画中画技术尝试

继上篇:iOS swift 后台运行应用尝试失败-CSDN博客 为什么想到画中画,起初是看到后台模式里有一个picture in picture,去了解了后发现这个就是小窗口视频播放,方便用户执行多任务。看小窗口视频的同时,可以作其他的事情…

C++,STL 六大组件:容器、迭代器、算法、函数对象、适配器、分配器

文章目录 引言一、容器(Containers)主要分类 二、迭代器(Iterators)三、算法(Algorithms)四、函数对象(Functors)五、适配器(Adapters)六、分配器&#xff08…

STM32项目分享:智能鱼缸

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、包含内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: STM32智能鱼缸/水族箱 (资料分享见文末…

基于MinIO的对象存储增删改查

MinIO是一个高性能的分布式对象存储服务。Python的minio库可操作MinIO,包括创建/列出存储桶、上传/下载/删除文件及列出文件。 查看帮助信息 minio.exe --help minio.exe server --help …

14-6-1C++STL的list

(一)list容器的基本概念 list容器简介: 1.list是一个双向链表容器,可高效地进行插入删除元素 2.list不可以随机存取元素,所以不支持at.(pos)函数与[ ]操作符 (二)list容器头部和尾部的操作 list对象的默…

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…

C#分页思路:双列表数据组合返回设计思路

一、应用场景 需要分页查询(并非全表查载入物理内存再筛选),返回列表1和列表2叠加的数据时 二、实现方式 列表1必查,列表2根据列表1的查询结果决定列表2的分页查询参数 三、示意图及其实现代码 1.示意图 黄色代表list1的数据&a…

YOLOv8源码修改(4)- 实现YOLOv8模型剪枝(任意YOLO模型的简单剪枝)

目录 前言 1. 需修改的源码文件 1.1添加C2f_v2模块 1.2 修改模型读取方式 1.3 增加 L1 正则约束化训练 1.4 在tensorboard上增加BN层权重和偏置参数分布的可视化 1.5 增加剪枝处理文件 2. 工程目录结构 3. 源码文件修改 3.1 添加C2f_v2模块和模型读取 3.2 添加L1正则…

【Block总结】DynamicFilter,动态滤波器降低计算复杂度,替换传统的MHSA|即插即用

论文信息 标题: FFT-based Dynamic Token Mixer for Vision 论文链接: https://arxiv.org/pdf/2303.03932 关键词: 深度学习、计算机视觉、对象检测、分割 GitHub链接: https://github.com/okojoalg/dfformer 创新点 本论文提出了一种新的标记混合器(token mix…

设计模式Python版 原型模式

文章目录 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对…

一文讲解Java中的BIO、NIO、AIO之间的区别

BIO、NIO、AIO是Java中常见的三种IO模型 BIO:采用阻塞式I/O模型,线程在执行I/O操作时被阻塞,无法处理其他任务,适用于连接数比较少的场景;NIO:采用非阻塞 I/O 模型,线程在等待 I/O 时可执行其…

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文:https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图: 对应的xxx,在软件中查看 如上图:在每次发送 API 请求时,需要在 Header 中添加 以下键值对&a…

AWTK 骨骼动画控件发布

Spine 是一款广泛使用的 2D 骨骼动画工具,专为游戏开发和动态图形设计设计。它通过基于骨骼的动画系统,帮助开发者创建流畅、高效的角色动画。本项目是基于 Spine 实现的 AWTK 骨骼动画控件。 代码:https://gitee.com/zlgopen/awtk-widget-s…

新年手搓--本地化部署DeepSeek-R1,全程实测

1.环境准备安装ollma ollma官网链接: Download Ollama on Linux ubuntu命令行安装: curl -fsSL https://ollama.com/install.sh | sh 选择运行模型,用7b模型试一下(模型也差不多5G): ollama run deepseek-r1:7b 运行qwen: ollama run qwen2.5:7b 2.为方便运行…

STM32使用VScode开发

文章目录 Makefile形式创建项目新建stm项目下载stm32cubemx新建项目IED makefile保存到本地arm gcc是编译的工具链G++配置编译Cmake +vscode +MSYS2方式bilibiliMSYS2 统一环境配置mingw32-make -> makewindows环境变量Cmake CmakeListnijia 编译输出elfCMAKE_GENERATOR查询…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.21 索引宗师:布尔索引的七重境界

1.21 索引宗师:布尔索引的七重境界 目录 #mermaid-svg-Iojpgw5hl0Ptb9Ti {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Iojpgw5hl0Ptb9Ti .error-icon{fill:#552222;}#mermaid-svg-Iojpgw5hl0Ptb9Ti .…