如何做好商务网站的运营怎么做,wordpress淘宝客推广插件,wordpress虚拟商品插件,明港网站建设公司volatile#xff1a;易变的#xff0c;防止系统优化对寄存器做处理的时候使用#xff0c;在进行写1清零操作时#xff0c;防止该操作被系统优化#xff1b;一、GIC通用中断控制器1.GIC通用中断控制器GIC接收众多外部中断#xff0c;然后对其进行处理#xff0c;最终通过…
volatile易变的防止系统优化对寄存器做处理的时候使用在进行写1清零操作时防止该操作被系统优化
一、GIC通用中断控制器1.GIC通用中断控制器 GIC接收众多外部中断然后对其进行处理最终通过VFIQ、VIRQ、FIQ 和 IRQ给内核这四个 信号的含义如下 VFIQ:虚拟快速 FIQ。 VIRQ:虚拟 IRQ。 FIQ:快速中断 IRQ。 IRQ:中断 IRQ。2GIC中断分类SPI(Shared Peripheral Interrupt),共享中断 (注意不是 SPI 总线那个中断)这类中断泛指所有的 外设中断PPI(Private Peripheral Interrupt)私有中断我们说了 GIC 是支持多核的每个核肯定有自己独有 的中断。这些独有的中断肯定是要指定的核心处理因此这些中断就叫做私有中断 SGI(Software-generated Interrupt)软件中断由软件触发引起的中断通过向寄存器GICD_SGIR 写入数据来触发系统会使用 SGI 中断来完成多核之间的通信。中断优先级数字越小优先级越高3GIC组成 由分发器 1个、cPU接口几核就几个1分发器全局中断使能控制控制每一个中断的使能或者关闭设置每个中断的优先级设置每个中断的目标处理器列表设置每个外部中断的触发模式电平触发或边沿触发设置每个中 断属于组 0 还是组 12CPU接口使能或者关闭发送到 CPU Core 的中断请求信号应答中断通知中断处理完成设置优先级掩码通过掩码来设 置哪些中断不需要上报给 CPU Core定义抢占策略当多个中断到来的时候选择优先级最高的 中断通知给 CPU Core4.协处理器1总共由16个cp0~cp15其中最常使用的cp15cp10cp11浮点型运算5.cp151作用获取GIC的基地址CBARMMU的配置使能/禁用SCTLRcache的配置监控系统性能配置中断控制器优先级、分组、使能/禁用VBAR设置中断向量表基地址访问寄存器mrc读、mcr写获取或结束中断IAR、EOIR2mrc将从cp15里面读出来放寄存器里面
MRC{cond} p15, opc1, Rt, CRn, CRm, opc2
mcr把寄存器里面的东西往cp15里面写MCR{cond} p15, opc1, Rt, CRn, CRm, opc2简单总结一下通过 MIDR 寄存器可以获取到处理器内核信息通过 SCTLR 寄存器可以使能或禁止 MMU、I/D Cache 等通过 VBAR 寄存器可以设置中断向量偏移通过CBAR 寄存器可以获取 GIC 基地址。二、外部中断1.设置GIC 1读取SCTLR将V位置0软件可以通过 VBAR来重新映射这个基地址I位置1I cache使能 2通过GIC查询当前中断ID先获取GIC基地址CBAR对其进行偏移IAR获得中断ID然后进入中断处理函数2.中断服务函数 1中断初始化重新定位异常向量表的位置到0x87800000并且调用GIC_Init函数2对于GPIO1-ICR2(触发方式)、GPIO1-IMR该中断使能在中断源初始化进行配置
4中断服务函数
注意先要在相对应的中断源的初始化函数里面注册在中断向量数组中例子注册完中断之后中断发生就会调用中断服务函数
内敛函数INLINE定义被放在头文件中三、OCP原则1.OCP开闭原则对程序代码的添加是开放的对程序的修改是关闭的2.基于OCP原则对代码的修改 应用于中断服务函数的处理