zynq中interrupts的学习笔记(一)
本学习笔记参考UG585-Zynq-7000-TRM.pdf ch.7:Interrupts。文中有说的不够严谨或者是有错误的地方,欢迎指正!
zynq中的interrupts有很多种,大体上分为三类:private、shared、software interrupts。
1.zynq 7000 有两个Cortex-A9 processor,每个cpu 都有一系列的private peripheral interrupts(PPIs,私有外围中断)。
PPIs包含:global timer、private watchdog timer、private timer 和来自PL部分的FIQ/IRQ(FIQ,是fast interrupt,IRQ是一般性的)。来自PL中的FIQ/IRQ可以作为 PPI#4 和 PPI #1通过GIC,也可以绕过GIC,通过pass-through multiplexer进入CPU。
在mpcore.ICCICR寄存器中可以使能pass-through 模式。
Software generated interrupts(SGIs):可以连接到一个或者两个cpu,是通过向generic interrupt controller(GIC)中的寄存器写内容产生的。
Shared peripheral interrupts(SPIs):该中断来自PS部分各种各样的IO外设,以及PL部分。
2.Generic Interrupt Controller(GIC)
GIC是管理中断的中央元,它将来自PS或者PL部分的中断发送给CPU。其功能:enables\disables\masks\prioritizes 中断源,将这些中断发送给选定的CPU。同时支持security extension。
每个中断都有独一无二的中断ID号,所有的中断都可以配置优先级,以及选定将中断信号给哪个CPU。这些配置是通过控制寄存器来完成的,CPU通过cpu private bus 来access中断控制和状态寄存器(图中右下角所示)。
3.GIC复位是通过向PERI_RST bit写数来完成的,PERI_RST是SLCR 中A9_CPU_RST_CTRL中的一位。这个复位信号同时会复位cpu private timer以及private watchdog timer。
4.接下来详细说一下这三种中断
(1)SGI:每个cpu都可以通过SGI来中断它自己,或者其他cpu,或者中断两个cpu,一共有16个SGI,IRQ ID# 范围是0~15。
(a)那么中断过程是如何触发的?
通过将SGI中断号写入到ICDSGIR中的SGIINTID这4位,再设置好接收中断的cpu就可以产生SGI中断了。写的过程是通过CPU的private bus来完成的。
(b)如何设置中断类型?
所有的SGI的中断类型都是rising edge,都是固定的,不能够修改,因此ICDICFR0(Interrupt configuration register)只能够read-only。
(c)中断发送到哪个CPU呢?
发送到哪个CPU interface由ICDSGIR中的CPUTargetList这8位决定,这里ICDIPTR0至ICDIPTR3都是只读的。
(d)中断完成后,如何清除中断呢?
通过读ICCIAR(Interrupt acknowledge)寄存器,或者向ICDICPR(Clear-pending)中写1来完成。
(2)PPI:PPI是每个CPU的私有中断,上文中提到了PPI包含global timer、private timer、private watchdog timer和来自PL的FIQ和IRQ。每个CPU有5个这样的私有中断。
(a)如何设置中断类型?
所有的PPI的中断类型都是固定的,不能够修改,有rising和active low level两种,因此ICDICFR1(Interrupt configuration register)也只能够read-only。
注意:来自PL的FIQ和IRQ信号进行反转后送入了中断控制器,所以所谓ICDICFR1寄存器显示active low level,他们在PS-PL接口处也是active high,也就是高电平触发中断。
(b)中断发送到哪个CPU呢?
由于PPI是每个CPU的私有中断,所有只有对应的CPU可以响应。
所以ICDIPTR[7:4]是reserved。
(c)中断完成后,如何清除中断呢?
对于高电平触发的,需要有interrupt handler来清除中断。
(3)SPI:SPI中断比较多,中断控制寄存器需要设置优先级和接收中断的CPU。
(a)如何设置中断类型?
除了IRQ #61~#68 和IRQ#84~91 是可以修改的以外,其他中断的触发类型都是固定的,是不可以修改的。
在ICDICFR中对触发类型进行设置,如下图:
(b)中断发送到哪个CPU呢?
(c)中断完成后,如何清除中断呢?
对于高电平触发的中断类型,需要请求源提供machanism用于有interrupt handler来清除中断。
(4)其他:上述说的ICDICFR用来设置触发类型(针对于可以修改触发类型的中断源),ICDIPTR用来设置接收中断的CPU。除了这些寄存器以外,还需要其他的寄存器用来设置其他参数,如优先级的设置需要使用ICDIPR、中断使能ICDICER、中断失能ICDICER、中断安全ICDISR等。
上文中有说的不够严谨或者是有错误的地方,欢迎指正!
zynq中interrupts的学习笔记(一)相关推荐
- Python中索引的学习笔记
1 前言 今天在学习FaceBoxes- 看到一个比较奇怪的代码,"order = scores.argsort()[::-1][:args.top_k]",不太懂这个" ...
- 机器人学中的状态估计——学习笔记
机器人学中的状态估计--学习笔记 离散时间的批量估计问题 1.最大后验概率法(Maximum A Posteriori, MAP) 2.贝叶斯推断(Bayesian inference) 离散时间的迭 ...
- 机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计
机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计 3.1 离散时间的批量估计问题 3.1.1 问题定义 3.1.2 最大后验估计 3.1.3 贝叶斯推断 3.1.4 存在性.唯一性与能观 ...
- Java中expecial,RxJava 学习笔记 (一)
作者: 一字马胡 转载标志 [2017-12-13] 更新日志 日期 更新内容 备注 2017-12-13 RxJava学习笔记系列 系列笔记 (一) 2017-12-15 增加系列笔记(二) 201 ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- 我的Android进阶之旅------gt;Android中编解码学习笔记
编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等 ...
- Oracle中job_type,【学习笔记】Oracle DBMS_SCHEDULER详细介绍与使用案例
天萃荷净 分享一篇关于Oracle DBMS_SCHEDULER详细介绍与使用案例 1.通过DBMS_SCHEDULER.CREATE_JOB直接创建job SQL> create table ...
- SiKi学院 Unity中常用api学习笔记(001-014)
Api 应用程序编程接口 前言 笔记是看siki学院中<Unity中常用api>的学习笔记 课程地址: http://www.sikiedu.com/my/course/59 强烈推荐大 ...
- SiKi学院 Unity中常用api学习笔记(015-019)
Api 应用程序编程接口 前言 笔记是看siki学院中<Unity中常用api>的学习笔记 课程地址: http://www.sikiedu.com/my/course/59 强烈推荐大 ...
最新文章
- esxi虚拟化集群_ProxmoxVE 之集群安装(V5.2)
- Oracle RAC 客户端连接负载均衡(Load Balance)
- random_state的值如何选_同样是防晒衣,单价几十和几百块有什么不同?选防晒衣认准这4点...
- 九九乘法表的C语言实现
- 图像处理中的卷积与模板
- 日志框架实现数据采集分析和报警
- 随记 elasticsearch
- [转载] set集合python_python基础-set集合
- 学生信息表 -通过选择年级和班级得到详细的学生信息名单
- android 布局图片缩放,Android中进行图片缩放显示
- tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
- Cartoon CG:卡通渲染(开篇)
- java里直线绕z轴逆时针旋转_空间直线绕任意轴旋转后的方程
- linux dd iso 进度,linux小记:查看dd进度
- Windows10搭建opengrok服务器
- vi 查看最顶部_vi命令示例大全
- 流媒体之老黄谈流媒体服务与视频网站研发
- 【案例4-2】饲养员喂养动物
- 广工anyview数据结构第四章(2021.12)
- office哪个版本最好用、占用资源最少?
热门文章
- [Python] 字典 update()函数:在字典中更新 (或加入) 键值对
- java生成和识别二维码
- _tkinter.TclError: invalid command name “tixComboBox“ 的解决办法
- AD19中画MOSFET的常见错误——封装出错
- Crackme017
- intel 酷睿core系列cpu的类型:U M H HQ MQ
- IDEA的Maxcomputer Studio开发
- 使用Fraps获取3D程序的FPS
- python的安全插件
- MySQL GROUP_CONCAT长度限制引发的一场灾难