当前位置: 首页 > news >正文

Linux 中断子系统(八):中断处理流程

1、上层中断处理

系统初始化时,已经建立起 硬件中断号 和 软件中断号的 映射表

中断注册时,我们需要先从设备树中获取硬件中断号,然后调用 API 将硬件中断号转换为软件中断号,根据软件终端号 irq 找到对应的 irq_desc,并将中断处理函数添加到 irq_desc 中(也就是 irqaction 结构体中)。

当中断发生,根据硬件中断号通过 irq_domian 翻译成软件中断号 irq number,找到对应的 irq_desc,并最终调用到中断处理函数,处理完成恢复现场。

2、ARM 底层中断处理

1、保存中断发生时 CPSR 寄存器的内容到 SPSR_irq 寄存器中

2、修改 CPSR 寄存器,让 CPU 进入处理器模式中的 IRQ 模式,即 CPSR 寄存器中的 M 域设置为 IRQ Mode

3、硬件自动关闭中断 IRQ 或 FIQ,即 CPSR 中的 IRQ 位或 FIQ 位置 1

4、保存返回地址到 LR_irq 寄存器中

5、硬件自动跳转到中断向量表的 IRQ 向量中,后续动作都是软件行为 —–>

中断返回时,软件需要实现以下两个操作

1、从 SPSR_irq 寄存器中恢复数据到 CPSR 中

2、从 LR_irq 中回复内容到 PC 中,从而返回到中断点的下一个指令处执行。

CPSR 寄存器

相关文章:

  • 网站建设哈尔滨网站优化4/结构优化设计
  • 打开网站弹出qq对话框/电子商务营销策划方案
  • 1688做网站多少钱/seo技巧seo排名优化
  • 网页翻译为什么翻译不了/网站seo最新优化方法
  • 手车做网课网站/搜索引擎优化的方法与技巧
  • 销售营销网站/百度竞价的优势和劣势
  • 从零开始学习Linux
  • Java并发面试题
  • eCharts工具类
  • Spring官方提供【CSRF攻击】解决方案
  • 如何帮助你在经济衰退期间管理你的业务?
  • Docker部署Nexus通过Maven推送及拉取代码
  • win32com操作word 第二集:ApplicationDocuments接口
  • 拿金币 蓝桥杯
  • 【手写 Vue2.x 源码】第二十七篇 - Vue 生命周期的实现
  • 层次分析法和熵值法经典实操案例+数据
  • rocketmq报错的问题排查和记录 RemotingTooMuchRequestException
  • 码二哥的技术专栏 总入口