ARM中断

1.STM32 中断系统回顾(Cortex-M)

以STM32为例介绍中断的一般概念:

  • 中断向量表:中断向量表是一系列中断服务程序入口地址组成的表。
    这些中断服务程序(函数)在中断向量表中的位置是由厂商定好的,当某个中断被触发以后就会自动跳转到中断向量表中对应的中断服务程序(函数)入口地址处。中断向量表在整个程序的最前面。
  • 中断向量表偏移: ARM 处理器都是从地址 0X00000000 开始运行的,通过中断向量表偏移就可以将中断向量表存放到任意地址。
  • 内嵌向量中断控制器(NVIC):Nested Vectored Interrupt Controller,中断系统管理机构。 Cortex-A 内核的中断管理机构不叫做NVIC,而是叫做 GIC, general interrupt controller。
  • 中断使能:要使用某个外设的中断,肯定要先使能这个外设的中断。
  • 中断服务函数:中断的目的就是为了执行中断服务函数,当中断发生以后中断服务函数就会被调用,期望中断处理的工作就可以放到中断服务函数中去完成。

2. Cortex-A7 中断系统简介

2.1 中断向量表

Cortex-A7 也有中断向量表,中断向量表也是在代码的最前面,如下。
在这里插入图片描述

  • 对于 Cortex-M 内核来说,中断向量表列举出了一款芯片所有的中断向量,包括芯片外设的所有中断。而Cortex-A 内核 CPU 的所有外部中断都属于 IQR 中断,当任意一个外部中断发生的时候都会触发 IRQ 中断。任意一个外设中断发生的时候 IRQ 中断都会被触发,所以我们需要在 IRQ 中断服务函数中先判断究竟是哪个中断发生,再做出具体的处理。
  • 当 GIC 接收到外部中断信号以后就会报给 ARM 内核,但是ARM 内核只提供了四个信号给 GIC 来汇报中断情况:VFIQ(虚拟快速 FIQ)、VIRQ(虚拟快速 IRQ)、FIQ(快速中断 IRQ)、IRQ(外部中断 IRQ)。
    在这里插入图片描述

2.2 GIC(general interrupt controller)

在这里插入图片描述
左侧部分就是中断源,中间部分就是 GIC 控制器,最右侧就是中断控制器向处理器内核发送中断信息。GIC 将众多的中断源分为分为三类:

  • 1.SPI(Shared Peripheral Interrupt),共享中断,这些中断所有的 Core 都可以处理。外部中断都属于 SPI 中断
  • 2.PPI(Private Peripheral Interrupt),私有中断,独有的中断肯定是要指定的核心处理。
  • 3.SGI(Software-generated Interrupt),软件中断,由软件触发引起的中断,系统会使用 SGI 中断来完成多核之间的通信。
    GIC 逻辑分块,如上图所示:
  • Distributor(分发器端): 负责处理各个中断事件的分发,即中断事件应该发送到哪个 CPU Interface 。分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到 CPU 接口端。
  • CPU Interface(CPU 接口端): 每个 CPU Core 都可以在 GIC 中找到一个与之对应的 CPU Interface。 CPU 接口端就是分发器和 CPU Core 之间的桥梁。

2.3 中断ID

  • 中断源有很多,为了区分这些不同的中断源肯定要给他们分配一个唯一 ID。
  • 每一个 CPU 最多支持 1020 个中断 ID,这 1020 个 ID 包含 PPI(ID0~ID15);SPI (ID16~ID31)和 SGI(ID32~ID1019)。至于具体某个 ID 对应哪个中断那就由厂商根定义了。比如 I.MX6U 的总共使用了128 个SPI 中断 ID,加上前面属于 PPI 和 SGI 的 32 个 ID, I.MX6U 的中断源共有 128+32=160个。

2.4中断使能

  • 中断使能包括两部分,一个是 IRQ 或者 FIQ 总中断使能,另一个就是 ID0~ID1019 这 1020个中断源的使能。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arist9612

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值