内核入门(七)——中断管理

本文深入探讨了Cortex-M架构的基础,包括寄存器、操作模式和特权级别,详细介绍了NVIC中断控制器的功能。同时,阐述了RTT中断工作机制,包括中断处理过程、中断服务程序的三个部分,并讨论了中断栈、中断嵌套和底半处理的概念。最后,讨论了中断管理策略,如中断服务程序挂起、中断源管理和全局中断开关。
摘要由CSDN通过智能技术生成


  中断指计算机CPU获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。
  中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。所以正确地处理异常,避免错误的发生是提高软件鲁棒性非常重要的一环。

一、Corte-M架构基础

1.1 寄存器简介

  在博客中有对Cortex-M的寄存器简介。

1.2 操作模式和特权级别

  Cortex-M 引入了操作模式和特权级别的概念,分别为线程模式和处理模式,如果进入异常或中断处理则进入处理模式,其他情况则为线程模式。
  Cortex-M 有两个运行级别,分别为特权级和用户级,线程模式可以工作在特权级或者用户级,而处理模式总工作在特权级,可通过CONTROL 特殊寄存器控制。工作模式状态切换情况如上图所示。

  Cortex-M 的堆栈寄存器SP对应两个物理寄存器MSP和PSP,MSP为主堆栈,PSP为进程堆栈,处理模式总是使用MSP作为堆栈,线程模式可以选择使用MSP或PSP作为堆栈,同样通过CONTROL特殊寄存器控制。

1.3 NVIC

  Cortex-M 中断控制器名为NVIC(Nested vectoredinterrupt controller,嵌套向量中断控制器),主要作用是为中断分组,从而分配抢占优先级响应优先级。当一个中断触发并且系统进行响应时,处理器硬件会将当前运行位置的上下文寄存器自动压入中断栈中,这部分的寄存器包括PSR、PC、LR、R12、R3-R0 寄存器。

1.4 PenSV

  PendSV 也称为可悬起的系统调用,它是一种异常,可以像普通的中断一样被挂起,它是专门用来辅助操作系统进行上下文切换的。PendSV 异常会被初始化为最低优先级的异常。每次需要进行上下文切换
的时候,会手动触发PendSV 异常,在PendSV 异常处理函数中进行上下文切换。

二、RTT中断工作机制

  在Cortex-M 内核上,所有中断都采用中断向量表的方式进行处理,即当一个中断触发时,处理器将直接判定是哪个中断源,然后直接跳转到相应的固定位置进行处理,每个中断服务程序必须排列在一起放在统一的地址上(这个地址必须要设置到NVIC 的中断向量偏移寄存器中)。中断向量表一般由一个数组定义或在起始代码中给出。

2.1 中断处理过程

  RT-Thread 中断管理中,将中断处理程序分为中断前导程序、用户中断服务程序、中断后续程序三部分:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值