中断源
产生请求的硬件或系统事件,例如定时器溢出、串口接收、外部引脚变化等。 中断源的类型决定了事件标志、清除方式和处理时限。
中断机制使处理器能够响应异步事件。对于 RTOS, 中断不仅影响事件处理延迟,还可能改变任务状态、触发调度决策, 并影响系统的最坏情况响应时间。
中断是一种改变处理器执行路径的事件响应机制。
当外设、定时器或其他受支持的事件产生中断请求时, 处理器会依据当前中断使能状态、优先级规则和架构定义的响应条件, 决定是否以及何时进入相应的中断处理路径。
中断服务程序(ISR,Interrupt Service Routine) 通常负责确认事件、读取或写入硬件状态、记录必要信息, 并在需要时通知任务或更新内核状态。
中断机制与轮询是不同的事件处理方式。中断可以避免处理器持续检查某些事件, 但中断也有入口、现场保护、处理与返回开销;选择哪种方式需要结合事件频率、 时限要求和硬件能力。
事件可能改变任务状态,但是否发生任务切换取决于后续决策。
硬件入口、软件处理与中断返回需要分别理解。
上述步骤是帮助理解的抽象流程。某些现场由硬件保存,另一些由软件保存; 有些内核在中断退出时检查调度请求,有些则通过专门的内核路径处理。 因此,不应将这份列表视为所有处理器都必须遵循的固定指令顺序。
具体名称与结构会随芯片和处理器架构而变化。
产生请求的硬件或系统事件,例如定时器溢出、串口接收、外部引脚变化等。 中断源的类型决定了事件标志、清除方式和处理时限。
控制中断是否能够被响应,以及多个请求之间的处理顺序。 优先级语义、屏蔽规则和可嵌套条件由具体处理器及配置决定。
将中断源关联到相应的处理入口。向量布局、跳转形式和入口开销取决于芯片架构及工具链。
执行必要的事件处理工作。ISR 应关注时限、执行路径和资源访问, 并避免不必要的长时间处理或不可控阻塞。
保存哪些状态,取决于处理器架构、编译器约定和内核实现。
中断处理必须遵守处理器与软件之间的调用约定,确保被打断的执行流在中断结束后能够正确继续。 但这并不意味着每次中断都必须由软件显式保存所有寄存器。
| 状态或资源 | 作用 | 需要注意的区别 |
|---|---|---|
| 程序计数器(PC) | 确定被中断程序后续的执行位置。 | 保存方式由处理器中断入口和返回机制决定。 |
| 堆栈指针(SP) | 定位当前使用的堆栈区域。 | SP 是否需要额外保存,以及何时切换堆栈,取决于实现。 |
| 通用寄存器 | 保存计算、指针与临时数据等执行状态。 | 实际保存集合取决于 ISR、编译器约定和内核上下文设计。 |
| 处理器状态 | 包含条件标志、控制状态或其他执行属性。 | 具体寄存器名称与保护规则随架构而异。 |
| 扩展寄存器 | 某些处理器还具有浮点或向量等扩展状态。 | 并非所有 MCU 都具备这些资源,也不一定在每次中断时保存。 |
中断可以影响任务状态,但中断本身不是任务调度器。
ISR 完成事件处理后,没有改变可运行任务的选择结果, 内核可能直接恢复原来的执行流。
ISR 可能通知等待事件的任务,或更新内核状态。 内核根据调度策略判断是否需要在适当的执行边界切换任务。
图示为概念流程。任务通知方式、就绪队列更新时机及调度检查位置,需以具体内核实现为准。
中断嵌套会改变响应关系,也会增加执行路径和资源管理复杂度。
处理器根据优先级与屏蔽状态决定哪些中断可以打断当前执行流。 高优先级请求是否能立即抢占,取决于架构规则和当前处理器状态。
允许嵌套时,必须考虑现场保护、堆栈使用、共享状态和返回顺序。 更深的嵌套可能增加堆栈需求与高优先级中断之间的干扰。
通用 RTOS 理论需要结合具体 MCU 的中断与寄存器机制理解。
经典 MCS-51 / 8051 与许多 Cortex-M 处理器的中断入口机制并不相同。 不能直接把 Cortex-M 的自动压栈行为套用到 8051 上,也不能假设所有上下文状态都由硬件自动保存。
分析 8051 中断实现时,尤其需要确认:
检查 PSW、当前寄存器组以及 ISR 与任务之间的寄存器使用约定, 确保现场保护和恢复规则一致。
评估中断入口、函数调用、嵌套层级和任务上下文保存带来的堆栈消耗, 避免现场被覆盖或内存越界。
以目标芯片、Keil C51 编译器生成的代码和实际内核实现为准, 核对入口跳转、现场保护及中断退出逻辑。
确认 ISR 可以调用哪些内核接口、何时允许请求调度, 以及任务切换如何与中断返回路径衔接。
单一的中断延迟指标不能代表完整的系统响应时间。
中断响应延迟通常用于描述从中断请求产生到处理器开始执行相应处理路径之间的时间。 实际定义应明确起止事件,并说明是否包含请求屏蔽、当前指令完成和入口开销。
如果中断用于唤醒任务,那么事件到任务动作完成的时间还可能包括 ISR 执行、 调度等待、任务切换、其他任务的干扰以及任务本身的执行时间。
中断屏蔽时间是否受控?ISR 的最坏执行路径是否清楚? 高优先级中断会产生多少干扰?任务会阻塞多久? 从事件发生到目标动作完成的总时间,是否满足规定的截止时间?
中断是嵌入式系统响应异步事件的重要机制,也是 RTOS 与硬件事件协作的关键路径。
它可能改变任务状态并触发调度判断,但不意味着每次中断都会发生任务切换。
要正确理解中断,需要同时关注硬件入口、现场保护、ISR 执行、嵌套规则、
调度策略和目标平台的时间约束。对 8051 系统,还必须以真实寄存器布局、
堆栈使用与实际执行路径为依据进行分析。
从中断机制继续深入调度、上下文切换与系统执行路径。
建议阅读顺序:中断基础 → 上下文切换 → 任务调度 → 中断流程系统视图。