第十七章 GPIO 中断试验(原理)

Cortex-A7 中断系统简介

向量地址 中断类型 中断模式
0X00 复位中断(Rest) 特权模式(SVC)
0X04 未定义指令中断(Undefined Instruction) 未定义指令中止模式(Undef)
0X08 软中断(Software Interrupt,SWI) 特权模式(SVC)
0X0C 指令预取中止中断(Prefetch Abort) 中止模式
0X10 数据访问中止中断(Data Abort) 中止模式
0X14 未使用(Not Used) 未使用
0X18 IRQ 中断(IRQ Interrupt) 外部中断模式(IRQ)
0X1C FIQ 中断(FIQ Interrupt 快速中断模式(FIQ)

GIC 控制器简介

1、 GIC接收众多的外部中断,最终只有4个信号报给ARM内核。
VFIQ:虚拟快速 FIQ。
VIRQ:虚拟快速 IRQ
FIQ:快速中断 IRQ。
IRQ:外部中断 IR
2、GICV2 总体框图

image.png

①SPI是共享中断,所有Core共享的中断,这个是最常见的,那些外部中断都属于SPI中断。比如按键中断、串口中断等等。
②PPI是私有中断,我们说了GIC是支持多个核的,每个核肯定有自己独有的中断。
③SGI是软件中断,由软件触发引起的中断,通过向寄存器GICD_SGIR写入数据来触发,系统会使用SGI中断来完成多核之间的通讯。
④中断ID
ID0~ID15分配给SGI。
ID16~ID31分配给PPI。
ID32~ID1019分配给SPI
⑤GIC逻辑分块
Distributor(分发器端)
此逻辑块负责处理各个中断时间的分发问题,也就是中断事件应该发送到哪个CPU Interface上去。分发器收集所有的中断源,可以控制每个中断的优先级,它总是将优先级最高的中断事件发送到CPU接口端。分发器端要做的主要工作如下:
a.全局中断使能控制。
b.控制每一个中断的使能或者关闭。
c.设置每个中断的优先级
d.设置每个中断的目标处理器列表
e.设置每个外部中断的触发模式:电平触发或者边沿触发。
f.设置每个中断属于组0还是组1
CPU Interface(CPU 接口端)
CPU接口端就是分发器和CPU Core之间的桥梁,CPU接口端主要工作如下:
a.使能或者关闭发送到CPU Core的中断请求信号。
b.应答中断
c.通知中断处理完成
d.设置优先级掩码,通过掩码来设置哪些中断不需要上报给CPU Core
e.定义抢占策略
f.当多个中断到来的时候,选择优先级最高的中断通知给CPU Core

CP15协处理器

主要是使能或者禁止MMU、I/D Cache等

中断使能

IRQ和FIQ总中断使能

指令 描述
cpsid i 禁止IRQ中断
cpsie i 使能IRQ中断
cpsid f 禁止FIQ中断
cpsie f 使能FIQ中断

ID0~ID1019中断使能和禁止
GIC寄存器GICD_ISENABLERn和GICD_ICENABLERn用来完成外部中断的使能和禁止,对于Cortex-A7内核来说中断ID只能使用512个。一个bit控制一个中断ID的使能,那么就需要512/32=16个GICD_ISENABLERn寄存器来完成中断的使能。同理,也需要16个GICD_ICENABLERn寄存器来完成中断的禁止。其中GICD_ISENABLERn的bit[15:0]对应ID15~0de SGI中断,GICD_ISENABLERn的bit[31:16]对应ID31~16的PPI中断。剩下的GICD_ISENABLERn就是控制SPI中断的。

中断优先级设置

优先级数配置
GICC_PMR寄存器只有低8位有效,这个8位最多可以设置256个优先级,其他优先级数设置如下表

image.png

image.png

抢占优先级和子优先级位数设置
抢占优先级和子优先级各占多少位是由寄存器GICC_BPPR来决定的,GICC_BPR寄存器结构如下:

image.png

GICC_BPR只有低3位有效,其值不同,抢占优先级和子优先级占用的位数也不同,配置如下:


image.png

为了简单起见,一般将所有的中断优先级位都配置为抢占优先级,比如6U的优先级位数为5(32个优先级),所以可以设置Binary poin为2,表示5个优先级位全部为抢占优先级。

优先级设置
Cortex-A7使用了512个中断ID,每个中断ID配有一个优先级寄存器,所以一共有512个D_IPRIORITYR寄存器。如果优先级个数为32的话,使用寄存器D_IPRIORITYR的bit7:4来设置优先级。
优先级设置主要有三部分:
①设置寄存器GICC_PMR,配置优先级个数,比如I.MX6U支持32级优先级
②设置抢占优先级和子优先级位数,一般为了简单起见,会将所有的位数都设置为抢占优先级
③设置指定中断的ID的优先级,也就是设置外设优先级

简单总结:
1、 6U有8中中断类型
2、 GIC控制器有三类中断源,SPI、PPI、SGI;能设置中断优先级,抢占优先级和子优先级。
3、 CP15协处理器是开关I/D cache、MMU、获取GIC寄存器

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容