关于pdk_C6678_1_0_0_17\packages\ti\csl\example目录下提供的cpintc的测试用例:
1、打开INTC模块CSL_intcOpen (&intcObj, 63, &vectId , NULL)时事件号为什么是63呢?查看手册,
63对应的中断事件是INTC0_OUT(3+8*n)7 Or INTC1_OUT(3+8*(n-4))7,这里的3+8*n和7分别代表什么意
思啊?
2、测试用例中,通过((CSL_CPINTC_RegsOvly)CSL_CP_INTC_0_REGS)->STATUS_SET_INDEX_REG = 3手动
触发了INTC0系统中断3,产生了INTC0_OUT(Event Number = 63)中断事件输出,而在打开INTC模块时将
中断事件号63与CPU中断向量4对应,因此产生CPU中断4。通过CSL_CPINTC_mapSystemIntrToChannel
(hnd, 3 , 3)将系统中断3映射到通道3,而通道3与主机中断3对应,因此产生了主机中断。这样理解正
确吗?
3、测试用例是通过手动触发产生中断,如果是由外部触发产生的中断呢?比如IPC中断,是否只需使能
NMIs和global中断,通过CSL_intcOpen将中断事件91(IPC_LOCAL)与某个CPU中断向量对应(例如中断向量
4),并使能中断事件91,就可响应中断呢?而无需设置什么系统中断与通道的映射关系,还有使能主机
中断呢?关于CPU中断、系统中断、通道、主机中断之间到底是个什么样的关系呢?感觉理解上有点混乱
4、关于IPC中断的触发,看手册上说只需将IPCGRx寄存器的最低位置1即可,那么寄存器的4-31位关于
SRCSx的设置有什么作用?在设置上有什么要求吗?
5、通过查看手册,CPU只能响应12种中断,好像以往的C6000系列都有默认映射,例如:好像中断14与15
是对应定时器0和1中断,那么C6678默认的中断映射关系是什么呢?
Bruce Chen1:
1.n= core number ; 7 表示 注释7,在表格后面
2.STATUS_SET_INDEX_REG = 3 产生 系统中断3;
CSL_CPINTC_mapSystemIntrToChannel(hnd, 3 , 3), 将系统中断3映射到CPINTC channel 3
CPINTC 产生 3号host interrupt 给 corepac INTC,产生 63 号事件,对应vector 3
3.
a. IPC 只需 设置corepac INTC,不需要CPINTC 参与;
INTC 和CPINTC 是两个 概念,CPINTC 是 chip-level,而INTC 是核里面的
b.系统中断 映射到 channel,再由channel 对应 host interrupt,
这些都是 一种称呼, 不必纠结,明白 处理 步骤就行
4.SRCSx 设置中断源,没有限制
请参考 INTC user guide 和 每个芯片的 datasheet以及 corepac 关于 INTC部分
Andy Yin:
回复 Bruce Chen1:
您好,
Q5: vector4~15没有默认的对应中断,需要根据应用需求映射。
user1931146:
回复 Andy Yin:
TMS320C66x DSP CorePac.pdf中关于C66x CorePac Events:
The events that are shown as available events are to the C66x CorePac for chip-level events.
查看C6678的芯片手册,event 91 是 IPC_LOCAL,应该也是chip-level events,怎么不需要CPINTC参与
呢?
能具体解释下CPINTC和INTC吗?哪些需要设置CPINTC?哪些需要设置INTC?能举例说说吗?
jun lu1:
下面的回答还是没有解释清楚呀,如果文档说清楚了,我们也不会问你们专家了啥。
jun lu1:
下面的回答还是没有解释清楚呀,如果文档说清楚了,我们也不会问你们专家了啥。
jun lu1:
下面的回答还是没有解释清楚呀,如果文档说清楚了,我们也不会问你们专家了啥。