汽车电子笔记之:AUTOSA架构下的OS概述

news2025/1/23 7:12:44

目录

1、实时操作系统(RTOS)

2、OSEK操作系统

2.1、OSEK概述

2.2、OSEK处理等级

2.3、OSEK任务符合类

2.4、OSEK优先级天花板模式

3、AUTOSAR OS

3.1、 AUTOSAR OS对OSEK OS的继承和扩展

3.2、AUTOSAR OS的调度表

3.3、AUTOSAR OS的时间保护

3.4、AUTOSAR OS的内存保护


1、实时操作系统(RTOS)

        实时系统(Real-Time System)通常是指对任务的执行有严格时间要求的系统。在该类系统中应用所执行的动作及对外部事件的应答都应该是及时的并且是可预见的,否则,任务将会错过截止时间或者丢失数据。实时系统通常包含硬实时系统和软实时系统。硬实时系统要求任务必须在截止时间前完成,否则,系统将会出现故障;软实时系统则是期望任务在预定时间内完成,但一定限度的延迟对系统来说并非是致命的。实时系统通常具备以下特点:

        高的输入输出吞吐量;

        对外部异步信号快速的响应能力;

        快速的任务调度;

        具有任务间安全的通信机制等。

        汽车电子控制系统就是一种实时系统,它要求所有任务都是可预见的,通常情况下,包含硬实时任务和软实时任务,任务较多,系统较为复杂。过去,实时系统的设计方法是采取控制循环的方式来查询任务的执行,这种方法需要程序员对任务的执行时间和执行顺序有严格的把控,编程难度大,同时,造成软件移植难度增大,可重复利用性降低。

        实时操作系统(Real Time Operation System,RTOS)是应用于实时系统的操作系统,为用户提供了结构化的方便的任务执行环境,而且能够很好地满足实时性要求。RTOS有以下优点

        消除了在应用软件中对处理器分配的需要;

        修正或添加任务可在应用软件中完成而且不会影响到系统的响应要求;

        除了对任务进行管理外,多数RTOS提供任务通信、任务同步、定时器及内存管理机制;

        RTOS 隐藏了底层硬件的具体特性,为用户提供了一个不依赖于处理器的实时运行环境;

        可以容易地移植到 RTOS 供应商支持的其他处理器。

        综上所述,当前嵌入式操作系统多为实时操作系统。

2、OSEK操作系统

2.1、OSEK概述

        OSEK操作系统(OS)是一个为分布式嵌入式系统所定义的单核操作系统。为适应汽车电子可靠性、实时性、成本敏感性的需求,OSEK操作系统具有以下特性:

        操作系统中任务、资源、服务是静态配置的;

        支持在只读存储器上运行;

        应用中的任务具有很好的可移植性;

        操作系统中所定义的动作是可预见和可记录的。

OSEK 操作系统提供以下服务:

        任务管理:包括任务的激活与终止、任务状态的切换;

        同步服务:主要通过资源调度和事件控制(下文会有例子)来实现;

        中断服务程序:包括一类中断和二类中断;

        报警机制(ALARM):包括相对报警和绝对报警;

        进程间通信:用于进程间数据的交换;

        错误处理:用于支持各种错误的处理。

        AUTOSAR OS继承了上述全部特性。

2.2、OSEK处理等级

        OSEK操作系统定义了三层处理等级:任务层(task level)、调度器的逻辑层(logicallevel for scheduler)和中断层(interrupt level)。任务层分为全抢占、非抢占和混合抢占(preemption full/non/mixed)。任务的执行时序由调度器(Scheduler)根据调度规则而决定。处理器中有一部分中断是不受操作系统控制的中断,称为一类中断,受操作系统控制的中断称为二类中断。各层的优先级和执行时序如下图所示。        

 由上图可归纳OSEK操作系统的优先级规则如下:

        中断优先级总是高于任务优先级;

        不同的中断和任务可以有一个或多个优先级;

        中断和任务的优先级是静态分配(配置好的)的;

        同一优先级的任务依照 FIFO 原则决定执行次序;

        通过资源调度可实现优先级天花板模式(ceiling priority),避免优先级反转。

AUTOSAR OS 完全继承了上述特性。

2.3、OSEK任务符合类

        根据不同的软硬件需求,OSEK OS定义了四种符合类(Conformance classes, CC),分别是 BCC1, BCC2, ECC1和ECC2,各种符合类及其属性见下图。

         由上图可知,基本符合类BCC1和BCC2仅支持基本任务,扩展符合类ECC1和ECC2支持基本任务和扩展任务;一类符合类BCC1和ECC1不支持多次任务激活请求,每个优先级只能有一个任务;二类符合类 BCC2 和ECC2支持多次任务激活请求,每个优先级可以有多个任务。各种符合类之间的兼容关系如下图所示。

 OSEK的基本任务与扩展任务

        OSEK 操作系统中有两种任务:基本任务(Basic Task)和扩展任务(Extended Task)。基本任务有三种不同的状态,分别为运行状态(running)、就绪状态(ready)和阻塞状态(suspending)。处于阻塞状态的任务由API函数或报警器(Alarm)激活进入就绪状态,处于就绪状态的任务由调度器决定是否启动进入运行状态,处于运行状态的任务可能被高优先级的任务或中断抢占从而进入就绪状态,任务运行结束后将自己挂起进入阻塞状态。与基本任务相比,扩展任务多了等待状态,当任务的运行需要等待某一或某些事件时进入等待状态(waiting),当任务所等待的事件被置位时,任务进入就绪状态。基本任务与扩展任务的状态机及其之间的切换如下图所示。

         因为基本任务没有等待状态,所以只能够在任务启动和终结时进行同步,基本任务的优点是占用较少的内存和执行时间。扩展任务的优点是包含多个同步点,没有同步请求的麻烦,当进一步的工作出现信息缺失时,任务切换至等待状态;其缺点是占用较多的内存和执行时间。

2.4、OSEK优先级天花板模式

        若存在Task1, Task2, Task3为全抢占模式下的扩展任务,Taskl和Task3有共享资源,若Taskl在运行时占用了资源Sourcel,Task2和Task3被激活处于就绪状态,调度器根据任务优先级使Task3进入运行状态。由于Task3需要访问的资源Sourcel未被Task1释放,故进入等待状态,而Task2的优先级高于Task1,故Task2抢占Task1进入运行状态,运行结束后将自己挂起,Task 1 继续运行,释放资源后,Task 3 运行。其运行时序如下图所示。

下图为优先级反转示意(优先级task3 >task2 >task1)

        由上图可知,本该先于Task2运行的任务却在Task2之后运行,这种现象被称为优先级反转(Priority inversion)。这种现象与系统设计者的意图相违背,为避免这种现象的出现,OSEK操作系统采用优先级天花板模式(ceiling priority)。即,将访问共享资源的任务的优先级在占用资源的过程中提升至共享资源任务的最高优先级之上,从而避免优先级反转现象的出现,如下图所示。

3、AUTOSAR OS

3.1、 AUTOSAR OS对OSEK OS的继承和扩展

        AUTOSAR OS是在OSEK OS的基础上进行修改和扩展的,是向后兼容的,在OSEKOS上运行的应用程序可以在AUTOSAR OS上运行。

        AUTOSAR从4.0版本开始支持多核OS, AUTOSAR多核OS采用分区机制,多核处理器的每个核中至少有一个OS-Application。任务(Task)、中断服务(ISR)、报警(Alarm)、调度表(Schedule Tables)和计数器(Counters)被统称为操作系统的对象(OS Object)。每一个OSObject 必须从属于一个 OS Application,否则会出现错误。OS-Application 分为 Trusted 和Non-Trusted,Trusted和 Non-Trusted OS-Application 在运行过程中均可以配置相应的监控和保护机制。从属于Non-Trusted OS-Application的OS Object对存储器和API的访问受到限制,通常将一些基础软件层的模块的模式管理主函数映射到 Non-Trusted OSApplication中的任务,如: EcuM_MainFuction (), BswM-MainFuction (), CanMainFuction_Mode()等周期性查询函数,前提是这些模块的安全级别为QM

        AUTOSAR OS 有四类可裁剪类型(OsScalabilityClass),分别是 SC1—SC4。根据不同的处理器特性,用户可选择不同的可裁剪类型。与OSEK OS相比,SC1具有调度表(Schedule Tables),SC2具有调度表和时间保护(Timing Protection)特性,SC3具有调度表和内存保护(Memory Protection)机制,SC4具有调度表、时间保护和内存保护机制。四者示意图如下图所示。

3.2、AUTOSAR OS的调度表

        调度表被用于安排复杂任务或事件序列,可视为一个单向的轴,通过在轴上设置一个或复多个静态的终点(Expiry Point)来激活任务或事件,每个终点上可设置单个或多个任务或事件,终点之间的时间间隔以Counter的Tick为单位,故每一个调度表对应一个Counter。调度表可设置为以循环或非循环的方式运行。调度表结构如下图所示。

3.3、AUTOSAR OS的时间保护

        如上所述,实时操作系统需要在预定的时间内完成一些任务,但是在某些情况下会出现超时错误,因此,操作系统须采用一定的措施来预防超时错误的产生。这种措施称为时间保护。一个时间保护的方法是时间监控,即:当检测到某一任务运行时间超出其截止时间时,操作系统报错并调用相应的钩子(Hook)函数。AUTOSAR OS并不是采用监控截止时间的方式来进行时间保护的,因为对截止时间的监控并不能识别出引起错误的原因。当任务的执行超过截止时间时,任务本身的执行可能没有出错,而是由于受到其他任务或中断过于频繁的抢占或者过长的阻塞资源的访问而衍生出来的错误。这种情况下,如果采用监控截止时间的方式,则有可能结束正确的任务,而错误的任务仍被允许运行。

        假设所有任务在0时刻就绪,则期望时序如下表和下图所示。由于任务A的优先级最高,故任务 A 先执行,1 个Tick之后任务B 执行,3个Ticks之后任务C执行,当任务C执行 1 个 Tick 后任务 A将其打断,任务A执行完毕后,任务C继续运行,到第 10 个Tick任务C执行完毕,周而复始,整个过程并未出现超时现象,并且有1个Tick的空闲状态。

        下图给出了任务错误运行的状态。任务 A 的第二个周期和任务 B 的第一个周期都出现运行时间过长的现象,但并未超出其截止时间。任务B在第二个周期提前进入运行状态,但也未超出截止时间。任务 C 按照正确的方式运行,但由于任务 A 和 B 的出错导致任务 C运行超时,发生超时错误。采用超时监控机制只能检测到任务C超时,这时,操作系统调用钩子函数,由于出错原因并未被检测到,从而操作系统采取的措施无法有效解决错误。

任务超时图如下:

 在实时操作系统中,任务或中断能否满足其截止时间取决于以下三个因素:

        1、静态任务或中断的执行时间上限;

        2、被低优先级任务锁住共享资源或屏蔽中断所引起的阻塞时间;

        3、任务或中断之间的间隔执行时间。

针对上述三个因素,AUTOSAR OS采取了三种时间保护机制:

        针对1,AUTOSAR OS为任务和二类中断服务设定了运行时间上限;

        针对2,AUTOSAR OS设定了共享资源被任务或二类中断锁定的时间上限,设定了OS中断被任务或二类中断挂起的时间上限,设定了所有中断被任务或二类中断挂起或屏蔽的时间上限;

        针对3, AUTOSAR OS设定了任务或二类中断执行间隔的时间下限。

        当任务或中断服务函数在运行过程中不符合上述要求时,AUTOSAR OS调用相应的钩子(HOOK)函数,作出相应的错误处理。

3.4、AUTOSAR OS的内存保护

        内存保护需要特定的硬件支持,即处理器上应该有MPU(Memory Protection Unit),英飞凌AURIX单片机具备该特性。内存保护可防止某些出错的应用程序影响到其他模块。内存保护分为以下三种形式:

         1、栈保护(Stack Protection):每一个 OS Application 和其中的 OS Object 都有各自的私有栈不同的 OS Object之间没有共享栈的存在。栈保护可以更快速地检测出栈上溢和栈下溢,同时,栈保护是划分OS Application的一种方式和依据。

        2、 数据保护(Data Protection):OS Application 和其中的 Objects 都具有各自的私有数据,OS Application 的私有数据区是从属于该OS Application 的Objects 的共享数据区。

        3、代码保护(Code Protection):代码区既可以为 OS Application 所私有,也可以被共享。在没有代码保护的情况下,错误的代码执行会导致内存、时间和服务上的出错。

        OS 通过 MPU 监控内存的访问权限,AUTOSAR 中的访问权限分为:受信任 Object 的和非受信任的Object(Trusted and Non Trusted)两级。受信任的Object 有读写大部分内存的权限,但是没有读取其他非激活栈的权限。非受信任的Object 仅有读写少数内存的权限,包括当前活跃的栈、当前OS Application的数据以及LMU中的共享数据。

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

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

相关文章

PID直观感受简述

0、仿真控制框图 1、增加p的作用(增加响应)P 2、增加I的作用(消除稳差)PI 3、增加D的作用(抑制波动)PID 加入对噪声很敏 4、综合比对

java maven项目打jar包发布(精简版)

目录 一、maven打包 二、安装jdk环境 三、安装mysql 四、jar包传输到服务器 一、maven打包 先clean再package target文件夹下面有生成一个jar包 二、安装jdk环境 1、下载jdk cd /usr/local wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.…

[谦实思纪 02]整理自2023雷军年度演讲——《成长》(下篇)创业之旅(创业与成长)

文章目录 [谦实思纪]整理自2023雷军年度演讲 ——《成长》(下篇)创业之旅(创业与成长)0. 写在前面1. 创业!(创业与成长)1.1 找互补的朋友一起干,更容易成功1.2 创业中必须要有领导者…

Verilog 基础语法(题目)

Verilog 基础语法(题目) **本内容来自 牛客网Verilog基础语法** 1、四选一多路器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0 11 d1 10 d2 01 d3 00 信号示意图: 波形示意图: …

抖音seo矩阵系统源代码开发部署分享

一、 开发步骤分享 抖音SEO矩阵系统源代码开发部署分享,需要经验丰富的开发人员和服务器管理人员,以下是大致的步骤: 确定你需要的功能和设计,确定开发人员和设计师的角色和任务分配,以及开发进度和计划。 确定服务器…

分类预测 | MATLAB实现MIV-SVM的平均影响值MIV算法结合支持向量机分类预测

分类预测 | MATLAB实现MIV-SVM的平均影响值MIV算法结合支持向量机分类预测 目录 分类预测 | MATLAB实现MIV-SVM的平均影响值MIV算法结合支持向量机分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 先利用平均影响值MIV算法对特征进行排序,确定分类特征…

SimpleDateFormat 是线程安全的吗?使用时应该注意什么?面试回答

面试回答 在日常开发中,我们经常用到时间,我们有很多办法在 Java 代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。 最常用的方法就是使用 SimpleDateForm…

leetcode 718. 最长重复子数组

2023.8.24 本题求得子数组,其实就是连续的序列。定义一个二维dp数组,dp[i][j]的含义为:以下标i为结尾的nums1和以下标j为结尾的nums2之间的公共最长子数组。 易得:递推公式为dp[i][j] dp[i-1][j-1] 1; 由此可以看出当…

电商项目part05 微服务网关整合OAuth2.0授权中心

微服务网关整合 OAuth2.0 思路分析 网关整合 OAuth2.0 有两种思路,一种是授权服务器生成令牌, 所有请求统一在网关层验证,判断权 限等操作;另一种是由各资源服务处理,网关只做请求转发。 比较常用的是第一种,把API网关…

从零做软件开发项目系列之四——数据库设计

前言 在对软件进行设计的过程中,数据库的设计是一项重要的内容,软件中主要的处理对象就是各类业务数据,通过对业务数据的处理,实现各种功能。我们经常说的,写程序,说到底就是增删改查,而增删改…

IDEA远程开发

IDEA远程开发 前期准备 IDEA的远程开发是在本地去操昨远程服务器上的代码,所以我们先需要准备一台服务器,在此我使用vmware虚拟出ubuntu-20.04.6的Server版本,以便后面演示。 Ubuntu的Java环境配置 JDK8 sudo apt install openjdk-8-jdkmaven sudo apt instal…

NAT的配置实验

一、实验目的 学习如何配置NAT 二、预备知识: Net Address Translation:通过将内部用户的地址转换为1个公用的外部地址,然后再与外部的用户进行通信,从而既节省了IPv4地址,又实现了对内部用户的安全保护 三、实验过程: …

unity动画融合

1、抛砖引玉 在大型复杂的场景中,一定遇到过手在鼓掌,头在摇头,腿又是其他动作的要求,但是这些东西又不能做一起,因为有时候要把某个动画单独使用,这时候就用到了动画融合,利用动画状态机分层机…

taro react/vue h5 中的上传input onchange 值得区别

<inputclassNamebase-input-file-h5typefileacceptimage/*capturecameraonChange{onChangeInput} />1、taro3react 2、taro3vue3

Android12之ABuffer数据处理(三十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

【1267. 统计参与通信的服务器】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff…

docker可视化工具

安装Portainer 官方安装说明&#xff1a;https://www.portainer.io/installation/ [rootubuntu1804 ~]#docker pull portainer/portainer[rootubuntu1804 ~]#docker volume create portainer_data portainer_data [rootubuntu1804 ~]#docker run -d -p 8000:8000 -p 9000:90…

深入理解 Vue Router:构建可靠的前端路由系统

目录 01-什么是前端路由以及路由两种模式实现原理02-路由的基本搭建与嵌套路由模式03-动态路由模式与编程式路由模式04-命名路由与命名视图与路由元信息05-路由传递参数的多种方式及应用场景06-详解route对象与router对象07-路由守卫详解及应用场景 01-什么是前端路由以及路由两…

XShell 使用命令登陆主机

以root&#xff08;管理者&#xff09;身份登录主机 假设&#xff1a; root的ip&#xff1a;111.00.111.000 root的密码&#xff1a;123456 命令格式&#xff1a; ssh root(这里填ip) //接着回车&#xff0c;输入密码即可实操&#xff1a; enter回车后&#xff0c;在弹出的窗口…

基于Roop视频换脸

Roop 是一个强大的一键换脸工具&#xff0c;允许用户在视频中替换面部&#xff0c;只需要目标面部的一张图片&#xff0c;无需数据集&#xff0c;无需训练。 相对于之前的 Simswap 来说效果要好很多&#xff0c;不过需要注意的是没有授权不要商用。 文章目录 环境搭建使用方法…