ARM的中断

Exynos4412采用GIC中断控制器,主要是因为Contex-A9 是多核处理器,GIC(Generic Interrupt Controller)通用中断控制器用来选择使用哪个CPU接口,具体主要有两个功能:
1)分配器:设置一个开关,是否接收外部中断源;为该中断源选择CPU接口;
2)CPU接口:设置一个开发,是否接受该中断源请求;
Exynos4412中断控制器包括160(0~159)个中断控制源,这些中断源来自软中断(SGI),私有外部中断(PPI),公共外部中断(SPI)。
信号流图和模块控制寄存器图:
这里写图片描述
图中相关的寄存器:
node:
1. xxxxn代表该寄存器由多个内存组成并非一个32为寄存器。
2. CPUn代表该寄存器控制的是对应的CPUn,而非所有CPU公有.

● GIC中断控制器(常用寄存器的的解释):
● 1.ICCICR_CPUn:全局允许通过CPU接口发送中断信号给处理器(每个CPU接口都需要被使能)
● 2.ICCPMR_CPUn:设置对应CPU优先级屏蔽门限,该寄存器提供中断优先级过滤器。 只有具有比该寄存器中的值高的优先级的中断才能被发送到处理器(每个CPU接口都拥有一个中断门限寄存器)
● 3.ICCIARn_CPUn:低10位为只读位,通过此位可以获取对应CPU当前发生中断的中断号
● 4.ICCEOIRn_CPUn:低10位为只写位,将处理完的中断ID填写上去通知对应CPU中断已经处理完毕,方可允许下一个中断进入CPU。
● 5.ICDISERn_CPUn(小开关):ICDISER为GIC支持的每个中断提供一个置位使能位。 将“1”写入置1使能位允许将相应的中断转发到CPU接口。 读取一个位标识中断是否使能。 这些寄存器在GIC的所有配置中都可用。(ID号是从0-159开始的)(每个CPU都有一组使能寄存器)
● 6.ICDDCR:全局使能监视外设中断信号并转发待处理中断到CPU接口。
● 7.ICDICPRn_CPUn:清GIC上中断标志位(发生中断之后不会被清零需要手动清零),置一清中断
● 8.ICDIPTRn_CPUn:(中断分发):哪一位被置一就代表某个中断源可以被分发给该CPU
编码步骤:
初始化:即初始化图1寄存器
中断服务程序:通过对应寄存器获取中断号,进入服务程序是将外设控制器和GIC的PEND位清标志位(大多数都是将寄存器中对应位写一),服务程序返回前将ICCEOIRn_CPUn对应位置位。

示例代码(exynos 4412开发板 参照exynos 4412

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值