RTA OS系列介绍02-中断

1. 概述

本系列RTA OS系列入门介绍,会详细介绍OS相关基础知识,如您对Autosar中的MCAL配置,通信,诊断,OS等Autosar全栈实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

中断是指MCU在运行过程中,出现某些意外情况需处理时,MCU能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。中断提供了应用程序与现实世界中发生的事情之间的接口。例如,我们可以使用中断来捕获触发的按钮、看门狗喂狗操作或计算发生的时间等。

当中断发生时,处理器通常查看内存中的一个预先定义好的位置,称为中断向量。向量通常包含相关中断处理程序的地址,而包含应用程序中所有向量的内存块称为中断向量表。

2. 基本概念

2.1 中断的分类

中断可按优先级划分为单级中断与多级中断,也可按OS是否参与处理将中断分为一类与二类中断:

2.1.1 单级与多级中断

单级:即所有的中断处于同一优先级,这也就意味着当一个中断正在执行时,其他中断必须排队等待直到当前中断处理完成。

多级:类似于Task中断也区分不同的优先级,低优先级的中断可以被高优先级的中断抢占。

2.1.2 一类与二类中断

一类中断:不与OS进行交互,是优先级最高的中断,需要用户正确的配置硬件、编写处理程序并从中断中返回,用不好的话出错概率高,一般应用较少。

二类中断:一般项目中使用的都是此类中断,中断发生时,RTA-OS执行内部代码,然后调用用户提供的ISR。中断执行从ISR的指定入口点开始,一直持续到入口函数返回。在这里插入图片描述
在这里插入图片描述

2.2 中断优先级

在中断的一般应用中,中断以多级中断应用为主,按中断优先级(IPL-Interrupt Priority Level)执行,RTA-OS对IPL进行了标准化,其中IPL 0表示用户级别,其中所有任务都执行,IPL为1或更多表示中断级别。

在单级平台上有两个IPL,0和1。IPL 0表示目标不被中断,任务按优先级顺序运行。IPL 1表示目标正在为中断提供服务。由于只有一个非零IPL,所有中断(类别1和类别2)都以相同的优先级运行。这意味着所有中断都是序列化的,如下图(a)。

在多级平台上,高优先级中断可以抢占低优先级中断,因此ISRs处理程序可以嵌套,但ISR不能被低优先级任务抢占,如下图(b)。
在这里插入图片描述
根据优先级顺序,一类中断优先级更高,其不能被二类中断抢占,所有的2类中断都比最低级的一类中断低。

也可进一步对中断的优先级按Task及OS级别继续划分为User Level和OS Level,此两种中断划分也是宏观级别的划分,具体如下:

2.2.1 User Level

所谓User level,即是用户可以控制的级别,即Task级别,用户级别是允许处理所有中断的最低中断优先级。所有任务都从其入口点开始在用户级别执行。

任务有时需要在用户级别以上运行,例如,它可能需要访问与ISR共享的数据。当数据被访问时,必须防止中断被调用。实现这一点的最简单方法是,可以在任务在访问数据时禁用中断。另一种方法是使用Resource机制,即当Task或2类中断已经获得资源后,其他任务或ISR无法获得该资源,防止任何其他任务或ISR同时进入同一关键部分,如修改同一处变量导致程序出错。

2.2.2 OS Level

由于二类中断是需要OS参与,这样2类ISR的最高优先级定义了OS级别。如果执行发生在OS级别或更高级别(一类中断),则不会发生其他类别2中断。RTA-OS使用OS Level来防止并发访问内部操作系统数据结构。

3. 中断的应用

3.1 中断常用API

对于RTA-OS,在StartOS()后默认所有中断都打开,实际使用中,一般常用API为使能或禁用中断,挂起、恢复中断,可以调用如下API来启用或禁用中断:

DisableAllInterrupts():禁用所有中断
EnableAllInterrupts():使能所有中断
SuspendAllInterrupts() :挂起所有中断
ResumeAllInterrupts():恢复所有中断
SuspendOSInterrupts() :挂起OS级别中断
ResumeOSInterrupts():恢复OS级别中断

以上API在实际使用中,需注意:
1) DisableAllInterrupts() and EnableAllInterrupts()在硬件层面启用或禁用中断,这两个API不能嵌套;
在DisableAllInterrupts()后必须再调用EnableAllInterrupts();
2) SuspendAllInterrupts() and ResumeAllInterrupts(),挂起及恢复所有中断,可以被嵌套;
3) SuspendOSInterrupts() and ResumeOSInterrupts(),可以嵌套使用;
4)Suspend与Resume需要成对出现,Resume不要比Suspend多;
5) 一类中断在关闭期间,不可以调用OS的API;
6) 如果2类ISR将中断级别提高到OS级别以上,并调用DisableAllInterrupts( ),则它可能不会进行任何其他RTA-OS API调用,但用于恢复中断优先级的EnableAllInterrupts( )调用除外。执行ISR时,不允许将中断优先级降低到初始级别以下。

3.2 一/二类中断的处理

3.2.1一类中断的处理

用户必须确保一类ISR输入功能的名称与用户在配置期间为ISR指定的名称相同。

对于一类ISR,在定义输入函数时,通常必须使用编译器特定的关键字,RTA-OS提供了一个名为CAT1_ISR的宏,该宏可扩展为编译器工具链的正确指令,用户应使用该指令将函数标记为一类ISR。

3.2.2 二类中断的处理

二类中断在RTA-OS控制下执行,但不得在2类ISR中放置“中断返回”命令,中断返回由RTA-OS处理。当二类中断需要执行时,由RTA-OS调用中断的入口函数,二类中断的入口函数如下:

#include  <Os.h>

ISR(isr_identifier){
	/*  Handler  body.  */
}

3.3 中断解除

当硬件检测到中断时,它通常会设置一个挂起位,告诉中断控制器中断已经发生。然后,中断控制器将通过中断向量表跳转到处理程序,挂起位的处理取决于目标,但有两个基本方式:

1.中断处理后(即中断处理程序的分支发生时),挂起位自动清除。当处理程序退出时,如果在处理当前中断时中断变为挂起状态,它将自动重新触发。
2. 挂起位必须由中断处理程序中的用户代码手动清除。中断处理程序的主体,无论是一类还是二类都需要包含清除挂起位的代码,并向硬件发送中断已被处理的信号。

3.4 中断实际配置

RTA-OS使用的是静态配置,项目实际开发中,需要OS开发人员在OS模块开始配置前对各模块(Adc、Pwm、Gpt等)的中断需求进行分析,如一类/二类中断?中断优先级?回调函数名称?等,OS开发人员还需要对中断优先级进行评估,是否会影响系统中其他模块工作。

此外,RTA-OS使用指定的向量为中断生成向量表条目。与中断优先级一样,中断向量配置也是MCU特有(不同MCU,对应的向量表不同)的,因此在配置中断向量之前需要特别注意MCU选择。

3.5 更高效的中断处理方式

每个中断处理程序将在代码执行期间阻止所有优先级相同或较低的中断。在编写中断处理程序时,最好将处理程序尽可能短。长时间运行的处理程序会为低优先级中断的服务增加额外的延迟。

使用中如果需要在中断中处理较多的代码,可以采用:将代码写到Task中,再通过中断来激活Task,这样低优先级的任务可以打断该Task从而减少延迟,示例代码如下:

#include  <Os.h>

ISR(EfficientHandler)  {
	ActivateTask(Task1);
}

TASK(Task1)  {
	/*  Long  handler  code.  */
	TerminateTask();
}

4. RTA-OS系列文章汇总

1)RTA-OS系列介绍-Task
2)RTA-OS系列介绍-资源
3)RTA-OS系列介绍-Event

### 回答1: ETAS-OS (RTA-OS)是一款实时操作系统,主要用于汽车嵌入式系统的开发。下面是关于ETAS-OS (RTA-OS)用户手册的简要介绍。 ETAS-OS (RTA-OS)用户手册提供了详细的操作指南技术说明,帮助开发人员使用配置ETAS-OS (RTA-OS)操作系统。该手册包含了各种重要的信息功能,让用户更好地理解运用这款操作系统。 首先,用户手册介绍了ETAS-OS (RTA-OS)的基本概念架构。它解释了操作系统的组织结构,包括任务、中断、调度器等核心概念。此外,手册还描述了操作系统的各种组件模块如何协同工作,以提供实时性可靠性。 接下来,用户手册详细说明了ETAS-OS (RTA-OS)操作系统的安装配置方法。它指导用户如何将操作系统集成到开发环境中,并介绍了各种配置选项设置。用户可以根据自己的需求项目要求,进行灵活的配置调整。 此外,用户手册还提供了完整的API参考,包括操作系统的各种函数接口。用户可以通过阅读用户手册,了解每个函数接口的功能使用方法,以便在开发过程中正确地调用应用它们。 最后,用户手册还包含了一些实际案例示例代码,以帮助用户更好地理解应用ETAS-OS (RTA-OS)。这些案例示例代码涵盖了各种应用场景功能,具有很高的实用性参考价值。 总之,ETAS-OS (RTA-OS)用户手册是使用配置ETAS-OS (RTA-OS)操作系统的重要参考资料。它提供了全面且详细的信息,帮助开发人员顺利地开发调试嵌入式系统,并提高系统的实时性可靠性。 ### 回答2: ETAS-OS (RTA-OS) 是一款嵌入式实时操作系统,被广泛应用于汽车电子系统的开发中。该操作系统具有高性能、高实时性可扩展性的特点,能够有效地支持多任务处理实时任务调度。 ETAS-OS (RTA-OS) 提供了丰富的功能模块API,用于实现各种功能,如任务管理、中断处理、时钟管理、资源管理等。它采用优化的内核设计高效的任务调度算法,能够满足复杂的实时需求。此外,ETAS-OS (RTA-OS) 还提供了丰富的驱动程序硬件接口,方便开发者与外部设备进行通信控制。 用户能够通过详细的用户手册来了解ETAS-OS (RTA-OS) 的使用方法原理。用户手册中包含了操作系统的安装、配置编程的详细步骤,以及各种功能模块API的详细说明示例代码。用户可以根据手册中的指导进行开发调试工作,并能够深入了解操作系统的工作原理内部机制。 除了用户手册之外,ETAS-OS (RTA-OS) 还提供了丰富的开发工具支持,包括调试器、性能分析器仿真环境等。这些工具能够帮助开发者进行调试优化,并提高开发效率系统可靠性。 总之,ETAS-OS (RTA-OS) 是一款功能强大的嵌入式实时操作系统,具有高性能可扩展性的特点。用户可以通过详细的用户手册丰富的开发工具来学习使用该操作系统,实现复杂的实时系统开发。 ### 回答3: ETAS-OS(也称为RTA-OS)是一款用于汽车电子系统开发的实时操作系统。它被设计用于提供高效稳定的运行环境,以满足汽车行业对可靠性性能的高要求。 ETAS-OS用户手册是一本详细说明指导用户如何使用ETAS-OS操作系统的书籍。该手册的主要目的是帮助用户了解ETAS-OS的功能、特性使用方法,以便在汽车电子系统开发中正确地使用该操作系统。 用户手册首先会介绍ETAS-OS的基本概念架构,包括实时调度器、任务管理、中断处理通信机制等。用户可以通过阅读手册来了解系统的工作原理内部机制,从而更好地理解使用ETAS-OS。 手册还提供了一系列操作指南示例,以帮助用户进行系统配置、任务调度、中断处理通信编程等操作。用户可以根据手册中的步骤示例来正确地配置编程ETAS-OS,以满足具体的应用需求。 此外,用户手册还涵盖了一些高级主题,如性能优化、调试错误处理等。这些主题可以帮助用户进一步了解ETAS-OS的使用技巧最佳实践,以提高系统的性能稳定性。 总之,ETAS-OS用户手册是一本帮助用户正确使用ETAS-OS操作系统的重要参考书。通过阅读手册,用户可以深入了解该操作系统的功能特性,掌握系统的配置编程技巧,以提高汽车电子系统的开发效率质量。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Autosar汽车电子进阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值