1.简介

GIC-400是用于控制中断的。在cubieboard2 上 的A20芯片采用了这款控制器。

cubieboard2 的GIC控制器 的地址是0x01C80000---0x01C87FFF ,长度等于GIC-400寄存器的长度。

具体的内容如下所示。

以0x01C80000为起始地址,下面给出的是偏移:

0x0000-0x0FFF

Reserved 未使用,无用

0x1000-0x1FFF

Distributor 配置器 有用

0x2000-0x3FFF

CPU interfaces CPU接口 有用

0x4000-0x4FFF

Virtual interface control block, for the processor that is performing the access

虚拟化相关,无用

0x5000-0x5FFF

Virtual interface control block, for the processor selected by address bits [11:9]

虚拟化相关,无用

 

0x5000-0x51FF

0x5200-0x53FF

...

0x5E00-0x5FFF

Alias for Processor 0

Alias for Processor 1

...

Alias for Processor 7

0x6000-0x7FFF

Virtual CPU interfaces

虚拟化相关,无用

常用的是图中第二块和第三块,0x1000~0x3fff这部分的配置。

2.Distributor 配置器

distributor这块寄存器的地址 = GIC控制器 的地址 + 0x1000 ,使用的时候别忘记了偏移。然后从这里开始,有如下的寄存器

偏移

名称

可读写

复位后

作用

0x000

GICD_CTLR

RW

0x00000000[c]

Distributor Control Register

写入1使能控制器,必备

0x004

GICD_TYPER

RO

Configuration-dependent[d]

Interrupt Controller Type Register

其中可以查看中断线的总数

0x008

GICD_IIDR

RO

0x0200143B

Distributor Implementer Identification Register, GICD_IIDR

存了一些版本信息,没用

0x080-0x0BC

GICD_IGROUPRn

RW

0x00000000

Interrupt Group Registers[e]

一个位图,控制中断属于A组还是B组

0x100

GICD_ISENABLERn

RW[f]

SGIs and PPIs:0x0000FFFF[g]

Interrupt Set-Enable Registers

一个位图,用于使能各个中断,写入1使能。有用

0x104-0x13C

SPIs: 0x00000000

0x180

GICD_ICENABLERn

RW[f]

0x0000FFFF[g]

Interrupt Clear-Enable Registers

和上一个寄存器类似,作用相反,写入1禁止。

0x184-0x1BC

0x00000000

0x200-0x23C

GICD_ISPENDRn

RW

0x00000000

Interrupt Set-Pending Registers

pend位图,写入1可以进入pend状态

0x280-0x2BC

GICD_ICPENDRn

RW

0x00000000

Interrupt Clear-Pending Registers

同上,写入1效果相反,阻止pend状态

0x300-0x33C

GICD_ISACTIVERn

RW

0x00000000

Interrupt Set-Active Registers

位图,写入1可以激活中断

0x380-0x3BC

GICD_ICACTIVERn

RW

0x00000000

Interrupt Clear-Active Registers

写入1反激活中断

0x400-0x5FC

GICD_IPRIORITYRn

RW

0x00000000

Interrupt Priority Registers

存着各个中断的优先级,每8位算一个

0x800-0x81C

GICD_ITARGETSRn

RO[h]

-

Interrupt Processor Targets Registers[i]

某个中断应该发往哪个处理器进行处理

0x820-0x9FC

RW

0x00000000

0xC00

GICD_ICFGRn

RO

SGIs: 0xAAAAAAAA

Interrupt Configuration Registers, GICD_ICFGRn

配置中断是低电平触发还是下降沿触发

0xC04

RO

PPIs: 0x55540000

0xC08-0xC7C

RW[j]

SPIs: 0x55555555

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

0x00000000

SGI Clear-Pending Registers

软中断的pend位

0xF20-0xF2C

GICD_SPENDSGIRn

RW

0x00000000

SGI Set-Pending Registers

同上,不过写入1时停止pend

0xFD0

GICD_PIDR4

RO

0x00000004

Peripheral ID 4 Register

0xFD4

GICD_PIDR5

RO

0x00000000

Peripheral ID 5 Register

0xFD8

GICD_PIDR6

RO

0x00000000

Peripheral ID 6 Register

0xFDC

GICD_PIDR7

RO

0x00000000

Peripheral ID 7 Register

0xFE0

GICD_PIDR0

RO

0x00000090

Peripheral ID 0 Register

0xFE4

GICD_PIDR1

RO

0x000000B4

Peripheral ID 1 Register

0xFE8

GICD_PIDR2

RO

0x0000002B

Peripheral ID 2 Register

0xFEC

GICD_PIDR3

RO

0x00000000

Peripheral ID 3 Register

0xFF0

GICD_CIDR0

RO

0x0000000D

Component ID 0 Register

0xFF4

GICD_CIDR1

RO

0x000000F0

Component ID 1 Register

0xFF8

GICD_CIDR2

RO

0x00000005

Component ID 2 Register

0xFFC

GICD_CIDR3

RO

0x000000B1

Component ID 3 Register

3.cpu接口

开始地址的偏移量为0x2000

Offset

Name

Type

Reset

Description[a]

0x0000

GICC_CTLR

RW

0x00000000

CPU Interface Control Register

使能位。写入1使能

0x0004

GICC_PMR

RW

0x00000000

Interrupt Priority Mask Register

限制中断最低优先级,高于此值无法中断,最好写大一点

0x0008

GICC_BPR

RW

0x00000002[b]

Binary Point Register

The minimum value of the Binary Point Register depends on which security-banked copy is considered:

0x2

Secure copy

0x3

Non-secure copy

优先级分组

0x000C

GICC_IAR

RO

0x000003FF

Interrupt Acknowledge Register

只读,中断id

0x0010

GICC_EOIR

WO

-

End of Interrupt Register

写入以告知cpu已经处理完中断

0x0014

GICC_RPR

RO

0x000000FF

Running Priority Register

当前中断优先级

0x0018

GICC_HPPIR

RO

0x000003FF

Highest Priority Pending Interrupt Register [c]

最高优先级中断号及其pend值

0x001C

GICC_ABPR

RW

0x00000003

Aliased Binary Point Register[d]

The minimum value of the Aliased Binary Point Register is 0x3.

别名寄存器

0x0020

GICC_AIAR

RO

0x000003FF

Aliased Interrupt Acknowledge Register[d]

别名寄存器

0x0024

GICC_AEOIR

WO

-

Aliased End of Interrupt Register[d]

别名寄存器

0x0028

GICC_AHPPIR

RO

0x000003FF

Aliased Highest Priority Pending Interrupt Register[c][d]

别名寄存器

0x00D0

GICC_APR0

RW

0x00000000

Active Priority Register

用于保存和恢复

0x00E0

GICC_NSAPR0

RW

0x00000000

Non-Secure Active Priority Register[d]

用于保存和恢复

0x00FC

GICC_IIDR

RO

0x0202143B

CPU Interface Identification Register, GICC_IIDR

存着版本信息

0x1000

GICC_DIR

WO

-

Deactivate Interrupt Register

转载于:https://www.cnblogs.com/linanwx/p/5631077.html

ARM GIC-400 寄存器相关推荐

  1. ARM GIC简介与Linux中断处理分析

    先简单说明一下GIC(具体详尽的介绍请查阅ARM GIC相关文档) GIC即general interrupt controller. 它是一个架构,版本历经了GICv1(已弃用),GICv2,GIC ...

  2. 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结

    花了一天,边玩边看,把这个系列看完了.感叹确实卢俊前辈对于gic的掌握程度. 肯定很多的东西看了就忘了,这是正常的,在以后如果有用到的话,再回过头来,结合实践应该会映像深刻. 1.波形 以下以gic6 ...

  3. Linux 中断管理之ARM GIC V3 初始化

    1.ARM GIC V3中断控制器介绍 GIC(Generic Interrupt Controller)是一个通用的中断控制器,用来接收硬件中断信号,并经过一定处理后,分发给对应的CPU进行处理.G ...

  4. 【转】ARM GIC中断系列(二):gicv2架构基础

    原文来自前辈:http://www.lujun.org.cn/?p=3861 真的很优秀的文章 ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cp ...

  5. 【转】ARM GIC中断系列(三):gicv3架构基础

    GICv3架构是GICv2架构的升级版,增加了很多东西.变化在于以下: 使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core 将cpu inter ...

  6. [ARM]GIC相关知识

    ARM GIC GICv2-GICv3 重要变化 cpu interface GICv2架构,cpu interface是实现在gic内部,而且gic的寄存器,都是memory-mapped方式访问. ...

  7. ARM GIC(三) gicv2架构

    ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu ...

  8. ARM GIC(六)gicv3架构-LPI

    在gicv3中,引入了一种新的中断类型.message based interrupts,消息中断. 一.消息中断 外设,不在通过专用中断线,向gic发送中断,而是写gic的寄存器,来发送中断. 这样 ...

  9. Linux 中断 —— ARM GIC 中断控制器

    GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器,其architecture specification目前有四个版本,V1-V4(V2最多支持 ...

  10. arm GIC介绍之一

     GIC是ARM架构中及其重要的部分,本文只在公开ARM对应资料基础上,以MTK开发板为基础整理.个人理解之后记录,巩固和加深认识,仅此而已,如果有错误,欢迎指出. 1. GIC的概述 看过SOC ...

最新文章

  1. 滑动返回类库SwipeBackLayout的使用问题,解决返回黑屏,和看到桌面
  2. Xcode+OpenCV3.4.0 折腾(2)
  3. 网络流24题-魔术球问题
  4. 共享单车开启混战模式,谁能笑到最后?
  5. stderr和stdout(printf、fprintf、sprintf)(转)
  6. GDCM:转储GEMS Ultrasound MovieGroup的测试程序
  7. OpenCV 反投影Back Projection
  8. P2839 [国家集训队]middle
  9. long long , __int64 范围
  10. Field EXP_REVENUE
  11. 如何调用 DLL 中的函数
  12. ts定义数组类型_ts基本数据类型
  13. JavaScript学习笔记之BOM篇,认识几种常见的浏览器对象
  14. 计算机应用与推广,计算机在中小学教学中的推广和应用
  15. CISCO 端口出现err-disabled 现象解决案例
  16. OSChina 周二乱弹 —— 这样成功要到小护士姐姐的微信
  17. html css js php常用网页代码汇总合集(一)网页设计入门代码知识汇总1
  18. xjad反编译遇到break MISSING_BLOCK_LABEL_365问题
  19. 牛顿迭代法实现开根号
  20. 绿幕抠图支持网页、PPT背景类型

热门文章

  1. 什么是web前端?Web前端好入门吗?
  2. html中间一条虚线怎么画,【html5】HTML5中canvas怎样画虚线
  3. 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置
  4. linux非root用户关机,在Linux中普通用户图形界面登录以后为什么可以关机或者重启机器...
  5. python中的post和get请求的区别_HTTP: Request中的post和get区别
  6. ldconfig 和 ldd 命令用法
  7. list操作 rediscluster_redis3.0 cluster功能介绍
  8. java实现dex转jar,Android 逆向相关
  9. STM8单片机低功耗---活跃停机(Active Halt)模式实现-3
  10. Concurrenthashmap的putIfAbsent方法