AUTOSAR之AUTOSAR OS(上)

news2024/12/29 10:03:40

1、OSEK OS

1.1 OSEK OS介绍

        AUTOSAR OS是基于 OSEK OS发展而来,向下兼容OSEK OS,所以了解AUTOSAR OS之前我们了解一下OSEK OS。

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

1.2 OSEK OS处理等级

        OSEK操作系统定义了三层处理等级:任务层(task level)、调度器的逻辑层(logicallevel for scheduler)和中断层(interrupt level)。如下图所示:

        根据同一调度系统里任务的可抢占属性,任务层分为全抢占非抢占混合抢占(即既有可抢占任务也有不可抢占任务)。任务的执行时序由调度器(Scheduler)根据调度规则而决定。处理器中有一部分中断是不受操作系统控制的中断,称为一类中断,受操作系统控制的中断称为二类中断

OSEK操作系统的优先级规则如下:

  • 中断优先级总是高于任务优先级;
  • 不同的中断和任务可以有一个或多个优先级;
  • 中断和任务的优先级是静态分配(配置好的)的;
  • 同一优先级的任务依照 FIFO 原则决定执行次序;
  • 通过资源调度可实现优先级天花板模式(ceiling priority)。

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

1.3 OSEK OS任务

1.3.1 基本任务与扩展任务

        Task是OS调度的基本单位,Runables和底层基础服务都运行在Task中。

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

  • SUSPENDED(阻塞 激活)→ READY(就绪):必须由外部触发ActivateTask
  • READY(就绪 启动)→ RUNNING(运行):只能由调度器触发
  • RUNNING(运行 被抢占)→ READY(就绪):只能由调度器触发
  • RUNNING(运行 挂起)→ SUSPENDED(阻塞):只能由Task自身触发TeminateTask
  • RUNNING(运行 等待)→ WAITING(等待):只能由Task自身出发WaitEvent
  • WAITING(等待 触发)→ READY(就绪):必须由外部事件触发SetEvent

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

1.3.2 OSEK OS任务符合类

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

属性BCC1BCC2ECC1ECC2
支持多次任务激活NoYesNoYes
每个任务级的任务数1≥11≥1
基本任务YesYesYesYes
扩展任务NoNoYesYes

        由上表可知,基本符合类BCC1和BCC2仅支持基本任务,扩展符合类ECC1和ECC2支持基本任务和扩展任务;一类符合类BCC1和ECC1不支持多次任务激活请求,每个优先级只能有一个任务;二类符合类 BCC2 和ECC2支持多次任务激活请求,每个优先级可以有多个任务。

1.4 OSEK OS优先级天花板模式

        下图显示了一个优先级反转问题,两个任务对一个信号量的共同访问顺序(在全抢占系统中,任务T1优先级最高)。任务T4优先级低,占用信号量S1。T1抢占T4并请求相同的信号量。由于信号量S1已经被占用,T1进入等待状态。现在低优先级的T4被T1和T4之间优先级的任务中断和抢占。T1只能在所有低优先级任务都被终止并且信号量S1再次释放之后执行。尽管T2和T3不使用信号量S1,但它们在运行时延迟了T1。优先级更高的T1结果延后优先级低的T4运行。

        另一个典型问题是死锁问题。在这种情况下,死锁意味着由于无限等待相互锁定的资源而无法执行任务。下面的场景导致死锁:任务T1占用信号量S1,随后无法继续运行,例如,因为它正在等待一个事件。因此,较低优先级的任务T2进入运行状态。它占用了信号量S2。如果T1再次准备就绪并试图占用信号量S2,它将再次进入等待状态。如果T2现在试图占用信号量S1,这将导致死锁。

        为了避免优先级反转和死锁的问题,OSEK操作系统需要以下行为:

  • 在系统生成时,将静态地为每个资源分配其自己的最高优先级。上限优先级将至少设置为访问资源的所有任务的最高优先级。上限优先级必须低于所有未访问该资源的任务的最低优先级,且优先级必须高于所有访问该资源的任务的最高优先级。
  • 如果某个任务需要使用某一资源,且当前任务的优先级低于该资源的最高优先级,则该任务的优先级将被提升到该资源的最高优先级。
  • 如果任务释放资源,则该任务的优先级将重置为在需要该资源之前动态分配的优先级。

        优先级天花板模式(ceiling priority)。即将访问共享资源的任务的优先级在占用资源的过程中提升至共享资源任务的最高优先级之上,从而避免优先级反转现象和死锁的出现

        优先级天花板可能导致优先级等于或低于资源优先级的任务出现时间延迟。该延迟受到任何低优先级任务占用资源的最大时间的限制。可能与正在运行的任务占用相同资源的任务不会进入运行状态,因为它们的优先级低于或等于正在运行的任务。当一个任务占用的资源被释放后,其他可能占用该资源的任务可以进入运行状态。

        下图是实现优先级天花板模式的一个示例。任务T0的优先级最高,任务T4的优先级最低。任务T1和任务T4访问同一个资源。该系统清楚地表明,不需要无边界优先级反转。高优先级任务T1的等待时间小于Τ4占用资源的最大持续时间。

        

2、AUTOSAR OS

2.1 AUTOSAR OS介绍

        AUTOSAR(Automotive Open System Architecture,汽车开放系统架构)是一种开放的、标准化的汽车电子软件架构。AUTOSAR OS(Operating System,操作系统)规范是AUTOSAR架构中的一部分,它定义了操作系统的相关特性和功能。

        AUTOSAR OS 具有包括但不限于以下一些特点和功能:

  • 基于OSEK OS:AUTOSAR OS 的核心功能基于 OSEK OS(一种广泛应用于汽车行业的单核实时操作系统),并在此基础上进行了扩展和增强。
  • 静态配置与实时性能:支持静态配置,以保证实时性能。可以提供基于优先级的调度表,确保任务按照优先级进行调度执行
  • 运行时保护:具备运行时保护功能,包括内存保护和时间保护等。内存保护可防止出错的应用模块影响到其他模块,降低系统完全瘫痪的风险;时间保护则用于预防超时任务的发生,通过设定任务或二类中断服务的运行时间上限、共享资源锁定时间上限、中断挂起时间上限以及任务或中断执行间隔时间下限等方式来实现。
  • 调度表:利用 OSEK counter 以及自启动的 alarm,实现静态定义的任务激活机制。调度表提供一组静态定义的 expiry points(代表与调度表起始点的偏移值),当到达偏移值时,会触发相应动作,如激活任务、设置事件等。
  • 栈使用监控:能够监控栈的使用情况,在上下文切换时检测任务或中断是否出现栈溢出,并报告相应错误或故障。在使用 MPU(内存保护单元)的情况下,栈溢出通常会在操作系统监控到之前触发内存异常,进入错误处理函数。
  • OS Application:将任务、中断、Alarm、调度表、counter 等服务于相同功能单元的集合组合在一起。
  • 支持多核、多分区:可以为不同核,不同分区配置独立的对象(任务、中断、Counter等),但他们都是部署在同一OS上,而不是说一个核有一个OS( AUTOSAR从4.0版本开始支持多核OS)。
  • 启动/关闭接口:StartOS、StartupHook和shutdownOS、ShutdownHook。

为什么需要OS?相比于不带操作系统的“裸机编程”或者带简单时间轮询的操作系统,OS能够具备如下功能:

  • 基于优先级的任务抢占
  • 现场保护和恢复
  • 执行时间的控制
  • 访问权限的控制
  • 共享资源的安全访问

2.2 OS应用OS Application

        AUTOSAR OS有个容器来支持五个对象(Tasks, ISRs, Alarms, ScheduleTables, Counters),这些对象形成一个内聚的功能单元,这个容器被称为OS-Application。如果使用OS-Application,则所有的task、ISR、Counters、Alarms 和 ScheduleTables 必须属于某个OS-Application。属于同一OS-Application的所有对象都可以相互访问。OS Application 分为两类,即 Trusted(可信的)和 Non-Trusted(非可信的)。Trusted OS Application 可以在监控或保护功能关闭的情况下运行,对内存或 OS API 的访问没有限制,若处理器支持,还可运行在特权模式,但默认不会引发内存相关故障,若发生内存故障,系统稳定性可能无法保证,或许需要关闭 OS。Non-Trusted OS Application 不允许关闭监控或保护功能,对内存或 OS API 的访问受到权限控制,也不允许运行在特权模式。

2.3 调度表Schedule Table

        调度功能是OS的核心功能,注意负责任务的激活及切换,OSEK OS调度一般通过Alarm和Event来激活任务,AUTOSAR OS在以上基础上增加了调度表Schedule Table。

        每个调度表至少有一个到期点(Expiry Point),一个到期点包含一个或多个Task/Event。

        调度表可以配置为只运行一次或重复运行。

        Alarm和Expiry Point区别如下:

        一般来说,能用Schedule Table就不要用Alarm,因为Schedule激活Task时间同步性更好(没有for循环间隔代码),alarm是进行for循环轮询激活,时间上会存在一点差异。

2.4 时钟Counters

        Counter分为软件Counter和硬件Counter。

2.4.1 Software Counter

        Software Counter有以下特征:

  • 软件时钟由IncrementCounter函数驱动
  • 每调用一次IncrementCounter,tick值只能增加1
  • 每次tick加1后,查看是否与某个Alarm Expire匹配
  • 需用户提供一个以tick为周期的周期性中断,不是每次中断都能匹配到Alarm

2.4.2 Hardware Counter

        Hardware Counter有以下特征:

  • 硬件时钟由硬件定时器驱动
  • 硬件定时器的下一次中断由OS根据Alarm Expire计算而定
  • 每次硬件定时器中断都能匹配Alarm周期,不会出现中断空跑

2.5 警报Alarm

        Alarm有以下特征:

  • Alarm必须与时钟Counter关联,一个Counter可以关联多个Alarm
  • 当Counter tick值等于Alarm值时称为alarm到期( alarm expired )
  • Alarm到期时可以执行如下动作:
    • 激活TaskSet Event
    • 调用callback
    • 增加Counter值

        由于对应AUTOSAR OS来讲,Alarm不是必须项,这里就不过多介绍。

2.6 事件Event

        定义Event时需要关注三个要素:名字;所属的扩展任务;事件掩码。Event会触发扩展任务进入或者跳出Waiting状态。相关的函数接口包括:SetEvent, WaitEvent, ClearEvent。前两个接口函数会触发任务调度和上下文切换。

        事件可用于为扩展任务提供多个同步点。同步的示例图如下图所示。扩展任务可以等待事件,这将导致任务进入等待状态。当系统中的任务或ISR设置事件时,等待任务将进入就绪状态。当它成为最高优先级的就绪任务时,OS将选择它来运行。

2.7 中断ISR

        OSEK OS和AUTOSAR OS都将中断分为I类中断和II类中断。所有I类都认为是可信的,有最高的supervisor权限。II类中断可信度根据所在分区决定。当我们需要响应时间非常及时时可以使用I类中断。

2.7.1 I类ISR

        对于I类中断,有以下特征:

  • 进入/退出中断不受OS管控,中断发生时立即进入到中断函数,退出时返回到被中断打断的地方
  • 除了使能/禁止、挂起/恢复中断相关服务外,不能调用其他OS服务
  • 响应速度快。

2.7.2 II类ISR

        对于II类中断,有以下特征:

  • 进入/退出中断受OS管控,中断发生时OS将正在运行的Task从Running状态变为Ready状态,然后进入中断服务函数,退出时触发OS重新调度(即调度最高优先级的任务,而不是回到被打断的任务的地方);
  • 除了调度相关服务(如ChainTask、TeminateTask、WaitEvent等)外,可以调用其他OS服务;
  • 响应速度较慢。

        II类中断发生时的状态图如下图所示:

2.7.3 中断延时

        红色部分是硬件耗时,即程序跳转到中断向量表的时间,绿色部分是II类中断比I类中断多出来的延时时间,即OS对任务现场保护及跳转到中断服务函数的时间。

2.7.4 中断优先级

 优先级排序:Task < Cat II ISR < Cat I ISR

 一般而言,OS的系统时钟中断应设置为II类中断优先级最高,若较低则会影响系统实时性。

2.8 任务Task

        同OSEK OS。这里不再复述。

3、总结

        本篇主要对OSEK OS的一些知识点进行了描述,主要介绍了任务和优先级天花板模式,以及介绍了AUTOSAR OS中属于OS-Applicationd的对象,包括调度表,时钟,警报,事件,中断和任务。下一篇将继续介绍AUTOSAR OS的资源管理,分区,OS裁剪,OS保护,分区间通信,多核启动和下电,OS Error和Hook函数。

参考文档:《AUTOSAR_CP_SWS_OS》、《RTA-OS User Guide》、《OSEK/VDX Operating System Specification 2.2r3》、《ATOSAR多核操作系统及其应用》

                   

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

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

相关文章

【视觉SLAM】 十四讲ch7习题

简介 本文主要内容是《视觉SLAM十四讲》&#xff08;第二版&#xff09;第7章的习题解答&#xff0c;并介绍了在解答习题中的一下思考和总结的经验。本文代码部分参考了&#xff1a;HW-of-SLAMBOOK2 1、除了本书介绍的ORB特征点&#xff0c;你还能找到哪些特征点&#xff1f;…

Java聚合快递对接云洋系统小程序源码

&#x1f680;【物流新纪元】聚合快递如何无缝对接云洋系统&#xff0c;效率飙升秘籍大公开&#xff01;✨ &#x1f50d; 开篇揭秘&#xff1a;聚合快递的魅力所在 Hey小伙伴们&#xff0c;你是否还在为多家快递公司账号管理繁琐、订单处理效率低下而头疼&#xff1f;&#…

做不好PPT的原因

新手制作PPT长犯的10个错误 1.Word搬家 为了节约时间&#xff0c;直接把Word素材复制粘贴到PPT上&#xff0c;没有提炼 2.堆积图表 每个页面上堆积了大量的图表&#xff0c;却没有说明数据反映了什么趋势 3.图表业余 想用图表达自己的逻辑&#xff0c;但没有专业的模板&a…

【海洋生态环境】十大数据集合集,速看!

本文将为您介绍10个经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 MAI (Multi-scene Aerial Image) 发布方&#xff1a; 不列颠哥伦比亚大学德国航空航天中心慕尼黑大学 发布时间&#xff1a; 2021 简介&#xff1a; MAI 是用于在单个航拍图像中…

【原创】下载RealEstate10K数据集原始视频的方法

前言&#xff1a;目前互联网上能搜到下载RealEstate10K数据集原始视频的方法都已经不能用了&#xff0c;这篇博客介绍一种目前可用的下载RealEstate10K数据集原始视频的方法&#xff0c;并给出自动化的脚本代码。 目录 RealEstate10K简介 RealEstate10K标注文本下载 RealEst…

WhatsApp接不到验证码?快来看这个新功能,绑定邮箱

很多外贸朋友经常会因为WhatsApp接不到验证码来加我问这个解决方案&#xff0c;基本上我会的我都会帮一下忙。最近WhatsApp更新了一个非常实用的功能&#xff0c;绑定电子邮箱的功能&#xff0c;这个功能可以协助进行WhatsApp验证码的接收&#xff0c;下面来看下如何进行绑定吧…

【Linux-Platform】

目录 1. Linux驱动的分离与分层1.1 为什么要进行Linux驱动的分离与分层1.2 Linux驱动的分层 2. 驱动-总线-设备2.1 总线2.2 驱动2.3 设备 3. platform平台设备总线3.1 platform总线注册3.2 platform驱动3.3 platform设备 1. Linux驱动的分离与分层 1.1 为什么要进行Linux驱动的…

【人工智能专栏】基于人类反馈对语言模型进行强化学习 (RLHF)

Reinforcement Learning from Human Feedback (RLHF) 技术分解 字面上说,RLHF就是基于人类反馈(Human Feedback)对语言模型进行强化学习(Reinforcement Learning),和一般的fine-tune过程乃至prompt tuning自然也不同。RLHF 是一项涉及多个模型和不同训练阶段的复杂概念…

C++ 基础入门篇

文章目录 命名空间输入与输出缺省参数函数重载引用和const引用inline&#xff08;内联函数&#xff09; 命名空间 定义&#xff1a;命名空间需要用到namespace关键字&#xff0c;其后跟着命名空间的名字&#xff08;自定义&#xff09;&#xff0c;再接着就是一对花括号&#x…

气膜建筑在工业仓储厂房中的应用优势—轻空间

随着工业生产的快速发展&#xff0c;对仓储厂房的需求日益增长。气膜建筑作为一种新型的建筑形式&#xff0c;因其独特的优势在工业仓储领域逐渐受到青睐。以下是气膜建筑在工业仓储厂房中的主要应用优势。 快速建设与灵活布局 气膜建筑的一个显著优势是其建设速度快&#xff0…

免费分享:2021-2100中国多情景逐年干燥度模拟数据(附下载方法)

AI是表征一个地区干湿程度的指标&#xff0c;一般来说&#xff0c;根据AI分类可以概括地把区域分为湿润&#xff08;AI<1&#xff0c;相当于森林&#xff09;、半湿润&#xff08;AI在1-1.5&#xff0c;相当于森林草原&#xff09;、半干旱&#xff08;AI在1.5-4&#xff0c…

听,LLM在“说话“:智慧农场开启农业知识传播新范式

&#xff08; 于景鑫 国家农业信息化工程技术研究中心&#xff09;设施农业是现代农业的旗舰,集成了环境调控、水肥管理、植保防疫等多项先进技术。据统计,目前全国现代设施种植面积达到4000万亩&#xff0c;效率高、产出高、效益高的特点明显。北方地区每亩蔬菜日光温室年均纯…

十大免费录屏软件推荐:轻松录制高清视频教程

现在视频教程已经成为知识分享、教学演示以及内容创作的重要形式&#xff0c;无论是在线教育、游戏直播还是软件操作指导&#xff0c;高清、流畅的录屏软件都是我们不可获取的工具之一。 但目前市面上有很多录屏软件&#xff0c;哪款才是适合我们的呢&#xff1f;今天就给大家…

前端(vue3)和后端(django)的交互

vue3中&#xff1a; <template><div><h2>注册页面</h2><form submit.prevent"submitForm"><label for"username">用户名&#xff1a;</label><input type"text" id"username" v-model…

C++威力强大的助手 --- const

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; C之旅 const是个奇妙且非比寻常的东西&#xff0c;博主从《Effective C》一书中认识到关于const更深层次的理解&#xff0c;写此博客进行巩固。 &#x…

无人机之运输的优势

无人机在进行运输任务时使用的是电力驱动&#xff0c;从而可以减少对环境的污染和碳排放&#xff0c;对于改善大气质量和减少碳足迹具有积极的意义。 无人机运输可以避免人为错误和事故的发生&#xff0c;通过预先设定的飞行路线&#xff0c;进行精确点投放。此外&#xff0c;还…

零基础小白备考PMP需要多长时间?

PMP考试在中国大陆&#xff0c;平均每三个月安排一次考试。报名缴费一般在考试前两个月&#xff0c;报完名后开始进入备考&#xff0c;所以基本上是2-3个月的时间。 PMP考试备考不是越久越好&#xff0c;把备考战线拉得太长 &#xff0c;我们的精力都是有限的&#xff0c;后期…

学习HTTP2中的HPACK算法

文章目录 HPACK动态表中的数据插入点两种基本数据类型 Integer String HPACK 专业术语&#xff1a; Header Field&#xff08;头部字段&#xff09;&#xff1a;指的是一个由name - value组成的键值对。名称和值都被视为不透明的字节序列。Dynamic Table&#xff08;动态表&a…

哪个软件可以识别字幕并生成文本?5款最佳工具分享

你是否曾在深夜&#xff0c;抱着手机或电脑&#xff0c;对着那些充满异国情调却无从下手的外语视频感到束手无策&#xff1f; 那些或激昂、或深情、或幽默的对话&#xff0c;因为语言的隔阂而变得遥不可及&#xff0c;让你的观看体验大打折扣。 别急&#xff0c;今天我来告诉你…

AI绘画进阶 ComfyUI 实战教程:轻松给图片添加文字,附工作流教程使用

大家好&#xff0c;我是设计师阿威 在AI绘画中书写文字一直是个老大难的问题&#xff0c;直到SDXL的出现&#xff0c;文字生成才迎来转机&#xff0c;可以在提示词中指定一些英文字符&#xff0c;不过也是经常出错&#xff0c;生成中文就更加不可求了。 本文介绍一种在图片中…