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
    +关注

    关注

    131

    文章

    8025

    浏览量

    358775
  • 计数器
    +关注

    关注

    31

    文章

    1957

    浏览量

    91881
收藏 人收藏

    评论

    相关推荐

    向量中断能嵌套吗?请结合ARM体系进行阐述

    中断能嵌套吗?请结合ARM体系进行阐述各位大神,本人急用,求解答
    发表于 05-08 09:20

    ARM嵌入式学习:中断体系结构

    ARM嵌入式开发:中断体系结构1)中断简介中断,指计算机运行过程中,出现异常后,计算机停止当前工作保存当前状态,然后转向对这些异常的处理,在处理完成后再返回到停止时的状态,继续运行。2)
    发表于 08-27 09:31

    ARM Cortex-M3的中断体系

    中断一、ARM Cortex-M3 的中断体系二、代码思路函数接口1.为引脚选择使用哪个中断2.配置外部中断3.中断优先级配置4.获取外部中断状态5.清空外部中断标志位中断优先级1.概述2.抢占
    发表于 08-16 07:38

    ARM体系中对中断的处理资料分享

    中断处理器的介绍今天来看一下中断ARM体系中对中断的处理,直接进入正题。中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕
    发表于 04-13 18:09

    ARM内核的中断技术

    ARM7TDMI处理器为例,详细介绍 ARM内核的三种中断:常规中断、快中断和软件中断;结合应用,给出优化的中断处理程序的ARM指令代码,对电子设计人员有较大的参考价值。
    发表于 04-09 10:01 18次下载

    基于STR7 ARM微控制器的IRQ中断防御体系

    ARM7微控制器的IRQ中断向量地址动态分配在中断向量寄存器中的特点,提出将中断向量固化到ROM中的思路,构建IRQ中断防御体系,从而增强了系统的可靠性和安全性。
    发表于 12-11 15:51 26次下载
    基于STR7 <b>ARM</b>微控制器的IRQ<b>中断</b>防御<b>体系</b>

    ARM向量中断机制在uClinux下的设计

    ARM体系结构中,硬件产生的外部中断( IRQ) 具有单一的程序入口。为了识别中籽源,进而运行对应的中断服务例程( ISR) ,程序需读取中断悬挂寄存器,获得中断号。在这种方式中,程序必须通
    发表于 06-27 15:45 64次下载
    <b>ARM</b>向量<b>中断</b>机制在uClinux下的设计

    ARM体系中的异常中断及其应用

    ARM体系中的异常中断及其应用
    发表于 09-22 16:51 4次下载
    <b>ARM</b><b>体系</b>中的异常<b>中断</b>及其应用

    【课件】liteos-a中断体系

    中断,不需要实现发送中断: 对于APP来说,使用串口打印时,使用发送
    发表于 10-23 16:36 21次下载
    【课件】liteos-a<b>中断</b><b>体系</b>

    ZYNQ中断的使用入门教程

    中断,对于拥有双cotex-A9 的Zynq来说也一样。Zynq中断设计由ARM 与GIC pl390 中断控制器组成,用于接收IOP(I
    发表于 11-18 17:18 10次下载

    ZYNQ中断使用入门基础教程

    中断,对于拥有双cotex-A9的Zynq来说也一样。Zynq中断设计由ARM与GIC pl390中断控制器组成,用于接收IOP(I/O peripherals
    发表于 11-22 08:10 1.3w次阅读
    <b>ZYNQ</b><b>中断</b>使用入门基础教程

    51单片机的中断体系结构_中断的响应过程

    中断系统十分重要,分为外部中断和定时器中断。本文主要详解51单片机的中断体系结构以及中断的响应过程,具体的跟随小编一起来了解一下。
    的头像 发表于 05-18 15:28 1.8w次阅读
    51单片机的<b>中断</b><b>体系</b>结构_<b>中断</b>的响应过程

    ARM体系架构处理器的中断程序分析

    ARM体系架构的处理器中通常将低地址32字节作为中断向量表,当中断产生时会执行以下操作: ① 保存处理器当前状态,设置中断屏蔽位和各条件标志位 ② 设置当前程序状态寄存器CPSR中相应位
    的头像 发表于 11-21 11:10 2058次阅读
    <b>ARM</b><b>体系</b>架构处理器的<b>中断</b>程序分析

    ZYNQ开发案例:GPIO的结构体系及使用案例

    体系 zynq的GPIO,分为两种,MIO(multiuse I/O)和EMIO(extendable multiuse I/O)。 ZYNQ的GPIO由4个BANK组成,其
    的头像 发表于 12-09 11:41 2743次阅读
    <b>ZYNQ</b>开发案例:GPIO的结构<b>体系</b>及使用案例

    arm中断是怎么实现的

    arm中断是怎么实现的  首先,了解什么是中断中断是指在CPU执行某个程序时,突然发生的一些事件需要CPU立即停止正在执行的程序并去执行该事件相应的程序,这个过程叫做中断中断是系统中一个重要
    的头像 发表于 09-05 16:22 195次阅读