• arm 异常处理结构


    概念:正常的程序执行过程中发生暂时的停止称为异常,如果发现异常情况,将会进行异常处理

    作用:快速响应用户的行为,提高cpu的响应能力

    异常类型:

    异常处理的三个步骤:

    1、保护现场:

    工作模式保存:CPSR-->SPSR(自动完成)自能保存在SPSR中,其他寄存器不行

    下一条要执行指令:lr<--pc(自动完成)

    数据的保存:STMFD SP!,{R0-R12}(需手动完成)

    2、跳到中断处理程序处:PC = 中断处理程序的首地址

    3、恢复现场:

    sp!-->R0-r12(还原数据)

    SPSR-->CPSR(还原工作状态)

    pc-->lr-4(pc指向的是正在取指的那条指令,与真正执行的指令相差8字节,与正在译码的指令相差4字节)所以需要减4:参考流水线结构

    -----------------------------------------------------------------

    具体的操作代码:

    IRQ_handle:
        LDR SP,=0XD0037180//(指明栈irq栈区的起始地址)memory mmap
        SUB LR,LR,#4
        STMFD SP!,{R0-R12,LR}  //防止bl 执行后pc指针被覆盖,将lr放到栈中
        BL 真正的中断处理函数,自动返回,恢复pc
        LDMFD SP!,{R0-R12,PC}^//加了‘^’表示自动恢复CPSR;
        

    上图为中断向量表:程序员使用的主要是IRQ和FIQ;

    fiq快速响应的原因是:

    1、优先级比IRQ更高

    2、拥有比IRQ更多的独立寄存器

  • 相关阅读:
    3、使用DB first创建上下文并生成数据库表
    2、新建解决方案,新建项目,配置引用
    1、Visual Studio 2019下载及安装
    7、权限管理数据库
    6、添加Common类
    四年下学期古诗
    三年级必背古诗
    用PHPCMS V9完成wap网站四步法
    Thinkphp笔记---查询方式
    ThinkPHP快捷查询
  • 原文地址:https://www.cnblogs.com/defen/p/5384094.html
Copyright © 2020-2023  润新知