0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM的异常有哪些?ARM的异常向量表基地址

安芯教育科技 来源:Arm精选 2024-08-07 09:22 次阅读

以下文章来源于Arm精选 ,作者baron

1、51单片机的中断响应模型

我们先回忆一下在单片机上的中断的使用。

如下图所示,左边是51单片机的管脚图,P3.0-P3.5是单片机对应的中断管教,当该管教电平发生变化时,触发cpu异常。

当cpu来了一个异常时(中断),cpu跳转到异常向量地址处,执行handler函数,执行完毕后再回来

wKgZomayzHmAH8hSAAQGWrN7aLc934.jpg

那么cpu异常时,跳转的是哪个地址呢,其实这都是cpu出厂时设计好的。如下图所示,左边是cpu设计好的异常向量表基地址。右边是软件对异常的处理。

当来了一个uart中断时,cpu触发异常跳转到0023地址处,而该地址处执行LJMP UART0_ISR指令,跳转UART0_IAR函数去处理中断…

wKgZomayzJyAXhfoAAJARjrTErc972.png

2、ARM的异常有哪?

在ARMV7上,ARM异常有:RESET、swi、undef、prefetch、data abort、irq、fiq

其中RESET、swi是同步异常,其余是异步异常

在ARMV8上,ARM异常有serror、irq、fiq、Synchronous

其中Synchronous是同步异常,serror、irq、fiq是异步异常

解释一下什么是同步异常什么是异步异常?

同步异常:软件触发行为、知道什么时候发生 例如:svc、smc、hyc指令触发的都是同步异常

异步异常:软硬件行为,不知道什么时候发生,发生时间是随机的 例如:irq中断触发irq异常、fiq中断触发fiq异常…

当异常发生了,ARM CORE就要跳转到异常向量表地址处了。其实是跳转到:异常基地址 + 异常向量表偏移处

3、ARM的异常向量表基地址

(1)、ARMV7的异常向量表基地址

主要为VBAR、HVBAR、MVBAR三个寄存器,其中VBAR是banked.

wKgZomayzKeABzd7AAI6_qEN6Lo038.png

(2)、ARMV8的异常向量表基地址

主要为VBAR_EL1、VBAR_EL2、VBAR_EL3三个寄存器

wKgaomayzLCATJJJAAGXURhwgiM269.png

4、ARM的向量表offset

(1)、armv7的异常向量表的定义

其实在armv7上有多张异常向量表,下图分别列举出在secure、non-secure侧的两张异常向量表

wKgaomayzMGAcoFcAAI5QlmqZ6w171.png

wKgaomayzNCAHRJmAAITXrtxIRM582.png

(2)、在armv8上异常向量表

wKgaomayzOSAGbpeAAHzlPRBVHA101.png

实际上有四组表,每组表有四个异常入口,分别对应同步异常,IRQ,FIQ和出错异常。

如果发生异常并不会导致exception level切换,并且使用的栈指针是SP_EL0,那么使用第一组异常向量表。

如果发生异常并不会导致exception level切换,并且使用的栈指针是SP_EL1/2/3,那么使用第二组异常向量表。

如果发生异常会导致exception level切换,并且比目的exception level低一级的exception

level运行在AARCH64模式,那么使用第三组异常向量表。

如果发生异常会导致exception level切换,并且比目的exception level低一级的exception

level运行在AARCH32模式,那么使用第四组异常向量表。

另外我们还可以看到的一点是,每一个异常入口不再仅仅占用4bytes的空间,而是占用0x80 bytes空间,也就是说,每一个异常入口可以放置多条指令,而不仅仅是一条跳转指令

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6020

    文章

    44349

    浏览量

    628054
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8963

    浏览量

    364918
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10695

    浏览量

    209187
  • 中断
    +关注

    关注

    5

    文章

    889

    浏览量

    41217

原文标题:ARM Core如何响应中断的

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM9的高端异常向量基址硬件如何配置?

    请问: S3C2440可以通过设置/清除CP15协处理器的寄存器1的bit13来设置高端/低端异常向量地址,我从网上看到说也可以通过硬件电路控制,但是我一直没有查到硬件如何配置???我想了解下,谢谢谁来解惑,
    发表于 04-25 07:45

    ARM寄存器分析以及异常处理方法

    :(1)从spsr恢复cpsr(2)从lr恢复pc注意:这些操作必须在ARM状态执行TIPS:(1)异常向量表中除了FIQ中断都是4个字节,所以只够存放一段异常处理程序的代码的首地址
    发表于 09-10 07:00

    arm异常的处理方法

    。例如:如果是swi指令引起的异常ARM核最后就会修改pc的值为0x08。是不是异常向量表,一定要放在0x00000000或0xffff00000其始的地址呢?答案:不是,现在cor
    发表于 04-20 10:52

    资料下载:[architecture]-ARM Core如何响应中断的

    目录1、51单片机的中断响应模型2、ARM异常有哪?3、ARM异常向量表基地址4、ARM
    发表于 07-01 08:44

    浅析ARM异常分类与异常处理

    的。并且由于每一个内存都刚好是4字节  (即32位),刚好能放一条ARM指令。  上面所说的异常向量地址是从0x00开始的,实际上有些是从0xFFFF0000  开始的,例如ARM720T、A
    发表于 04-26 09:29

    ARM中断向量表异常处理过程解析

    中断向量表|异常处理过程中断随机产生之后,怎么跳转到中断的处理程序中去(中断向量表)SWI软中断指令:模拟CPU外面的某个硬件的管脚产生中断信号4. 软中断处理程序实例原作者:西二旗指南
    发表于 05-05 10:16

    一文弄懂ARM芯片的地址重映射

    异常向量表就存放在0x80000000起始的64个(其中有32个存放异常向量)物理存储单元中。但是ARM核发生异常(中断)后是从0x00000000~0x0000003F
    发表于 05-23 15:03

    ARM未定义指令异常和SVC异常是什么意思

    异常向量表的概述在上一章,我们学习了建立异常向量表,这里我们可以通过看arm的手册,我们每一种异常都对应一个工作模式,下面我就来尝试触发一下未定义指令
    发表于 05-26 16:17

    教你一种ARM处理异常中断的方法

    道理相同),由于异常模式不同以及ARM内核采用流水线技术,异常处理程序里要根据异常模式计算返回地址。跳入
    发表于 08-18 15:26

    异常向量表重映射

    异常向量表重映射 向量表异常产生时内核获取异常处理函数入口地址的一块连续内存,每一个异常
    发表于 03-26 09:34 20次下载

    如何理解ARM异常、中断和向量表

    以前,我一直很疑惑这个“ ARM异常 、 中断以 及他们的 向量表 ”是怎么回事,他们到底是怎么实现的,没有想到今天偶然看到(ARM System Developers Guide
    发表于 06-14 10:34 4171次阅读
    如何理解<b class='flag-5'>ARM</b><b class='flag-5'>异常</b>、中断和<b class='flag-5'>向量表</b>

    ARM体系结构所支持的异常有哪些含义和所支持的异常类型概述

    ARM 体系结构所支持的异常和具体含义如下:1、复位(优先级1) 当处理器的复位电平有效时,产生复位异常,程式跳转到复位异常处执行(异常向量
    发表于 02-26 10:32 3次下载
    <b class='flag-5'>ARM</b>体系结构所支持的<b class='flag-5'>异常有</b>哪些含义和所支持的<b class='flag-5'>异常</b>类型概述

    嵌入式系统原理及应用教程之ARM异常中断处理及编程的资料说明

    ARM体系结构中,存在7种异常处理。当异常发生时,处理器会把PC设置为一个特定的存储器地址。这一地址放在被称为
    发表于 03-20 10:25 7次下载
    嵌入式系统原理及应用教程之<b class='flag-5'>ARM</b><b class='flag-5'>异常</b>中断处理及编程的资料说明

    ARM体系结构所支持的异常和具体含义

    ARM处理器或协处理器遇见不能处理的指令时,产生为定义异常。可使用该异常机制进行软件仿真(异常向量:0x0000,0004);
    的头像 发表于 10-24 15:52 3830次阅读

    ARM interrupt-4

    文章目录前言overview控制器寄存器软件需要做的工作:中断控制器初始化外部中断前言  overviewSoC对中断的实现机制:异常向量表,此文讲过(1)异常向量表是CPU中某些特定地址的特定
    发表于 12-04 15:36 0次下载
    <b class='flag-5'>ARM</b> interrupt-4