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

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

3天内不再提示

高端芯片中中断系统的基本操作方法

嵌入式开发爱好者 来源:嵌入式开发爱好者 作者:嵌入式开发爱好者 2022-12-06 09:34 次阅读

大家好,我是ST。

今天主要和大家聊一聊,如何使用高端芯片的中断系统的方法。

第一:中断的基本简介

中断系统是一个处理器重要的组成部分,中断系统极大的提高了CPU的中断执行效率。芯片本身也有中断向量表,中断向量表也是在代码的最前面。A7内核有8个异常中断,这8个异常中断的中断向量表如图:

1f87d83a-74b5-11ed-8abf-dac502259ad0.png

中断向量表中都是中断服务函数的入口地址,因此芯片有什么中断都是可以从中断向量表中看出来的。难道A7系列只有7个中断吗?显然是不可能的。A内核的CPU所有的外部中断都属于这个IRQ中断,当任意一个外部中断发生的时候都触发这个IRQ中断。在IRQ中断服务函数里面就可以读取指定的寄存器来判断发生的具体是什么中断,进而根据具体的中断做出相应的处理。

1faf2322-74b5-11ed-8abf-dac502259ad0.png

在左侧都是Software0_IRQn~PMU_IRQ2_IRQ都是外设IRQ中断,中断任意一个发生的时候IRQ中断都会被触发,需要在IRQ中断服务函数中判断究竟是哪个中断发生了,然后再做出具体的处理。

常用的复位中断和IRQ中断,需要编写这两个中断的中断服务函数,稍后会讲解如何编写对应的中断服务函数。首先要来编写中断向量表:

.global _start
_start:
ldrpc,=Reset_Handler/*复位中断
ldr pc, =Undefined_Handler /* 未定义指令中断 */
ldrpc,=SVC_Handler/*SVC(Supervisor)中断*/
ldrpc,=PrefAbort_Handler/*预取终止中断*/
ldrpc,=DataAbort_Handler/*数据终止中断*/
ldrpc,=NotUsed_Handler/*未使用中断*/
ldrpc,=IRQ_Handler/*IRQ中断*/
ldrpc,=FIQ_Handler/*FIQ(快速中断)未定义中断*/
/* 复位中断 */ 
Reset_Handler:
/*复位中断具体处理过程*/
/*未定义中断*/
Undefined_Handler:
ldrr0,=Undefined_Handler
bxr0
/*SVC中断*/
SVC_Handler:
ldrr0,=SVC_Handler
bxr0
/*预取终止中断*/
PrefAbort_Handler:
ldrr0,=PrefAbort_Handler
bxr0
/*数据终止中断*/
DataAbort_Handler:
ldrr0,=DataAbort_Handler
bxr0
/*未使用的中断*/
NotUsed_Handler:


ldrr0,=NotUsed_Handler
bxr0
/* IRQ 中断!重点!!!!!*/
IRQ_Handler:
/*复位中断具体处理过程*/

/*FIQ中断*/
FIQ_Handler:
ldrr0,=FIQ_Handler
bxr0

中断服务函数都是用汇编编写的,我们实际需要编写的只有复位中断服务函数 Reset_Handler 和 IRQ 中断服务函数 IRQ_Handler,其它的中断没有用到,所以都是死循环。

第二:GIC控制器介绍

GIC是ARM公司给Cortex-A内核提供的一个中断控制器,类似Cortex-M内核中的NVIC。目前有4个版本:V1~V4,V1是最老的版本,已经废弃。GIC V2 是给 ARMv7-A 架构使用的,比如 Cortex-A7、Cortex-A9、Cortex-A15 等,V3 和 V4 是给 ARMv8-A/R 架构使用的,也就是 64 位芯片使用的。GIC V2 最多支持 8 个核。ARM 会根据 GIC 版本的不同研发出不同的 IP 核,那些半导体厂商直接购买对应的 IP 核即可,比如 ARM 针对 GIC V2 就开发出了 GIC400 这个中断控制器 IP 核。当 GIC 接收到外部中断信号以后就会报给 ARM 内核,但是ARM 内核只提供了四个信号给 GIC 来汇报中断情况:VFIQ、VIRQ、FIQ和IRQ,他们之间关系如图。

1fd28470-74b5-11ed-8abf-dac502259ad0.png

GIC接收众多的外部中断,然后对其处理,最终就只通过四个信号报给ARM内核,这四个信号的含义如下:

VFIQ:虚拟快速 FIQ。VIRQ:虚拟外部 IRQ。FIQ:快速中断 IRQ。IRQ:外部中断 IRQ。VFIQ 和 VIRQ 是针对虚拟化的,我们不讨论虚拟化,剩下的就是 FIQ 和 IRQ 了。

1fe70148-74b5-11ed-8abf-dac502259ad0.png

GIC将众多的中断源分为三类:

①、SPI(Shared Peripheral Interrupt),共享中断,顾名思义,所有 Core 共享的中断,这个是最常见的,那些外部中断都属于 SPI 中断(注意!不是 SPI 总线那个中断) 。比如按键中断、串口中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。

②、PPI(Private Peripheral Interrupt),私有中断,我们说了 GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断。

③、SGI(Software-generated Interrupt),软件中断,由软件触发引起的中断,通过向寄存器GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信

总结:高端芯片中断系统非常复杂,分析到这里还有很多细节没有分析,等到下回分解,感兴趣的可以研究一下。中断系统对后面灵活使用功能非常有用。

审核编辑:汤梓红

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

    关注

    68

    文章

    18302

    浏览量

    222319
  • 中断系统
    +关注

    关注

    1

    文章

    96

    浏览量

    60891
  • 高端芯片
    +关注

    关注

    0

    文章

    22

    浏览量

    3721

原文标题:高端芯片中中断系统的基本操作方法

文章出处:【微信号:嵌入式开发爱好者,微信公众号:嵌入式开发爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PROTEL铺铜操作方法

    本资料是关于PROTEL铺铜操作方法的介绍,有需要的可以下载看看
    发表于 07-26 23:17

    关于CX2016A的操作方法

    朋友们,请问有谁操作CX26016A这个芯片吗?它的操作方法是什么?还有那个遥控器又是怎么回事?谢谢大家了
    发表于 04-03 15:55

    systemd定时器的基本操作方法

    定时器任务作为嵌入式系统中常见的应用,systemd 定时器为用户提供更多的可配置功能以及优化选项。本文列举了 systemd 定时器基本操作方法,以及和cron 对比,帮助用户更快得使用。更多的技术细节和功能请参考下面的链接内容。
    发表于 01-01 07:37

    KEIL中的操作方法 精选资料下载

    操作方法如下。所有中断的Enable状态、Pending状态(已经发生但是还没有执行到中断)、Active状态(正在执行中断)、中断优先级
    发表于 08-13 09:30

    GPIO引脚操作方法概述

    :原则 - 不能影响到其他位三、STM32F103的GPIO操作方法1、看原理图确定引脚2、再看芯片手册(1)时钟使能(2)设置GPIOB0为GPIO、用作输出(3)怎么设置GPIOB0的输出电平?四、STM32F103的LED编程1、怎么访问寄存器?2、编写L
    发表于 01-20 07:38

    RK3288的GPIO操作方法是什么

    GPIO寄存器的操作方法有哪几种呢?RK3288的GPIO操作方法是什么?
    发表于 03-09 07:38

    PCB应力应变测试操作方法

    PCB应力应变测试操作方法
    发表于 06-12 22:22

    控温/恒温烙铁操作方法及使用说明

    控温/恒温烙铁操作方法及使用说明 一.
    发表于 04-18 00:17 8094次阅读

    EWB的基本操作方法

    EWB的基本操作方法 1.创建电路(1)元器件操作  元件选用:打开元件库栏,移动鼠标到需要的元件图形上,按下左键,将元件符
    发表于 03-05 16:10 2.6w次阅读
    EWB的基本<b class='flag-5'>操作方法</b>

    PROTEL铺铜操作方法

    PROTEL铺铜操作方法----铺铜实用技巧,有用的资料。
    发表于 03-11 15:33 0次下载

    独立按键操作方法

    慧净HL-1 配套C实验例程100例【实验11】独立按键操作方法),很好的C51学习资料程序。
    发表于 03-21 17:01 4次下载

    电子测力计的操作方法

    电子测力计正确操作方法
    发表于 04-17 15:57 2194次阅读

    光幕传感器工作原理及操作方法

    本文首先接介绍了光幕传感器工作原理,其次介绍了光幕传感器操作方法,最后介绍了光幕传感器操作方法
    发表于 10-12 08:51 9502次阅读

    AD18操作方法

    AD18操作方法
    发表于 03-28 15:04 0次下载

    万用表的操作方法和安全规程

    万用表的操作方法和安全规程  万用表是一种常用的电子测量仪器,具有测量电压、电流、电阻等功能。正确的操作方法和遵守安全规程对于使用万用表是非常重要的,下面将详细介绍万用表的操作方法和安全规程
    的头像 发表于 12-20 10:27 422次阅读