RAM中断

     中断是异常的一种,是计算机系统中处理异步事件的重要机制
     以按键触发中断为例
         1)中断的触发
               a)中断源级设置
                    触发模式的设置,中断使能
               b)中断控制器级设置
                    中断优先级,中断使能,报告给哪个ARM核,以IRQ/FIQ形式上报            
               c)arm内核设置
                    中断使能

         2)中断的响应过程
               a)硬件自动做4件事
                      1、备份CPSR
                           SPSR_<mode>=CPSR
                      2、修改CPSR
                           mode
                           T = 0//切换为ARM工作状态
                           F = 1 //屏蔽FIQ异常
                            I =1  //屏蔽IRQ异常
                     3、保存返回地址到LR_<mode>
                            PC=vec_base + 0x18
               b)跳转到异常向量表对应位置执行
                       ldr pc, _irq
               c)继续跳转到真正的IRQ异常处理程序
                   asm_do_irq:
                             保护现场
                             bl c_do_irq
                             恢复现场
                   c_do_irq:
                       判断是哪个硬件触发的中断
                       调用对应的硬件中断处理函数hardware_isr
                   hardware_isr:
                       控制硬件(特殊功能寄存器)
                       清除中断源,中断控制器级的pending位     
                  
    为什么ARM中FIQ比IRQ能够得到更快的响应?
       1)FIQ比IRQ的优先级高
       2)通过观察异常向量表可以看出,FIQ的异常处理代码可以直接放在异常向量表中,不需要跳转,可以比IRQ少一条跳转指令
       3)保护现场时,FIQ异常比IRQ异常可以少压栈r8-r12寄存器,也可以使对应的硬件处理hardware_isr更快的被执行到

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暗里い着迷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值