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

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

3天内不再提示

ARM中的异常中断是如何实现进入中断程序的?如何进入呢?

工程师邓生 来源:未知 作者:刘芹 2023-10-19 16:36 次阅读

ARM中的异常中断是如何实现进入中断程序的?如何进入呢?

在计算机系统中,异常和中断是两个常见的概念。 在ARM中,异常和中断的主要目的是帮助处理器响应与系统操作相关的事件。 由于处理器必须同时执行多个任务,例如输入/输出(I / O)操作或计时器计数,因此异常和中断是必不可少的。

ARM异常和中断是在ARM内核中实现的,即在芯片上的处理器内部。当处理器执行特定的任务时,根据相应的事件,就会发生异常或中断。

ARM的异常和中断模块由多个不同的组件组成。 这些组件包括处理器模式,管理寄存器和中断控制器等。 然后,处理器根据模式来响应异常和中断请求,并执行特定的处理过程。

在ARM体系结构中,处理器模式是ARM处理器的一种状态。 处理器模式有七种不同的类型:用户模式,FIQ(快速中断请求)模式,IRQ(普通中断请求)模式,监管模式,异常处理程序模式,中止处理程序模式和无效模式。 每个模式都定义了处理器在执行任务时可以访问的寄存器和内存空间等。其中,异常处理程序模式是由ARM处理器用来响应异常事件和中断请求的模式。

当ARM处理器通过异常或中断请求进入异常处理程序模式时,它会从当前用户模式切换到异常处理模式。处理器会将当前CPU状态(如程序计数器,标志寄存器等)保存到内部寄存器中,然后加载处理器模式下的堆栈指针。 接下来,处理器将跳转到指定的异常处理程序来处理异常或中断请求。

在ARM中,中断被分为两类:快速中断请求(FIQ)和普通中断请求(IRQ)。 FIQ是ARM中处理时间敏感任务的快速中断码,可以提供更高的抢占优先级和更快的响应时间。所以,如果有FIQ请求,处理器会首先进入FIQ模式处理中断请求。IRQ被认为是标准中断请求,如果没有FIQ请求,当出现IRQ请求时,ARM处理器便会进入中断模式。

在ARM中,中断请求是通过中断控制器发送的。中断控制器位于ARM处理器芯片中,可以将中断请求通过对应的GPIO端口发送到ARM处理器中。 中断控制器还会将相应的中断优先级和中断信息发送到ARM处理器,以便ARM处理器能够进入恰当的模式处理中断请求。

总结一下,ARM的异常和中断机制提供了一种响应系统事件的方式。从硬件角度来看,ARM处理器通过处理器模式,管理寄存器和中断控制器等多个组件来处理异常和中断请求。当ARM处理器进入异常处理程序模式时,它从当前模式切换到处理器模式,并依据中断类型切换到FIQ模式或IRQ模式。此过程中,中断控制器会发送中断请求并提供相应的优先级和信息。所有这些组成了ARM中异常和中断机制的核心。

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

    关注

    134

    文章

    9164

    浏览量

    368885
  • 寄存器
    +关注

    关注

    31

    文章

    5363

    浏览量

    121036
  • 异常中断
    +关注

    关注

    0

    文章

    9

    浏览量

    1240
收藏 人收藏

    评论

    相关推荐

    ARM处理器的异常中断响应过程

    ARM处理器的异常中断响应是嵌入式系统设计中一个至关重要的环节,它确保了系统在面对内部或外部事件时能够稳定、可靠地运行。
    的头像 发表于 09-10 11:18 1131次阅读

    TC397 UART接收中断只会进入两次,为什么?

    world发送两次hello world,这一串数据已经超出2字节,但是中断进入两次。数据却已经全部写入到了FIFO这是为什么
    发表于 06-04 09:26

    请问Arduino Due是如何进入串口中断

    今天在移植Arduino的时候,一直不明白Due是如何进入串口中断的。Due是在串口中断接收字符,并将其存储。有下面的代码: void USARTClass::IrqHandler(
    发表于 05-17 07:16

    STM8进入halt模式后由EXTI中断唤醒,程序无法继续正常运行下去的原因?

    大家好,我现在有一个问题请教: 1. 我的STM8S103K3在执行完相关任务后进入halt模式,在进入之前我设置了几个EXTI中断 2. 中断服务函数
    发表于 05-15 06:40

    stm32带freertos如何进入芯片的sleep模式?

    大家好,我在使用stm32F105时,不使用freertos时,芯片可以正常进入退出sleep模式。但是加入freertos以后,我将一样的代码,放在默认任务,却进入sleep以后,直接又退出
    发表于 05-10 07:07

    USB中断setup,in和out阶段到底什么时候进入中断

    中断 还是在发给host数据data0之后,或者是ACK之后? 第三个问题:同理out处理时什么时候进入中断,是收到out packet之后 还是设备收到data1数据之后,还是AC
    发表于 04-29 08:37

    使用GUI_EndDialog(hWin, 0); 这个函数,程序进入硬件中断错误的原因?

    请教下,我使用 GUI_EndDialog(hWin, 0); 这个函数,程序进入 硬件中断错误,是怎么个情况啊 ??
    发表于 04-29 06:32

    STM32F070F6P6进入不了程序,硬件异常中断也没进入的原因?

    程序一直在那一直调,连启动时钟的函数都没进入,谁知道什么原因
    发表于 04-18 06:31

    中断服务程序相关SR的中断标志到底应该是服务前先清除还是服务后清除

    使用遇到的问题是,中断服务程序相关SR的中断标志到底应该是服务前先清除还是服务后清除?有些
    发表于 04-16 06:21

    STM32程序运行时会莫名的进入HardFault硬件中断,为什么?

    程序运行时会莫名的进入HardFault硬件中断,尝试了一周的时间,试过以下方法始终不能找到问题出在哪里,希望有人能指导下: 1.换硬件,依然出现,可以排除硬件自身原因; 2.在代码
    发表于 04-10 06:29

    STM32F407IG中断标志位为0,却能进入中断,为什么?

    1 是应用需求。 但是在测试中发现,偶然出现 ,进入中断,但是 if (TIM1->SR) 无法满足的情况,其他定时器也会出现这种情况 程序没有在其他地方清除SR voi
    发表于 04-09 08:10

    CPU中断程序:从硬件看什么是中断

    CPU响应中断转去执行中断服务程序前,需要把被中断程序的现场信息保存起来,以便执行完中断服务
    发表于 03-26 11:36 4165次阅读
    CPU<b class='flag-5'>中断</b><b class='flag-5'>程序</b>:从硬件看什么是<b class='flag-5'>中断</b>?

    SPI_Receive_IT接收中断通过hspi-&gt;RxISR(hspi)来实现程序当中无法通过中断函数进入自己重定义怎么解决?

    G0系列当中例如SPI_Receive_IT接收中断实现方式为通过hspi->RxISR(hspi)来实现,但是本人程序当中无法通过中断
    发表于 03-19 08:02

    stm32进入stop模式后,为什么uart还能触发中断并唤醒stm32

    我的理解是stm32进入stop模式后,外设时钟都停掉了,比如uart的时钟,也就是说uart无法收数据了,为什么uart还能触发中断并唤醒stm32
    发表于 03-15 08:16

    stm32上电启动异常进入硬件中断是什么原因?

    stm32g031k8t6 上电前将RX引脚电平拉到0.7v,会导致stm32上电,代码运行到初始化串口DMA接收后,立即发送连续的字符串,会进入到硬件中断,是什么原因?
    发表于 03-13 06:48