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

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

3天内不再提示

ARM处理器中断向量表

麦辣鸡腿堡 来源:TrustZone 作者:TrustZone 2023-10-30 17:19 次阅读

ARM处理器中,当一个中断信号被触发时,中断控制器会发出一个中断请求,并将该请求传递给CPU

CPU接收到中断请求后,会根据中断号在中断向量表中查找对应的中断服务程序入口地址。

中断向量表是一个预定义的表,其中每个条目都包含一个指向特定中断服务程序的入口地址。当CPU接收到中断请求时,它会根据中断号在表中查找对应的条目,获取对应的入口地址,并跳转到该地址执行相应的中断服务程序。

在这个过程中,程序员可以通过设置中断向量表中的条目来定义不同中断源的中断服务程序入口地址。

这样可以实现自定义的中断处理逻辑,根据不同的中断事件执行相应的操作。

需要注意的是,在ARM处理器中,不同的工作模式(例如User、FIQ、IRQ、SVC等)使用不同的寄存器集和特权级别。

当中断发生时,CPU会根据当前的工作模式和中断向量表中的条目,确定要跳转到的中断服务程序的入口地址。然后它会将CPU的状态保存到相应的栈中,并跳转到该地址执行中断服务程序。

在ARM处理器中,中断向量表是一个预定义的表,它通常在系统启动时由引导加载器(Bootloader)或操作系统进行定义和初始化。

引导加载器在系统启动时负责加载和启动操作系统的内核。在这个过程中,它会读取存储器中的中断向量表数据,并将其复制到指定的内存地址。

这个地址通常是在系统配置时确定的,以确保中断向量表可以在正确的位置被CPU访问。操作系统在启动后也会接管中断向量表的管理和配置。它会根据系统中断控制器和其他硬件设备的配置,将中断向量表中的条目映射到相应的中断服务程序入口地址。

这样,当中断发生时,CPU可以根据中断号在中断向量表中查找对应的条目,并跳转到对应的地址执行相应的中断服务程序。

需要注意的是,中断向量表的定义方式和具体实现可能会因不同的ARM处理器架构和系统设计而有所不同。

因此,具体的定义位置和方式可能会因硬件平台和操作系统而有所差异。

Raw Interrupt和Masked Interrupt

Raw Interrupt和Masked Interrupt是两种中断类型,它们在ARM处理器中被用来处理中断。

Raw Interrupt(原始中断)是指外部中断源的状态,无论ARM芯片是否屏蔽该中断源,这个中断源的中断状态都会被寄存器存储,从而可以通过相应的函数读取。

Masked Interrupt(屏蔽中断)是指是否屏蔽的状态。在ARM处理器中,每个中断源都有一个与之对应的屏蔽触发器,如果该中断源被屏蔽(即MASK=1),那么即使INTR被置为1,CPU也不会响应这个中断请求。换句话说,屏蔽触发器可以阻止特定的中断源向CPU发送中断请求。所有的屏蔽触发器组合在一起,构成了屏蔽寄存器。

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

    关注

    68

    文章

    18288

    浏览量

    222167
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8653

    浏览量

    361825
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41026
  • 架构
    +关注

    关注

    1

    文章

    484

    浏览量

    25200
收藏 人收藏

    评论

    相关推荐

    ARM中断向量表问题

    请问图中代码时ARM中断向量表的实现吗?如果是,为何中断服务程序中最后都有指令B .它的作用是什么,看不懂它为何要跳转到当前地址,这样不是死循环了吗下面这张图是我找了STM32的启动代码,也是有B .
    发表于 02-20 13:55

    MM32 IAP中断向量表重定义

    = FLASH_BASE | VECT_TAB_OFFSET;该寄存的值来实现中断向量表的重定义。但用户反馈在MM32L0xx系列以Cortex-M0为内核的单片机中却怎么也找不到这个设置中断向量表的寄存
    发表于 02-01 17:22

    请问为什么要对STM32的中断向量表进行重映射?

    网上看了很多关于STM32的中断向量表的帖子,估计也就那几个帖子抄来抄去的。但是始终有个问题:为什么要对中断向量表进行重新映射?​我看了宋岩的COREM3权威指南上讲“然而,为了动态重分发中断
    发表于 09-30 09:54

    一种基于ARM嵌入式系统的中断向量表的动态配置方法设计

    编代码编程的程序员尤其如此。当需要在程序运行过程中动态修改中断向量的程序时会感到更为不便,不得不增加很多分支处理指令才能实现。为此本文提出一种简便高效的配置方法,实现了ROM固化程序在运行时动态配置ARM嵌入式系统
    发表于 06-18 07:20

    怎么理解中断向量

    256个),它的地址范围是0~3FFH在arm处理器中断向量的大小为4个字节。在中断向量里面不是存储的中断服务程序的入口地址,而是跳转到
    发表于 08-27 10:24

    中断号定义与中断向量表

    1、中断号定义在stm32f10x.h中定义枚举类型IRQn中,定义了各个中断中断号。2、中断向量表嵌套向量
    发表于 08-13 06:27

    智能设置中断向量表的方法

    来源:公众号【鱼鹰谈单片机】作者:鱼鹰OspreyID :emOsprey在有 boot 的情况下,一般需要重新设置 app 的中断向量表,使得中断向量表从 boot 切换到 APP ...
    发表于 01-21 07:51

    Cortex-M中断向量表对齐原则

    关注+星标公众号,不错过精彩内容来源| 痞子衡嵌入式一、Cortex-M中断向量表对齐原则中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函
    发表于 01-25 07:10

    设置中断向量表的过程

    在有 boot 的情况下,一般需要重新设置 app 的中断向量表,使得中断向量表从 boot 切换到 APP 部分,大部分的工程师会使用类似下面这种方式设置中断向量表的地址 0x0800 ...
    发表于 02-14 06:34

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

    现场如果CPU正在处理别的中断,当前中断不能得到及时处理,0.5秒后按键抬起,中断消失,解决办法:CPU通过
    发表于 05-05 10:16

    ARM中断向量两种设置方法

    在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。
    发表于 01-12 19:06 4512次阅读

    ARM中断向量表与响应流程的系列资料详细说明

    本文档的主要内容详细介绍的是ARM中断向量表与响应流程的系列资料详细说明包括了:一首先中断向量表定义在哪里?如何加载?,二 中断向量表中断
    发表于 07-05 17:41 2次下载
    <b class='flag-5'>ARM</b><b class='flag-5'>中断向量表</b>与响应流程的系列资料详细说明

    一文了解Cortex-M中断向量表对齐原则

    来源 | 痞子衡嵌入式 一、Cortex-M中断向量表对齐原则   中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函数地址要占 4 个字节
    的头像 发表于 10-19 11:06 4135次阅读
    一文了解Cortex-M<b class='flag-5'>中断向量表</b>对齐原则

    一文了解Cortex-M中断向量表对齐原则

    关注+星标公众号,不错过精彩内容来源| 痞子衡嵌入式一、Cortex-M中断向量表对齐原则中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函
    发表于 12-01 12:21 9次下载
    一文了解Cortex-M<b class='flag-5'>中断向量表</b>对齐原则

    如何智能设置中断向量表?| 简单实用技能

    在有 boot 的情况下,一般需要重新设置 app 的中断向量表,使得中断向量表从 boot 切换到 APP 部分,大部分的工程师会使用类似下面这种方式设置中断向量表的地址 0x0800 ...
    发表于 12-09 10:36 12次下载
    如何智能设置<b class='flag-5'>中断向量表</b>?| 简单实用技能