(四)Zedboard上面实现按键中断

本文详细介绍了在Zedboard上实现PL端按键中断到PS端LED处理的实验过程,包括中断理解、实验中断分析、实际操作步骤以及源码解析。通过GIC中断控制器管理中断,实现按键按下点亮LED的功能。
摘要由CSDN通过智能技术生成

本次实验的流程是在PL断产生按键中断,然后在PS端进行处理将按键的纸传给LED实现按下按键点亮LED灯的目的。实验大致分为四个环节:1.首先了解中断;2.本实验的中断分析;3.实际操作;4.源码分析。

  • 1.首先了解中断
    ARM端的中断体系是在存储地址的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的入口地址。ARM处理器在响应中断的时候,总是从固定的地址开始(一般是指中断向量表),而在高级语言环境下开发中断服务程序的时候,无法控制固定地址开始的跳转流程,为了使上层应用程序与硬件中断跳转联系起来,需要编写一段中间的服务程序来进行连接–这就是中断解析程序。在这里插入图片描述
    这是ARM的中断流程。下面讲述zynq上的中断。
    zynq有两个处理器和GCI控制器,中断结构体系结构如下所示:
    在这里插入图片描述
    包括PPI私有外设中断、SGI软件中断和SPI共享外设中断。zynq使用通用中断控制器(GIC)来处理中断。GIC可处理源自以下方面的中断:
    *1软件中断(Software Generated Interrupt, SGI,中断号0-15)(16–26 reserved)
    *2私有外设中断(Private Peripheral Interrupt, PPI,中断号27-31),
    *3共享外设中断(Shared Peripheral Interrupt, SPI,中断号32-95).
    4私有外设中断(PPI):每个CPU都有一组PPI,包括全局定时器、私有看门狗定5时器、私有定时器和来自PL的FIQ/IRQ.
    *6软件中断(SGI)被路由到一个或者两个CPU上,通过写ICDSGIR寄存器产生SGI.
    *7共享外设中断(SPI)由PS和PL上的各种I/O控制器和存储器控制器产生,这些中断信号被路由的CPU.
    *8通用中断控制器(GIC)是核心资源,用于集中管理从PS和PL产生的中断信号的资源集合。控制器可以使能、关使能、屏蔽中断源和改变中断源的优先级,并且会将中断送到对应的CPU中,CPU通过私有总线访问这些寄存器。
    *9中断控制器(ICC,Interrupt Controller CPU)和中断控制器分配器(ICD, Interrupt Controller Distributor)是GIC寄存器子集。
    中断原理
    当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下一条指令处继续执行。在进入异常中断处理程序时,要保存被中断程序的执行线程。从中断处理程序退出时要恢复被中断程序的执行现场。
  • 2.本实验的中断分析

中断的流程(不包括寄存器的初始化和设置)

  1. 定义中断向量表
    //定义中断向量表结构体,Handler为函数,Data为函数Handler的参数
    typedef struct {
    Xil_ExceptionHandler Handler;
    void *Data;
    } XExc_VectorTableEntry;
  2. //声明中断向量表
    extern XExc_VectorTableEntry XExc_VectorTable[];
  3. //安装中断处理函数 (中断解析程序)
    XExc_VectorTable[5].Handler =(Xil_ExceptionHandler)InterruptHandler_IRQ;
    XExc_VectorTable[5].Data = NULL;
  4. //IRQ中断处理函数
    void InterruptHandler_IRQ(void);

中断初始化及配置
5. ICD寄存器组(中断分配器)的初始化,共计7个。void Int_Init(void);
6. ICC寄存器组(中断控制器)的初始化并设置,共计2个,void CPU_Init(void);
7.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值