ARM GIC-400 寄存器
1.简介
GIC-400是用于控制中断的。在cubieboard2 上 的A20芯片采用了这款控制器。
cubieboard2 的GIC控制器 的地址是0x01C80000---0x01C87FFF ,长度等于GIC-400寄存器的长度。
具体的内容如下所示。
以0x01C80000为起始地址,下面给出的是偏移:
|
Reserved 未使用,无用 |
|
|
Distributor 配置器 有用 |
|
|
CPU interfaces CPU接口 有用 |
|
|
Virtual interface control block, for the processor that is performing the access 虚拟化相关,无用 |
|
|
Virtual interface control block, for the processor selected by address bits [11:9] 虚拟化相关,无用 |
|
...
|
Alias for Processor 0 Alias for Processor 1 ... Alias for Processor 7 |
|
|
Virtual CPU interfaces 虚拟化相关,无用 |
常用的是图中第二块和第三块,0x1000~0x3fff这部分的配置。
2.Distributor 配置器
distributor这块寄存器的地址 = GIC控制器 的地址 + 0x1000 ,使用的时候别忘记了偏移。然后从这里开始,有如下的寄存器
偏移 |
名称 |
可读写 |
复位后 |
作用 |
---|---|---|---|---|
|
GICD_CTLR |
RW |
|
Distributor Control Register 写入1使能控制器,必备 |
|
GICD_TYPER |
RO |
Configuration-dependent[d] |
Interrupt Controller Type Register 其中可以查看中断线的总数 |
|
GICD_IIDR |
RO |
|
Distributor Implementer Identification Register, GICD_IIDR 存了一些版本信息,没用 |
|
GICD_IGROUPRn |
RW |
|
Interrupt Group Registers[e] 一个位图,控制中断属于A组还是B组 |
|
GICD_ISENABLERn |
RW[f] |
SGIs and PPIs: |
Interrupt Set-Enable Registers 一个位图,用于使能各个中断,写入1使能。有用 |
|
SPIs: |
|||
|
GICD_ICENABLERn |
RW[f] |
|
Interrupt Clear-Enable Registers 和上一个寄存器类似,作用相反,写入1禁止。 |
|
|
|||
|
GICD_ISPENDRn |
RW |
|
Interrupt Set-Pending Registers pend位图,写入1可以进入pend状态 |
|
GICD_ICPENDRn |
RW |
|
Interrupt Clear-Pending Registers 同上,写入1效果相反,阻止pend状态 |
|
GICD_ISACTIVERn |
RW |
|
Interrupt Set-Active Registers 位图,写入1可以激活中断 |
0x380 -0x3BC
|
GICD_ICACTIVERn |
RW |
|
Interrupt Clear-Active Registers 写入1反激活中断 |
|
GICD_IPRIORITYRn |
RW |
|
Interrupt Priority Registers 存着各个中断的优先级,每8位算一个 |
|
GICD_ITARGETSRn |
RO[h] |
- |
Interrupt Processor Targets Registers[i] 某个中断应该发往哪个处理器进行处理 |
|
RW |
|
||
|
GICD_ICFGRn |
RO |
SGIs: |
Interrupt Configuration Registers, GICD_ICFGRn 配置中断是低电平触发还是下降沿触发 |
|
RO |
PPIs: |
||
|
RW[j] |
SPIs: |
||
0xD00
|
GICD_PPISR |
RO |
0x00000000
|
Private Peripheral Interrupt Status Register, GICD_PPISR 一般没用 |
0xD04 -0xD3C
|
GICD_SPISRn |
RO |
0x00000000
|
Shared Peripheral Interrupt Status Registers, GICD_SPISRn 没用 |
0xF00
|
GICD_SGIR |
WO |
- |
Software Generated Interrupt Register 控制软中断 |
0xF10-0xF1C
|
GICD_CPENDSGIRn |
RW |
|
SGI Clear-Pending Registers 软中断的pend位 |
|
GICD_SPENDSGIRn |
RW |
|
SGI Set-Pending Registers 同上,不过写入1时停止pend |
|
GICD_PIDR4 |
RO |
|
Peripheral ID 4 Register |
|
GICD_PIDR5 |
RO |
|
Peripheral ID 5 Register |
|
GICD_PIDR6 |
RO |
|
Peripheral ID 6 Register |
|
GICD_PIDR7 |
RO |
|
Peripheral ID 7 Register |
|
GICD_PIDR0 |
RO |
|
Peripheral ID 0 Register |
|
GICD_PIDR1 |
RO |
|
Peripheral ID 1 Register |
|
GICD_PIDR2 |
RO |
|
Peripheral ID 2 Register |
|
GICD_PIDR3 |
RO |
|
Peripheral ID 3 Register |
|
GICD_CIDR0 |
RO |
|
Component ID 0 Register |
|
GICD_CIDR1 |
RO |
0x000000F0
|
Component ID 1 Register |
|
GICD_CIDR2 |
RO |
|
Component ID 2 Register |
|
GICD_CIDR3 |
RO |
|
Component ID 3 Register |
3.cpu接口
开始地址的偏移量为0x2000
Offset |
Name |
Type |
Reset |
Description[a] |
---|---|---|---|---|
|
GICC_CTLR |
RW |
|
CPU Interface Control Register 使能位。写入1使能 |
|
GICC_PMR |
RW |
|
Interrupt Priority Mask Register 限制中断最低优先级,高于此值无法中断,最好写大一点 |
|
GICC_BPR |
RW |
|
Binary Point Register The minimum value of the Binary Point Register depends on which security-banked copy is considered:
|
|
GICC_IAR |
RO |
|
Interrupt Acknowledge Register 只读,中断id |
|
GICC_EOIR |
WO |
- |
End of Interrupt Register 写入以告知cpu已经处理完中断 |
|
GICC_RPR |
RO |
|
Running Priority Register 当前中断优先级 |
|
GICC_HPPIR |
RO |
|
Highest Priority Pending Interrupt Register [c] 最高优先级中断号及其pend值 |
|
GICC_ABPR |
RW |
|
Aliased Binary Point Register[d] The minimum value of the Aliased Binary Point Register is 别名寄存器 |
|
GICC_AIAR |
RO |
|
Aliased Interrupt Acknowledge Register[d] 别名寄存器 |
|
GICC_AEOIR |
WO |
- |
Aliased End of Interrupt Register[d] 别名寄存器 |
|
GICC_AHPPIR |
RO |
|
Aliased Highest Priority Pending Interrupt Register[c][d] 别名寄存器 |
|
GICC_APR0 |
RW |
|
Active Priority Register 用于保存和恢复 |
|
GICC_NSAPR0 |
RW |
|
Non-Secure Active Priority Register[d] 用于保存和恢复 |
|
GICC_IIDR |
RO |
|
CPU Interface Identification Register, GICC_IIDR 存着版本信息 |
|
GICC_DIR |
WO |
- |
Deactivate Interrupt Register |
转载于:https://www.cnblogs.com/linanwx/p/5631077.html
ARM GIC-400 寄存器相关推荐
- ARM GIC简介与Linux中断处理分析
先简单说明一下GIC(具体详尽的介绍请查阅ARM GIC相关文档) GIC即general interrupt controller. 它是一个架构,版本历经了GICv1(已弃用),GICv2,GIC ...
- 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结
花了一天,边玩边看,把这个系列看完了.感叹确实卢俊前辈对于gic的掌握程度. 肯定很多的东西看了就忘了,这是正常的,在以后如果有用到的话,再回过头来,结合实践应该会映像深刻. 1.波形 以下以gic6 ...
- Linux 中断管理之ARM GIC V3 初始化
1.ARM GIC V3中断控制器介绍 GIC(Generic Interrupt Controller)是一个通用的中断控制器,用来接收硬件中断信号,并经过一定处理后,分发给对应的CPU进行处理.G ...
- 【转】ARM GIC中断系列(二):gicv2架构基础
原文来自前辈:http://www.lujun.org.cn/?p=3861 真的很优秀的文章 ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cp ...
- 【转】ARM GIC中断系列(三):gicv3架构基础
GICv3架构是GICv2架构的升级版,增加了很多东西.变化在于以下: 使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core 将cpu inter ...
- [ARM]GIC相关知识
ARM GIC GICv2-GICv3 重要变化 cpu interface GICv2架构,cpu interface是实现在gic内部,而且gic的寄存器,都是memory-mapped方式访问. ...
- ARM GIC(三) gicv2架构
ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu ...
- ARM GIC(六)gicv3架构-LPI
在gicv3中,引入了一种新的中断类型.message based interrupts,消息中断. 一.消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断. 这样 ...
- Linux 中断 —— ARM GIC 中断控制器
GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V2最多支持 ...
- arm GIC介绍之一
GIC是ARM架构中及其重要的部分,本文只在公开ARM对应资料基础上,以MTK开发板为基础整理.个人理解之后记录,巩固和加深认识,仅此而已,如果有错误,欢迎指出. 1. GIC的概述 看过SOC ...
最新文章
- 滑动返回类库SwipeBackLayout的使用问题,解决返回黑屏,和看到桌面
- Xcode+OpenCV3.4.0 折腾(2)
- 网络流24题-魔术球问题
- 共享单车开启混战模式,谁能笑到最后?
- stderr和stdout(printf、fprintf、sprintf)(转)
- GDCM:转储GEMS Ultrasound MovieGroup的测试程序
- OpenCV 反投影Back Projection
- P2839 [国家集训队]middle
- long long , __int64 范围
- Field EXP_REVENUE
- 如何调用 DLL 中的函数
- ts定义数组类型_ts基本数据类型
- JavaScript学习笔记之BOM篇,认识几种常见的浏览器对象
- 计算机应用与推广,计算机在中小学教学中的推广和应用
- CISCO 端口出现err-disabled 现象解决案例
- OSChina 周二乱弹 —— 这样成功要到小护士姐姐的微信
- html css js php常用网页代码汇总合集(一)网页设计入门代码知识汇总1
- xjad反编译遇到break MISSING_BLOCK_LABEL_365问题
- 牛顿迭代法实现开根号
- 绿幕抠图支持网页、PPT背景类型
热门文章
- 什么是web前端?Web前端好入门吗?
- html中间一条虚线怎么画,【html5】HTML5中canvas怎样画虚线
- 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置
- linux非root用户关机,在Linux中普通用户图形界面登录以后为什么可以关机或者重启机器...
- python中的post和get请求的区别_HTTP: Request中的post和get区别
- ldconfig 和 ldd 命令用法
- list操作 rediscluster_redis3.0 cluster功能介绍
- java实现dex转jar,Android 逆向相关
- STM8单片机低功耗---活跃停机(Active Halt)模式实现-3
- Concurrenthashmap的putIfAbsent方法