cortex A9 GIC


分析一下GIC SPI工作原理

spi(公用外设中断)产生后,ICD(中断分配器)将interrupt ID和interrupt 优先级 存到相应的寄存器,根据interrupt 优先级 由高到低的送到cpu interface,CPU从ICCIAR寄存器中读取CPUID(在ICCICR_CPU寄存器中设置CPU使能、ICCPMR_CPU寄存器中设置CPU interface 优先级)和interrupt ID(通过在GPIO接口中查得中断源,随即查得interrupt ID再在ICDISER_CPU中设置使能,在ICDIPR_CPU中设置interrupt 优先级),读取一次后ICCIAR寄存器中断状态由pending变为active,说明CPU正在响应该中断,响应结束后,CPU读取ICCEOR_CPU寄存器中断状态由active变为inactive,说明响应结束。


下面介绍下ICC和ICD中用到的寄存器:

ICCICR 设置使能CPU接口(选择CPU)

ICCPMR_CPU 设置CPU接口的优先级

ICCBPR_CPU 设置组优先级和子优先级的位数(0-7)(组优先级为抢占的优先级(和不同中断去比较),子优先级(和CPU接口优先级去比较(注意子优先级有几位就和CPU优先级的低几位去比较)))

ICCIAR_CPU CPU开始响应中断(CPU读取GIC,中断状态由pending->active),该寄存器只能读一次(ICCHPIR可以读无数次)

ICCEOIR_CPU CPU响应结束 ,中断状态由active->inactive

ICDDCR 使能分配器

ICDISER 使能相应的中断源

 ICDIPR_CPU 设置中断优先级 




注意:重启开发板,进入reset模式,会把cpsr 中断位关闭了 要写上_asm__volatile_("cpsie i\n")


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值