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

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

3天内不再提示

ARM中断体系和ZYNQ中断体系详解

电子设计 来源:FPGA技术联盟 作者:FPGA技术联盟 2020-11-27 11:01 次阅读

01、ARM中断体系

① ARM体系中,在存储地址的低位,固化了一个32字节的硬件中断向量表。

② 异常中断发生时,程序计数器PC所指的位置不同,异常中断就不同。中断结束后,中断不同,返回地址也不同。但是,对于系统复位中断,不需要返回,因为整个应用系统就是从复位中断中开始的。

数据访问终止:数据访问的地址不存在,或者当前地址不允许访问。

快速中断请求:外部引脚的快速中断请求,比外部中断请求等级高,但是一般外设的中断请求使用外部中断请求。

指令预取终止:预取指令的地址不存在,或者当前地址不允许访问。

未定义的指令:ARM或协处理器认为当前指令未定义。

ARM中断流程:

首先在主程序中发生IRQ中断请求,程序跳到中断向量表找IRQ中断对应的解析程序地址,然后再跳到中断解析程序,进而执行中断程序。

02、ZYNQ中断体系

ZYNQ包括三种中断:私有中断,软件中断和共享中断。

1)私有中断:每个CPU连接5个私有中断,中断ID27—31。

2)软件中断:16个,中断号:0—15。通过CPU私有总线向ICDSGIR寄存器写中断号,并且制定CPU。

3)共享中断:接收来自如GPIO、DMA定时器等模块的中断信号。中断号32-95。

它们之间的关系:

03、PL端的一个按键,点亮PS端LED

首先还是硬件配置,加入ZYNQ的软核,配置一下DDRUART

然后,因为要用到PL端的按键,所以要建立PL与PS之间的联系,通过EMIO或者AXI总线,EMIO能不能中断还没有研究,这里用的AXI。

① 加AXI_GPIO IP核,设置GPIO端口中断使能,GPIO宽度为1(只用了一个按键),设置方向为全输入。

(如果想控制PL端LED,就再加一个AXI_GPIO核),设置输出就可以了。

② 打开中断

IRQ_F2P是PL与PS的共享中断,下面的是两个ARM核的快速中断和外部中断(都来自PL属于CPU私有中断),私有中断如何点亮LED还没有测试。

③ PS端LED,设置I/O外设,GPIO里勾选MIO,点亮的LED管脚为MIO0。

然后自动连接,(手动连接AXI_GPIO ip2intc_irpt),绑定gpio_rtl的管脚为T17(按键),3.3V,然后输出,生成HDL Wrapper,导出硬件(包含比特流文件),载入SDK。

04、各种初始化:

① 初始化按键:

设置单通道,方向为输入。

② 初始化LED:

设置MIO0为输出,使能引脚(不使能不能点亮,与AXI接PL端LED有点区别,后者不需要使能)。然后引脚写高电平,使LED初始状态为灭。

③ 初始化中断:

中断初始化写成一个函数,传入参数是中断的ID,另外以上各种初始化,需要实例化XGpio、XGpioPs、XScuGic类型的变量,直接定义为全局变量,这样会比较方便。

④中断函数:

A. 函数首先是中断初始化,与先前的按键初始化与LED初始化差不多。

B. 接着是定义了一个InterruptSystemSetup函数,定义为:

C.连接,我理解的就是,将这个中断与按键的行为,连接起来。XScuGic_Connect(&gpio_intr, INTR_GPIO, (Xil_ExceptionHandler)BTN_Intr_Handler, (void*)&key),这个函数中参数的意思,第一个参数就是实例化的XScuGic对象了,第二个参数,是对应的XPAR_FABRIC_AXI_GPIO_0_IP2INTC_IRPT_INTR,也就是定义的那个中断IRQ_F2P,定义在xparameters.h里。

定义为61,这也就是IRQ_F2P的中断号为61-68和84-91,共同组成了IRQ_F2P[15:0]。

第三个参数,调用的中断处理函数,发生的中断操作写在里面。第四个参数,连接的对象,这里是按键,即将中断行为与按键行为连接起来。

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

    关注

    134

    文章

    9115

    浏览量

    368170
  • 计数器
    +关注

    关注

    32

    文章

    2258

    浏览量

    94787
收藏 人收藏

    评论

    相关推荐

    单片机有哪些中断类型

    单片机中断是指在单片机执行程序的过程中,当外部设备或内部条件发生某个特定事件时,能够暂停当前正在执行的程序,转而去执行一个特定的服务程序(称为中断服务程序或中断处理程序),处理该事件,之后再返回到被
    的头像 发表于 10-17 18:12 844次阅读

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

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

    freertos中断优先级在哪设置

    FreeRTOS是一个流行的实时操作系统,它广泛应用于嵌入式系统开发。在FreeRTOS中,中断优先级是一个重要的概念,因为它决定了中断处理的顺序和响应时间。 1. 理解中断优先级 在讨论如何设置
    的头像 发表于 09-02 14:17 725次阅读

    stm32怎样触发软件中断

    了解STM32中断系统 STM32微控制器具有丰富的中断系统,包括NVIC(嵌套向量中断控制器)和SYSTICK定时器。NVIC可以处理多达240个中断源,包括外部
    的头像 发表于 09-02 09:32 962次阅读

    工业互联网三大体系是什么?

    工业互联网三大体系分别是网络体系、平台体系和安全体系。 1. 网络体系:在工业互联网中,网络体系
    的头像 发表于 05-25 14:03 1114次阅读

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

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

    嵌入式环境的中断调试步骤操作

    确保问题中断的优先级设置正确。它应该高于正常工作的中断的优先级,但低于任何应该优先于它的中断的优先级。
    发表于 04-09 10:41 384次阅读

    嵌入式C语言中断调试步骤

    确保问题中断的优先级设置正确。它应该高于正常工作的中断的优先级,但低于任何应该优先于它的中断的优先级。
    的头像 发表于 03-26 12:20 717次阅读

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

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

    单片机中断功能及其应用

    单片机中断功能及其应用  单片机中断是指在程序执行过程中,根据特定的条件或事件自动暂时中断当前程序的执行,转而执行特定的中断服务程序。中断
    的头像 发表于 01-30 14:45 5667次阅读

    什么是中断向量偏移,为什么要做中断向量偏移?

    当MCU中有两段或以上程序的时候(第一个程序为用户BootLoader程序,其他的为APP程序,这个在前期视频《什么是ISP?什么是IAP》中有讲过),APP程序中都需要做中断向量偏移,那么什么是中断向量偏移,为什么要做中断向量
    的头像 发表于 01-30 09:47 1859次阅读
    什么是<b class='flag-5'>中断</b>向量偏移,为什么要做<b class='flag-5'>中断</b>向量偏移?

    GD32 MCU是如何进入中断函数的

    用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入
    的头像 发表于 01-30 09:45 1130次阅读
    GD32 MCU是如何进入<b class='flag-5'>中断</b>函数的

    外部中断的工作原理 外部中断方式有哪些 为什么要使用外部中断

    外部中断的工作原理是单片机响应外部事件的一种机制** **。
    的头像 发表于 01-28 17:37 3814次阅读

    单片机外部中断和定时器中断的区别和用法

    单片机外部中断和定时器中断在触发来源、应用场景以及功能特点上存在明显差异** **。
    的头像 发表于 01-28 17:35 3229次阅读

    聊聊KUKA机器人高级编程:中断

    最大数量/BRAKE最多可以同时声明64个中断中断的声明可以随时被新的声明覆盖。可以选择使用BRAKE声明中断。BRAKE语句在检测到声明的中断时立即执行。这意味着当进入
    发表于 01-25 15:16 6833次阅读
    聊聊KUKA机器人高级编程:<b class='flag-5'>中断</b>