打印
[DSP]

DSP开发的C6678的中断控制器

[复制链接]
1218|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 年轻的国王 于 2020-7-25 19:18 编辑

DSP开发的C6678的中断控制器
分两层,一层是每个core内部的中断控制器,这个叫interrupt controller,简写intc;一层是整个芯片的,属于芯片级的,在每个core的外面,这个叫chip-level interrupt controller,缩写CIC。

分两层其实两层功能也不同,这个不用细说,intc可以直接处理一些中断,这些是每个核都同样的,但是还有一些中断,如果有需要不能让所有的核都能看到,则这个时候就需要在所有的核外进行统一管理了,这个就是CIC。在C6678上,CIC可以进行中断映射,这个功能就可以将一些中断映射至希望接管的core上,而让其他核感知不到这个中断。对于C6678的CIC可以管控的中断一共最多可以有1024个,管控方式是可以将每个中断通过配置,映射至256个channel中的某一个,一个channel上可以同时映射多个中断,映射至同一个channel的中断,相互之间就是逻辑“或”的关系了,即如果其中任何一个中断产生,该channel均会上报中断;system events至channel映射完了之后,还不能完成中断的上报,还需要把这256个channel映射至host interrupt,host interrupt的数量最大也是256个。这个host interrupt的编号和CICx_OUTn是一一对应的,但是整个对应关系并不是从CIC0开始按序号一边编到最后的CICx,而是CIC分多个,每个CIC的OUT都是从OUT0开始编号。实际上CICx_OUTn到corepac的intc的输入,是定死的,如下图:


比如21行中的CIC0_OUT,对于core0来说,core0的intc的system event 21接的就是CIC0_OUT(32 + 0 + 11 * 0),即CIC0_OUT32啦,这个CIC0_OUT32是不可能让其他core来接管的;
同样,对于core1来说,core1 intc的system event 21接的就是CIC0_OUT(32 + 0 + 11 * 1),即CIC0_OUT43,这个CIC0_OUT43同样也只能由core1接管,不可能让其他core来接管CIC0_OUT43。其他类推。

因此对于从CIC的输入,到最后core可以处理的整个流程,有3个环节决定CIC的输入最终由哪个core来处理,这3个环节分别是:

1、  system interrupt到channel的map

2、  channel到host interrupt的map

3、  host interrupt到corepac intc的连接

之所以最后一个叫连接,而不叫map,是因为这个level上确实不存在什么map不map,而是直接连死的,如上面图下的分析。而前面的两个map中,真正算的上map的只能有1个,就是第一个,system interrupt到channel的map,因为这个level是可以配置的,可以随意配置,而第二个map,即channel到host interrupt的map实际上是硬件固定的,但是有一个map状态寄存器可以查询。第三个也是硬件固定的,貌似跟第二个差不多,但是不叫map,至于原因,是因为这个level上连像第二级的映射查询都没有。

因此,需要将system interrupt配置至要处理的core能正确感知的话,主要是配置level1,即system interrupt到channel的map,而且需要根据level2和level3的关系来确定level1的配置,比如有一个CIC上连的中断,如果我们希望这个中断由core0来接管的话,那么先确认core0可以相应那些CICx_OUTn,然后确认这个OUTn的host interrupt编号,此时便可以确认map到该host interrupt的是哪个channel了,再然后,将core0要接管的这个CIC中断map到对应的channel上即可,最后还需要几个使能,包含CIC输入的使能、host interrupt的使能,以及intc对应的event使能。当然,并非所有的CIC上的中断都可以由core0来接管,因为可以映射到core0的中断实际仅仅局限于CIC0上的,具体限制如下图所示:


676275f1c14e586f7f.png (273.22 KB )

676275f1c14e586f7f.png

205755f1c14e777c29.png (273.22 KB )

205755f1c14e777c29.png

使用特权

评论回复

相关帖子

沙发
zhangmangui| | 2020-7-25 19:44 | 只看该作者
感谢分享  这个多核还是比较复杂的

使用特权

评论回复
板凳
zhangmangui| | 2020-7-25 19:44 | 只看该作者
很多应用中其实只用这个一个核

使用特权

评论回复
评论
年轻的国王 2020-7-25 21:19 回复TA
谢谢 
地板
年轻的国王|  楼主 | 2020-7-25 21:20 | 只看该作者
https://bbs.21ic.com/icview-2990086-1-1.html

使用特权

评论回复
5
zhangmangui| | 2020-7-27 21:19 | 只看该作者
年轻的国王 发表于 2020-7-25 21:20
https://bbs.21ic.com/icview-2990086-1-1.html

楼主多分享多核的应用哈

使用特权

评论回复
6
cooldog123pp| | 2020-7-27 21:38 | 只看该作者
工作到现在感觉就是会用DSP的都是大神,小弟路过还是膜拜一下大神。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都要开心呀

210

主题

505

帖子

4

粉丝