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

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

3天内不再提示

arm中断是怎么实现的

工程师邓生 来源:未知 作者:刘芹 2023-09-05 16:22 次阅读

arm中断是怎么实现的

首先,了解什么是中断。中断是指在CPU执行某个程序时,突然发生的一些事件需要CPU立即停止正在执行的程序并去执行该事件相应的程序,这个过程叫做中断。中断是系统中一个重要的机制,能够提高系统的实时性和可靠性。在ARM处理器中,中断的实现主要涉及到下面的几点。

一、中断控制器

ARM系统中,中断控制器是实现中断的重要组成部分。中断控制器的主要作用是监控外部硬件中断请求并向CPU发出中断请求信号,同时还需要根据优先级为CPU分配中断请求。

ARM中断控制器有两种类型:简单中断控制器(Simple Interrupt Controller,简称SIC)和通用中断控制器(Generic Interrupt Controller,简称GIC)。SIC适用于较为简单的系统,而GIC则适用于较为复杂的系统,支持更多的中断请求。具体地,GIC一般包含一个中央控制器,多个本地控制器和一个分配器。中央控制器负责处理高优先级中断故障,本地控制器负责处理本地外设的中断,分配器负责将中断请求分配给本地控制器。

二、中断向量表

在ARM中,中断向量表是用来存储中断服务例程(Interrupt Service Routine,简称ISR)的一组内存区域。中断向量表中有多个向量表项,每个向量表项对应一种中断类型,其中存储着相应的中断服务例程的入口地址。

中断服务例程是中断处理程序,用于响应中断事件。当中断请求发生时,中断控制器会向CPU发送中断请求,此时CPU读取中断向量表中相应的向量表项得到ISR的入口地址,然后跳转到该地址执行ISR。ISR会负责处理中断事件,并将处理结果返回。

三、中断的优先级

在ARM中,设备的中断请求有不同的优先级,优先级越高的请求将先被响应。中断优先级是在编译链接时静态确定的,每个设备都有一个预设的中断请求优先级,这些优先级由系统设计人员在初始化系统时进行设置。

在中断处理时,如果有多个中断同时发生,CPU会先执行优先级最高的中断,而其他中断则被挂起。一旦执行完毕,CPU会返回到挂起的中断程序中继续执行,如此循环直至所有中断都被处理完毕。

四、中断处理流程

当外部设备发生中断请求时,中断控制器会对请求进行处理:

1、中断请求的产生:外部设备发生某种事件的时候,向外部中断控制器发出中断请求。

2、中断控制器的处理:中断控制器接收到请求后,通过优先级算法,确定优先级最高的中断,然后发送一个中断请求到CPU。

3、中断向量表的查询:CPU响应中断请求后,根据请求所对应的中断类型,查询中断向量表得到对应的ISR入口地址。

4、执行ISR:CPU通过跳转到ISR入口地址开始执行ISR代码,中断服务例程开始处理中断事件。

5、保存现场:ISR代码中,对于需要暂停程序的部分,需要保存当前程序现场以保证中断处理结束后能正确恢复执行的指令。

6、处理中断:在ISR中,处理中断的对应逻辑,确定该中断事件对应的操作,并执行相应的操作完成该中断的处理。

7、恢复现场:中断处理结束后,ISR需要恢复保存的现场,以便中断结束后程序能继续执行。

通过以上的流程,ARM的中断处理功能才可以有效地响应外部设备中断请求,并完成对应的中断处理工作,起到保障系统实时性和可靠性的作用。

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

    关注

    134

    文章

    9164

    浏览量

    368865
  • 中断控制器
    +关注

    关注

    0

    文章

    59

    浏览量

    9480
收藏 人收藏

    评论

    相关推荐

    串口中断是内部中断还是外部中断,串口中断是怎么触发的

    串口中断通常被视为外部中断。虽然串口控制器(如USART、UART等)可能集成在微控制器或处理器的内部,但从中断的角度来看,串口中断是由处理器外部的通信事件触发的。这些事件包括数据的接
    的头像 发表于 01-29 15:03 49次阅读

    串口中断需要清除标志位吗,串口中断标志位会自动清除吗

    在电子通信领域,串口中断作为一种重要的通信机制,广泛应用于各种嵌入式系统和计算机设备中。串口中断标志位的管理,尤其是是否需要手动清除以及是否会自动清除,是理解和实现串口通信的关键环节。
    的头像 发表于 01-29 14:59 71次阅读

    EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统

    电子发烧友网站提供《EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统.pdf》资料免费下载
    发表于 01-15 16:06 0次下载
    EE-188:使用C语言在ADSP-219x DSP上<b class='flag-5'>实现</b><b class='flag-5'>中断</b>驱动系统

    AN-1420:利用数字锁相环(DPLL)实现相位增建和无中断切换

    电子发烧友网站提供《AN-1420:利用数字锁相环(DPLL)实现相位增建和无中断切换.pdf》资料免费下载
    发表于 01-13 14:07 0次下载
    AN-1420:利用数字锁相环(DPLL)<b class='flag-5'>实现</b>相位增建和无<b class='flag-5'>中断</b>切换

    利用Arm Kleidi技术实现PyTorch优化

    PyTorch 是一个广泛应用的开源机器学习 (ML) 库。近年来,Arm 与合作伙伴通力协作,持续改进 PyTorch 的推理性能。本文将详细介绍如何利用 Arm Kleidi 技术提升 Arm
    的头像 发表于 12-23 09:19 299次阅读
    利用<b class='flag-5'>Arm</b> Kleidi技术<b class='flag-5'>实现</b>PyTorch优化

    ARM处理器的工作模式和特点

    ARM处理器具有多种工作模式,这些模式根据处理器执行的任务和当前的状态进行划分。常见的ARM处理器工作模式包括用户模式(User Mode)、快速中断模式(Fast Interrupt
    的头像 发表于 09-10 11:22 1398次阅读

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

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

    stm32怎样触发软件中断

    其中实现所需的功能。 触发软件中断 在STM32中,您可以使用NVIC_SetPendingIRQ()函数来触发软件
    的头像 发表于 09-02 09:32 1039次阅读

    如何使用带中断的pwm来实现LED呼吸?

    我想使用带中断的 pwm 来实现 LED 呼吸,即 LED 的强度应该增加或减少。
    发表于 06-04 07:21

    TC375中断嵌套如何实现

    这里描述说实现中断嵌套需要配置中断优先级组,但是我没看到有介绍分组的文档,请问中断嵌套要如和实现谢谢?
    发表于 05-27 07:30

    RISC-V的中断处理 中断操作三个步骤

    中断操作三个步骤: 1、中断初始化 2、trap处理 3、用户中断处理
    的头像 发表于 05-20 16:38 1354次阅读

    stm32上的中断挂起和屏蔽与ARM内核中的挂起屏蔽是相同的吗?

    请问前辈,stm32上的中断挂起和屏蔽 与 ARM内核中的挂起屏蔽是相同的吗,还是只是stm32自己预处理的一步。
    发表于 04-15 08:23

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

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

    如何实现SysTick中断的嵌套自身?

    中断直接退出到我想要执行的调度函数RTTaskSchedule ,执行完调度函数RTTaskSchedule 后再执行函数IrqReturn返回到main中。但是这段代码并不能实现我想要的功能,被嵌套的调度函数RTTaskSchedule 不能正常返回了。
    发表于 03-25 06:20

    Arm 更新 Neoverse 产品路线图,实现基于 Arm 平台的人工智能基础设施

    新闻重点: Arm 宣布推出两款基于全新第三代 Neoverse IP 构建的新的 Arm Neoverse 计算子系统 Arm Neoverse CSS V3 是高性能 V 系列产品组合中的首款
    发表于 02-22 11:41 431次阅读