11

卢骏 · 2020年05月15日

ARM GIC(十四)gicv3架构-power控制详解

在带有gicv3的soc架构中,其框图如下所示:

1.png

gicv3中的redistributor与core中的cpu interface通过AXI-Stream进行通信。

一、connection

当core上电之后,需要将core中cpu interface与gic中的redistributor进行connect,这样将来gic才可以将中断发送给core。

connection的流程如下所示:

2.png

描述如下:

◾ 执行在core的程序,将GICR_WAKER.ProcessorSleep位给置低,表示要connect redistributor

◾ redistributor在完成connect之后,将GICR_WAKER.ChildrenAsleep位给置低,表示connect完成

◾ 执行在core的程序,查询GICR_WAKER.ChildAsleep位是否为0,如果不是,表示redistributor还没有完成connect操作,就继续查询

◾ 如果查询到0,表示connect完成,接着做之后的初始化工作

其汇编代码如下:

3.png

波形如下:

首先写GICR_WAKER寄存器,将ProcessorSleep位给置低。

4.png

然后读取GICR_WAKER寄存器,判断ChildAsleep位是否为0。在波形中,有读取到0,表示connect成功。

connect成功后,gic600会给cpu interface发送downstream包,设置vINTID,pINTID,RSS,DS这几个域。

5.png

downstream包,对于identifier为0,length为1的解释如下:
6.png

二、disconnection

当core下电之后,需要将core中cpu interface与gic中的redistributor进行disconnect,这样将来gic才不会将中断发送给core。

disconnection的流程如下所示:

7.png

描述如下:

◾ 执行在core的程序,先将cpu interface的中断组使能给disable

◾ 执行在core的程序,将GICR_WAKER.ProcessorSleep位给置高,表示要disconnect redistributor

◾ redistributor给cpu interface发送 Quiesce包

◾ cpu interface清掉内部所有pending的中断

◾ 清除完毕后,cpu interface回发Quiesce Acknowledge包给redistibutor

◾ redistributor收到cpu interface回发的响应之后,将GICR_WAKER.ChildrenAsleep位给置高,表示disconnect完成

◾ 执行在core的程序,查询GICR_WAKER.ChildAsleep位是否为1,如果不是,表示redistributor还没有完成connect操作,就继续查询

◾ 如果查询到1,表示disconnect完成

其汇编代码如下:

8.png

其波形如下:

首先写GICR_WAKER寄存器,将ProcessorSleep位给置高,表示要disconect。

9.png
然后读取GICR_WAKER寄存器,判断ChildAsleep位是否为0。在波形中,有读取到0,表示disconnect不成功,需要再次读取判断。
10.png

gic600给cpu interface发送Quiesce包。

11.png

cpu interface收到该命令包,完成内部的操作后,回发quiesce acknowledge响应包。
12.png

至此,完成了disconnect操作,此时再读取GICR_WAKER寄存器,ChildAsleep位就为1了
13.png

三、中断唤醒core

当core下电之后,gic就不再会给core发送中断。如果此时有一个中断是唤醒core的,那么其处理流程应该如何了?

在gicv3,为每一个redistributor,提供了WakeRequest输出信号。当GICR_WAKER的ProcessorSleep为1,此时外部有唤醒该core的中断请求,那么WakeRequest信号会被置高。

WakeRequest信号,会被连接到SCP或者PMU,也就是下图中的红色连线。当SCP或者PMU接收到WakeReqeust请求,就会将对应core给上电,然后core再connect redistributor,gic在将中断发送给该core,core再响应中断。
14.png

系列其他篇

原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。
推荐阅读
关注数
23584
内容数
1035
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息