【ARM系列】GIC MultiChip中的SPI 操作

前言

在有多个chip或soc组成的multichip系统中,为了支持中断在多chip间的路由传输,需要将spi中断的空间进行划分,为每个chip或soc分配合适的spi中断范围。multichip operation的配置请参考系列的另一篇文章:GIC700 Multichip operation,本文只针对spi的操作事项进行说明,配置细节不再进行赘述。

操作说明

1.在完成multi operation后,各chip或soc之间的gic的连接关系和spi中断的划分就已经明确。可以在相连的chip或soc中选择任一个对spi进行编程,chip或soc之间的通信是通过各chip或soc之间的cross_chip interface进行的。

2.spi中断在各个chip或soc之间的路由可以通过配置GICD_IROUTERn寄存器实现,remote chip可以通过其中的Affinity2或Affinity3指定。可以通过GICD_CFGID.AFSL的值判断是选用哪个affinity level。

在这里插入图片描述

GICD_IROUTERn寄存器如图所示,通常情况:
Aff3用于指定哪个chip
Aff2用于指定哪个cluster
Aff1用于指定哪个core
Aff0用于指定哪个thread

3.可以通过配置GICD_SETSPI_NSR/GICD_SETSPI_SR或GICD_CLRSPI_NSR/GICD_CLRSPI_SR将spi中断挂起或清除。为了更高效的操作,建议在拥有该spi的chip或soc进行编程

4.SPI Collator wires连接在每个chip或soc的最低的SPI上。
举例:GICD_CHIPx.SPI_BLOCK_MIN = 4,那么该Chip x的SPI Collator所驱动的SPI INTID应该从160开始,(4 x 32) + 32 = 160。在一个相同的2-chip系统中,每一个chip或soc所驱动的spi wires不应该大于16 x (SPI blocks)。(没有太明白,为甚不是32?)

5.对 1-N 模式 SPI 中断的支持。有些GIC IP是不支持1-N模式的spi中断进行跨die的,需要查看IP feature进行确认。

特别说明

以GIC600为例,该IP共支持960个spi中断,在一个相同的2-chip系统中,假设通过CrossChip配置每个chip的spi都为480根,每个spi block包含32个spi中断,那么每个chip的spi block的数量都为15个,根据上面第4点的要求,每个chip通过spi collator所驱动的spi不能超过16x(15+15) = 480。那么此时就需要注意了,由于单个chip最大可以支持960个spi中断,在配置CrossChip后,每个chip最大只能支持480个,大于480的中断是无法进行处理的,因此在进行中断规划时要特别注意,需要将单个chip的中断合并在480个之内,防止中断无法处理。

gic stream协议是一种基于AXI-stream协议的通信协议,用于在gic的IRI组件(interrupt routing infrastructure)和cpu interface之间传输信息。IRI组件包括distributor、redistributor和ITS。在gicv3,IRI组件与cpu interface之间使用AXI-stream协议传输信息,通过包的组合实现gic操作断管理。此外,gicv3还引入了一种新的断类型,称为消息断。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ARM_GIC3/4](https://blog.csdn.net/wangwangmoon_light/article/details/122006746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [undefined](undefined)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【转】ARM GIC系列(四):gicv3架构-gic stream协议](https://blog.csdn.net/weixin_45264425/article/details/128364816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值