Xilinx社区
首页 > Steve专栏 > 解析中断——Adam Taylor玩转MicroZed系列38
Steve专栏
解析中断——Adam Taylor玩转MicroZed系列38
来源:  时间:2015-01-27  浏览量:1028


解析中断——Adam Taylor玩转MicroZed系列38


作者:Adam Taylor


既然“Adafruit NeoPixel ”这个例子已经完成了(可以查看我以前发布的8篇博客)我们将要探索一下关于操作系统的知识,但是首先有一个小的插曲,在上周我收到了一个有兴趣的问题,这个问题是关于第24篇博客的--“讨论Zynq SoC的PS/PL(处理器系统/可编程逻辑)直接的通信接口“。这个特别的问题是关于从PL部分给PS部分的ARM Cortex-A9 MPCore CPU触发一个中断事件。

下面我们给出了位于Zynq SoC PS部分的ARM通用中断控制器的系统级框图,引用了Zynq-7000全可编程SoC技术指导手册(UG585)



从上面这个框图我们可以看出CPU0与CPU1共享了16个从PL到PS之间的中断,每个CPU内核分别占有5个来自PL的私有中断。这些中断源会为每个CPU内核驱动一个快速中断和一个周期性的中断。在下面这个例子里,我会展示怎么使用私有中断。然而中断的的一般概念都是相同的,没有考虑到具体的使用情况。在这个例子里,我将使用PL上的一个扩展的复用I/O(EMIO GPIO),回过头来连接到处理器的中断引脚上。一个简单的软件程序就能够说明来自PL的中断是怎么工作的。

注意:PL/PS接口之间的中断信号是高电平有效,不是低电平有效。

第一步:使能PL/PS之间的中断和使能你期望使用的具体的中断。


第二步:使能EMIO GPIO ,位宽设置为1。


中断和GPIO引脚都会出现在Zynq PS的框图中,这些信号会被进行内部连接,这样我们能够通过软件控制来驱动这些中断,当然在这个例子里,这些中断是由位于Zynq PL部分的EMIO引起的。

已经进行到了这一步,下一步是重新生成所有的输出文件和实现设计,以便我们能够把换个设计导出到SDK中。相应地,我们就能够编写一些代码来测试这个应用。

我们的测设应用实现的是当我们按下MicroZed 开发板上的一个按钮开关时会触发一个中断。

在SDK环境下,我们需要进行下面这些步骤:
1.    声明如下头文件:Platform.h, xparameters.h, Xscugic.h, Xil_Exceptions.h 和 xgpio.h,这些头文件      将提供一些函数和宏,帮助我们完成这个例子 。
2.    定义通用中断控制器和GPIO设备的ID,定义FPGA的中断号,定义EMIO和按钮开关的引脚号。
3.    声明和定义一些必需的函数:
中断控制器设置函数
PGA中断处理函数,这个函数会打印出一条信息
GPIO中断处理程序,这个程序会在有按钮开关按下的情况下驱动EMIO GPIO来触发FPGA中断事件

附加的代码(查看下面的附件,在这篇博客的结尾)非常详细地展示了我是怎样实现这样一个简单的例子。然而,我认为我应该从更多的细节来解释我建立这个中断的方式和方法。

当我们要在Zynq中使用中断,我们需要从以下几个方面着手:
1. 初始化中断控制器。
2. 连接异常设备ID到相关的中断处理程序,以使中断事件发生时它能够被正确的响应。
3. 连接FPGA中断到通用的中断控制器,这需要我们预定义中断ID号,调用的处理程序(他被用来识别中断源),和中断发生时运行的中断服务程序。
4.  在中断控制器中使能要用到的中断。
5.  使能处理器上的所有中断。

不论我们使用一个中断或者更多的中断,上面的流程是必需的,上面的第3条和第4条要为每个中断重新定义。


当我在MicroZed运行这些代码并按下按钮时,我看到了下面这些响应信息:说明它起作用了。

附件代码:Adam Taylors MicroZed Chronicles code part 38

原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...

© Copyright 2014 Xilinx Inc
如需转载,请注明出处

热点文章
精选视频
推荐资源

中国授权培训机构

北京 电话:(010)82757632
      (010) 62192881
深圳 电话:(0755)86186715
武汉 电话:(027)61389792
成都 电话:(028)80821007
南京 电话:(025)66022032
西安 电话:(029)82230498
邮箱:sales@e-elements.com

中国授权经销商

香港 电话:(852)22127848
北京 电话:(010)84148118
成都 电话:(028)86528262
上海 电话:(021)33678387
深圳 电话:(0755)26584925
武汉 电话:(027)87322806
邮箱:china@avent.com
深圳 电话:(0755)26743210
上海 电话:(021)51696680
北京 电话:(010)51726678
成都 电话:(028)85139576
武汉 电话:(027)87690155
邮箱:
xilinx_enquiry@comtech.com.cn

社区主办


《电子产品世界》杂志社

内容提供


    赛灵思公司

Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052