zoukankan      html  css  js  c++  java
  • GIC400简介

    GIC400是arm公司的中断控制IP,提供axi4接口,主要功能:

    1)中断的使能(enable,mask); 中断的优先级(poriority);  中断的触发条件(level-sensitive, edge-triggered);

    2)单独分为两个Group,来支持secure, non_secure的中断; Group0通常只能secure axi访问, 接口连接至CPU的FIQ中断; Group1通常只能

                                                                                 none_secure访问, 接口连接至CPU的IRQ中断。

    3)对multi-core和virtualized interrupt的支持。GIC400最多支持8核。

    GIC400实现的中断类型有:

    1) 16个software Generated Interrupts (SGIs);

        SGI并没有外部的中断输入信号,每个target cpu都可以通过配置寄存器GICD_SGIR来直接产生中断,最多16个,ID0--ID15。

    2) 6 external Private Periphaeral Interrupts (PPIs); 1 internal PPI

        每个target cpu都有这么一组PPI; 信号具体分为:Legacy IRQ signal/Legacy FIQ signal/Non-secure physical timer/Secure physical timer

                                                                        Virtual timer/Hypervisor timer/Virtual mainenance interrupt      

        所有的PPI interrupt只能是active-low触发。  通过外部引脚采样中断,nLEGACYIRQ[NUM_CPUS-1:0]、nLEAGCYFIQ[NUM_CPUS-1:0]、

                                                                    nCNTPNSIRQ[NUM_CPUS-1:0]、nCNTPSIRQ[NUM_CPUS-1:0];

                                                                    nCNTVIRQ[NUM_CPUS-1:0]、nCNTHPIRQ[NUM_CPUS-1:0]。

                            

    3) Configurable number of Shared Peripheral Interrupt (SPIs);

        由所有的CPU共享,最多支持480个中断源,以32为步进。

        每一个中断可以通过寄存器配置Group/Priority/target-cpu;通过配置寄存器GICD_IGROUPR/GICD_IPRIORITYR/GICD_ITARGETSR等。

        每个寄存器32位,共16个。通过外部pin IRQS[NUM_SPIS-1:0]来输入。

    GIC在Secure state支持32个level的Priority,在non_secure state最多支持16个level的Priority。当两个中断有相同的Priority时,按ID来选择,

                            越小的ID拥有越高的优先级(SGI,PPI,SPI的顺序)。在multi_core中,如果ID也相同,则按CPUID来排序,ID越小,优先级越高。

    GIC400默认如果最高优先级的interrupt在一个disable的group中,那么GIC不会再将任何的中断发送给CPU,所以ARM建议,

                            将Group0的优先级设置比Group1要高,这样不会因为non_secure的中断挂起而影响secure的中断。

    GIC400到CPU的中断signals有:

    1) Physical interrupts; nFIQCPU[NUM_CPUS-1:0];    nIRQCPU[NUM_CPUS-1:0];

    2) Virtual interrupts; nVFIQCPU[NUM_CPUS-1:0];   nVIRQCPU[NUM_CPUS-1:0];    

    两个唤醒信号:nFIQOUT[NUM_CPUS-1:0]; nIRQOUT[NUM_CPUS-1:0]。

    GIC400包含一个AXI4 slave接口,支持32bit的位宽, 来配置寄存器,寄存器主要分为4大类:

    1)Distributor registers; 主要设置寄存器的enable,mask,Priority,core,等 前缀:GICD_

                                      其中一些寄存器GICD_CTRL, GICD_IGROUPR只能在secure下来访问。

    2)CPU interface register; 主要设置寄存器的Priority mask, 从中断信号输入到相应CPU的propagated, 返回响应。

    3)还有两个virtual interrupt的register:不了解先不介绍。

  • 相关阅读:
    J2EE系列 (一) 几个技术规范
    MyEclipse 10 优化技巧
    J2EE (二) Servlet设置Session Cookies
    CSS 外层box自动计算高度的问题
    UI设计技巧Div封闭式Div导致页面显示异常
    Windows 7 IIS7 无法启动, 显示WAS & W3SVC没有启动的错误提示
    Windows 7 截图
    GridView技巧增加序号列
    ERWin & ERStudio图里的实线和虚线的含义
    [转]CSS布局口诀 CSS BUG顺口溜
  • 原文地址:https://www.cnblogs.com/-9-8/p/4735805.html
Copyright © 2011-2022 走看看