zoukankan      html  css  js  c++  java
  • 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更多的独立寄存器

  • 相关阅读:
    pandas 数据结构基础与转换
    Python 基础常用
    css 横向滚动条webkit-scrollbar
    hive mysql 初始化
    hive 的理解
    hive 踩坑
    hbase 调试各种报错
    hbase shell常用命令
    mysql 性能测试工具 mysqlslap
    【CDH学习之一】CDH简介
  • 原文地址:https://www.cnblogs.com/defen/p/5384094.html
Copyright © 2011-2022 走看看