嵌入式实时操作系统RT-Thread原理与应用第8章 RT-Thread中断管理.docVIP

嵌入式实时操作系统RT-Thread原理与应用第8章 RT-Thread中断管理.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE18

PAGE19

第8章RT-Thread中断管理

8.1中断的概念

中断是计算机系统中一种非常常见且至关重要的机制。

当系统正在处理某个正常事件时,如果发生了需要立即处理的紧急事件,中断机制会暂停当前事件的处理,转而优先处理这个紧急事件。紧急事件处理完毕后,系统会恢复到被中断的地方,继续执行原来的任务。

生活中的中断示例很多,比如:

(1)看书时的电话中断:你正在专心看书,突然电话响了。你记下当前的页码,然后去接电话。接完电话后,你回到刚才记下的页码,继续看书。这就是一个典型的中断过程。

(2)任务优先级的调度:如果来电的是老师,要求你马上交作业,你会判断交作业的优先级高于看书。于是,挂断电话后你先去完成作业,做完作业后再回到书本接着看。这个过程体现了中断机制中的任务调度。

中断的示意图如图8-1所示,它直观地展示了中断机制的工作原理和过程。

图8-1中断示意图

8.2Cortex-MCPU架构基础

ARMCortex-M处理器家族(如M0、M3、M4、M7)架构不同于经典ARM7/9,虽型号差异存在,编程模型基本一致。本节主要介绍RT-Thread中断管理相关架构,不对各型号做细分。

8.2.1 寄存器简介

Cortex-M系列CPU的寄存器组包含了R0~R15共16个通用寄存器,以及若干特殊功能寄存器,如图8-2所示。

(1)R13为堆栈指针寄存器(SP),指向当前堆栈位置。

(2)R14为连接寄存器(LR),存储子程序返回地址,便于返回执行。

(3)R15为程序计数器(PC),记录当前执行指令地址。

(4)堆栈指针可为主堆栈指针(MSP)管理主堆栈,或进程堆栈指针(PSP)管理进程堆栈。

图8-2Cortex-M寄存器示意图

特殊功能寄存器含PSRs、中断屏蔽寄存器(PRIMASK、FAULTMASK、BASEPRI)及CONTROL,使用MSR/MRS指令访问。

(1)特殊功能寄存器含程序状态字寄存器组(PSRs)。

(2)中断屏蔽寄存器组包括PRIMASK、FAULTMASK、BASEPRI。

(3)控制寄存器为CONTROL。

(4)通过MSR/MRS指令访问这些寄存器。

例如:

MRSR0,CONTROL;读取CONTROL到R0中

MSRCONTROL,R0;写入R0到CONTROL寄存器中

8.2.2 操作模式和特权级别

Cortex-M系列CPU引入了操作模式和特权级别的概念。

在操作模式方面,它分为线程模式和处理模式。当CPU进入异常或中断处理时,会切换到处理模式;而在其他情况下,则处于线程模式。

(1)Cortex-M有两个运行级别:特权级和用户级。

(2)线程模式可在特权级或用户级下工作,处理模式始终在特权级。

(3)特权级别切换通过CONTROL特殊寄存器控制。

(4)堆栈寄存器SP对应两个物理寄存器:MSP(主堆栈指针)和PSP(进程堆栈指针)。

(5)处理模式下CPU使用MSP作为堆栈指针。

(6)线程模式下可选择使用MSP或PSP作为堆栈指针。

(7)堆栈指针选择同样由CONTROL特殊寄存器控制。

当Cortex-M复位后,它默认进入线程模式、特权级,并使用MSP堆栈进行操作。

Cortex-M工作模式状态如图8-3所示。

图8-3Cortex-M工作模式状态

8.2.3 嵌套向量中断控制器

NVIC支持中断嵌套,自动保存PSR、PC、LR、R12及R3~R0等寄存器,确保中断后准确恢复状态。

(1)NVIC支持中断嵌套功能。

(2)硬件自动保存PSR、PC、LR、R12及R3~R0寄存器。

(3)保证中断结束后系统能准确恢复状态。

Cortex-M内核与NVIC之间的关系如图8-4所示,它们紧密合作,共同实现了高效的中断处理机制。

图8-4Cortex-M内核和NVIC关系示意图

系统处理中断时,若更高优先级中断触发,处理器打断当前中断并自动保存其上下文寄存器至中断栈,保证高优先级中断结束后能准确恢复并继续执行被打断的中断服务程序。

(1)处理中断时,如有更高优先级中断触发,处理器会中断当前中断服务程序。

(2)处理器自动保存当前中断上下文,包括PSR、PC、LR、R12及R3~R0寄存器内容。

(3)确保更高优先级中断处理完后,系统能准确恢复被中断的中断服务程序状态。

(4)系统随后继续执行被中断的中断服务程序。

8.2.4 PendSV系统调用

PendSV(PendableServiceCall,也称为可悬起的系统调用)是一种特殊的异常,可以像普通中断一样被挂起。它主要用于操作系统中的上下文切换。

PendSV的工作原理

PendSV异常被设计为一个低优先级的异常。每当有上下文切换需求时,可以手动触发PendSV异常。在

文档评论(0)

ning2021 + 关注
实名认证
文档贡献者

中医资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档