S5P4418裸机开发(九):异常中断处理概述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M_N_N/article/details/82793888

ARM体系结构中对异常中断的一些概述

  • 七种异常

在这里插入图片描述
优先级

异常中断类型 异常中断模式 优先级
Rset 特权模式 1
Undef 未定义指令中止模式 6
SWI 特权模式 6
PAbort 中止模式 5
DAbort 中止模式 2
IRQ 外部中断模式 4
FIQ 快速中断模式 3
  • CPU对异常的响应过程

在这里插入图片描述
在这里插入图片描述

  • 从异常中断中返回

在这里插入图片描述

  • SWIUndef:发生该异常时,PC值未更新,它指向当前指令后面的第2条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令的下一条指令;异常处理完后应返回当前指令的下一条指令;即MOV PC, LR
  • IRQFIQ:通常,CPU执行完当前指令后,查询系统是否允许IRQ及FIQ中断,以及是否产生IRQ及FIQ中断,当该异常中断产生时,PC值已更新,它指向当前指令的后3条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令后的第2条指令;异常处理完后应返回当前指令的下一条指令;即SUBS PC, LR, #4
  • PAbort:指令预取中止异常;
    在这里插入图片描述
      ABC三条指令,在执行A时预取C,若C指令会产生异常则标记该指令,在执行指令C时,处理器产生指令预取中止异常中断;当发生PAbort时,程序要返回到该有问题的指令处,重新读取并执行该指令。因此PAbort中断程序应该返回到产生该指令预取中止异常中断的指令处,而不是像前面的返回到发生中断指令的下一条指令;
      PAbort是由当前执行的指令自身产生的,当该异常产生时,PC值未更新,它指向当前指令后面的第2条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令的下一条指令;异常处理完后应返回当前指令;即SUBS PC, LR, #4
  • DAbort:数据访问中止异常;在这里插入图片描述
      DAbort是由数据访问指令产生的,当该异常产生时,PC值已更新,它指向当前指令后面的第3条指令,进入中断时,CPU将(PC-4)保存到lr_mode中,(PC-4)指向的是当前指令的第2条指令;异常处理完后应返回到产生数据访问中止异常中断的指令处;即SUBS PC, LR, #8

总结

异常类型 返回操作
SWI or Undef MOV PC, LR
IRQ or FIQ SUBS PC, LR, #4
PAbort SUBS PC, LR, #4
DAbort SUBS PC, LR, #8
  • 程序模型

  1. LR修改为中断处理完后的返回地址;
  2. STMFD sp!, {reglist, lr} // 保存现场,表示更新sp的值;
  3. 异常中断处理程序;
  4. LDMFD SP!, {reglist, lr}^ // 恢复现场,^表示将SPSR_mode寄存器的内容复制到当前程序状态寄存器CPSR中,该指令只能在特权模式下使用;
  • 异常向量表(S5P4418)

IROMBoot程序设置了这个表;
在这里插入图片描述在这里插入图片描述
除了复位操作,其他几种异常会跳到 0xFFFF0000 + offset 的地址;
0xFFFF0000 是内部 SRAM 的起始地址;板子启动时IROM程序会将nsih.bin2nboot.bin复制到0xFFFF0000处,下面是nsih.bin开头的部分代码;
在这里插入图片描述
也是几条跳转指令,0xFFFF02002nboot.bin的起始地址,再看看2nboot.bin的开头几条指令;
在这里插入图片描述

总结
友善Smart4418 官方安卓镜像的异常处理过程:

  • IROMBOOT程序设定异常向量表;

在这里插入图片描述
ARM CPU的异常处理程序应该挨个地存在0x0地址。通常将用户的异常处理程序存在于零地址。但是,在IROMBOOT的情况下,用户的异常处理程序不可能设置在0x0地址,因为ROM存在于0x0地址。当使用MMU时,可以通过将任意存储器映射到零地址来处理CPU异常。然而,IROBOOT提供了用于不使用MMU的系统重定向异常处理程序的功能。

  • 当异常发生时,PC跳向IROM(0x34000000 + offset)
  • 再跳向nsih(0xFFFF0000 + offset)
  • 再跳向2nboot(0xFFFF0200 + offset)

猜你喜欢

转载自blog.csdn.net/M_N_N/article/details/82793888