GIC400 Register

gic寄存器

gic寄存器,分为两部分,一部分是distributor的寄存器,另一部分是cpu interface的寄存器。

两部分的寄存器,均是通过memory-mapped的方式来访问。

Distribution

  • Distributor Control Register GICD_CTLR enable or disable distribution,global interrupt enable

    在disable 期间,register工作正常,GICV2可以通过操作寄存器配置int的pending或active状态

  • Interrupt Controller Type Register, GICD_TYPER
    • whether the GIC implements the Security Extensions
    • the maximum number of interrupt IDs that the GIC supports
    • the number of CPU interfaces implemented
    • if the GIC implements the Security Extensions, the maximum number of implemented Lockable Shared Peripheral Interrupts (LSPIs).



  • Distributor Implementer Identification Register, GICD_IIDR

    Provides information about the implementer and revision of the Distributor.

  • Interrupt Group Registers, GICD_IGROUPRn

    Typically, the reset value of all GICD_IGROUPR registers is zero, so that all interrupts are Group 0 unless reprogrammed as Group 1 by Secure accesses to the appropriate GICD_IGROUPR registers.

  • Interrupt Set-Enable Registers, GICD_ISENABLERn

Disabling an interrupt only disables the forwarding of the interrupt from the Distributor to any CPU interface. It does not prevent the interrupt from changing state, for example becoming pending, or active and pending if it is already active.

  • Interrupt Clear-Enable Registers, GICD_ICENABLERn

Writing a 1 to an GICD_ICENABLERn bit only disables the forwarding of the corresponding interrupt from the Distributor to any CPU interface. It does not prevent the interrupt from changing state, for example becoming pending, or active and pending if it is already active.

  • Interrupt Set-Pending Registers, GICD_ISPENDRn

  • Interrupt Clear-Pending Registers, GICD_ICPENDRn

  • Interrupt Set-Active Registers, GICD_ISACTIVERn

  • Interrupt Clear-Active Registers**, GICD_ICACTIVERn**

  • Interrupt Priority Registers, GICD_IPRIORITYRn

    • These registers are byte-accessible
    • The GICD_IPRIORITYRs provide an 8-bit priority field for each interrupt supported by the
      GIC. This field stores the priority of the corresponding interrupt. 256
    • A GIC might implement fewer than eight priority bits, but must implement at least bits [7:4]
      of each field.
    • The number of implemented GICD_IPRIORITYRs is (8*(GICD_TYPER.ITLinesNumber+1)).
    • The lower the value, the greater the priority of the corresponding interrupt.

  • Interrupt Processor Targets Registers, GICD_ITARGETSRn

    • The GICD_ITARGETSRs provide an 8-bit CPU targets field for each interrupt supported by the GIC.
    • These registers are byte-accessible.
    • Has no effect on any active interrupt. This means that removing a CPU interface from a targets list does not cancel an active state for that interrupt on that CPU interface.Has an effect on any pending interrupts.
    • The registers that contain the SGI and PPI interrupts are read-only and the value is the CPU number of the current access
    • GICD_ITARGETSR0 to GICD_ITARGETSR7 are read-only, and each field returns a value that corresponds only to the processor reading the register.
  • Interrupt Configuration Registers, GICD_ICFGRn

    • The GICD_ICFGRs provide a 2-bit Int_config field for each interrupt supported by the GIC.
    • Before changing the value of a programmable Int_config field, software must disable the
      corresponding interrupt,
    • The number of implemented GICD_ICFGRs is (2*(GICD_TYPER.ITLinesNumber+1)).
    • SGI is level_sensitive

  • Private Peripheral Interrupt Status Register, GICD_PPISR

    • Enables a processor to access the status of the PPI inputs on the Distributor.
    • A processor can only read the status of its own PPI and cannot read the status of PPIs for other processors


  • Shared Peripheral Interrupt Status Registers, GICD_SPISRn

    Enables a processor to access the status of the IRQS inputs on the Distributor.


  • Software Generated Interrupt Register, GICD_SGIR

    Controls the generation of SGIs.

...
  • SGI Clear-Pending Registers, GICD_CPENDSGIRn

    The GICD_CPENDSGIRs provide a clear-pending bit for each supported SGI and source processor combination

  • SGI Set-Pending Registers, GICD_SPENDSGIRn

    The GICD_SPENDSGIRn registers provide a set-pending bit for each supported SGI and source processor combination.

CPU interface

GICC_CTLR(0x0000):CPU Interface Control,控制中断是否传给CPU核,控制中断是IRQ还是FIQ

GICC_PMR(0x0004):Priority Mask,控制优先级门限,低于门限的中断不会转发到CPU

GICC_BPR(0x0008):Binary Point Register,是将优先级分成2部分:Group priority 、Subpriority,只使用优先级的Group priority部分,忽略Subpriority部分

详解:比如GIC-400的默认值是2,则优先级的[7:3]作为Group priority ,[2:0]作为Subpriority,则总共可生成32个优先级,与GICD_IPRIORITYRn保持一致

GICC_IAR(0x000C):Interrupt Acknowledge,只读,可以查看当前pending的最高优先级中断

GICC_EOIR(0x0010):End of Interrupt,只写,中断处理完成后需要写该寄存器

GICC_RPR(0x0014):Running Priority,只读,当前处理中断的优先级

GICC_HPPIR(0x0018):Highest Priority Pending ,只读,处于active状态的中断里优先级最高的

GICC_IIDR(0x00FC):ID寄存器,GIC-400的值是0x0202143B

GICC_DIR(0x1000):Deactivate Interrupt ,只写,移除中断的Active状态

GICC_IIDR(0x00FC):ID寄存器,GIC-400的值是0x0202143B

GICC_DIR(0x1000):Deactivate Interrupt ,只写,移除中断的Active状态

GICC_APRn 为在电源管理中保存和恢复状态提供支持 。

GIC介绍 (三)——GIC400 Register相关推荐

  1. Linux系统GIC介绍与编程

    百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone ...

  2. NoSQL介绍(三)

    NoSQL介绍(三) Redis数据类型-string string为最简单的类型,与Memcached一样的类型,一个key对应一个value,其支持的操作与Memcached的操作类似,它的功能更 ...

  3. 云桌面VOI计算存储在服务器端,介绍三种云桌面:VDI、IDV、VOI

    介绍三种云桌面:VDI.IDV.VOI 云桌面应场景而变,没有一种云桌面可以适用所有场景.市场上的云桌面一般分为VDI.IDV和VOI三种架构.下面我们就来看下,它们各有哪些优劣,又分别适用哪些场景. ...

  4. arm GIC介绍之一

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

  5. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  6. C语言实现OOP——轻量级的面向对象 C 语言编程框架 LW_OOPC 介绍(三)

    文章目录 C 语言编程框架 LW_OOPC 介绍(三) 方案的可扩展性如何? LW_OOPC最佳实践 LW_OOPC的优点: LW_OOPC的缺点: 总结: 幕后花絮: 参考资料: C 语言编程框架 ...

  7. Lucene.Net 2.3.1开发介绍 —— 三、索引(三)

    原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(三) 3.Field配置所产生的效果 索引数据,简单的代码,只要两个方法就搞定了,而在索引过程中用到的一些类里最简单,作用也不小的就是F ...

  8. 介绍三个开发技术小知识点

    背景 本文将介绍三个开发过程中的小技术点: Vue 组件传递对象时,根据是否会修改原对象内容,决定是直接使用,还是用副本: Spring 容器托管的实体 Bean 名称的基本规则: MyBatis 默 ...

  9. 介绍三款串口监控工具:Device Monitoring Studio,portmon,Comspy

    介绍三款串口监控工具:Device Monitoring Studio,portmon,Comspy 在开发上位机下位机通讯程序时,有一个好的监控工具会事半功倍.特在网上找了几款串口监控软件,作了简单 ...

最新文章

  1. mysql数据库对象关系映射
  2. JDBC连接MySQL
  3. 【Paper】2009_Controllability of Multi-Agent Systems from a Graph-Theoretic Perspective
  4. Uncaught ReferenceError: layer is not defined
  5. [转载]国外物联网平台初探(二):微软Azure IoT
  6. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
  7. mysql怎么制作柱状图_从数据库中取出最近三十天的数据并生成柱状图
  8. SQLyog笔记-CURRENT_TIMESTAMP在SQLyog的配置
  9. 案例实现jquery.cookie的操作
  10. 阮一峰的Javascript模块化编程(三):require.js的用法
  11. 调用Xmlrpc接口
  12. ThinkPHP胜出Laravel 近4倍,主流框架性能测试
  13. matlab 颜色对照表
  14. 老年人、色弱者和爱操心的妈妈:视频平台技术升级的新战场
  15. C++ primer 5th 习题之10.13
  16. 思科服务器怎么看主板型号,原装思科CISCO模块VWIC-2MFT-G703
  17. Windows启动配置数据(BCD)存储文件包含一些无效信息
  18. 16春季计算机应用基础,16春季福师《计算机应用基础》在线作业一.doc
  19. 分享 | 基于图像分类网络ResNet50_vd实现桃子分类
  20. 苹果退款48小时审核结果_金苹果花园车辆审核结果20191102

热门文章

  1. 五大靠谱的婚恋相亲APP详细特点缺点分析!
  2. 引力波数据居然是用 Python 分析的
  3. WIN32 opengl绘制一个点
  4. EPICS Scaler记录和相关软件
  5. 强烈推荐一个有趣的数据分析神器~
  6. 导入下载excel(还有excel多个sheet)和txt文本的方法
  7. 删除地址栏输入历史记录
  8. 微信小程序在组件中刷新当前页面
  9. The operation couldn't be completed.(LaunchServicesError error 0.)问题描述和解决方法
  10. android实现发送短信的功能