Other Parts Discussed in Thread: SYSBIOS
Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
大多数有关中断设置的问题都会发送到 wiki 页面、但我无法通过其唯一的帮助解决我的难题、因此需要社区建议。
我有 C6670。 我希望通过事件组合器接收次级中断。 两个相关的特殊事件是 EDMA3CC0 EMDMACC_GINT 和 PCIExpress_ERR_INT。 在 表7-39 CIC0事件输入-器件数据手册事件的 C66x CorePac 二次中断如所示
CIC 上的输入事件编号 系统中断 描述 36. EDMA3CC0 EDMACC_Gint EDMA3CC0 Gint 48. PCIExpress_ERR_INT 协议错误中断
两个事件都属于 CIC0事件。 据我了解、CIC 函数是将系统事件映射到通道、也称为主机中断。 看起来、负责此操作的 SYSBIOS 模块是 ti.SYSBIOS.family.c66.tci66xx.CpIntc。 据我所知、 有 CpIntc.sysInts 数组、其中包含与系统事件编号匹配的元素数量。 该数组的每个元件都配置 CIC 的特定输入、因此我必须调整 CpIntc.sysInts[36]和 CpIntc.sysInts[48]。 对吗?
假设正确、然后继续执行事件组合器。 在表7-38系统事件映射- C66x CorePac 主中断的数据手册中、我们看到:
事件编号中断事件 描述 56. CIC0_OUT0 中断控制器输出 57 CIC0_OUT1 中断控制器输出
CIC0有大约80个输出、但只有18个输出被路由到 Core0。 我想使用其中的2个。 据我了解、CIC 输出是主机中断的昵称。 那么 CIC0_OUT0 -该主机中断0、CIC0_OUT1 -主机中断1吗? 对吗?
假设是的、那么我必须将这两个事件路由到事件组合器、它们的编号应该是56、57。 因此、我会这样编码:
/*系统事件36 EMDACC0 */ CpIntc.sysInts[36].fxn ='&EDMA_ISR';/*我的 ISR */ CpIntc.sysInts[36].arg = 36; /*这是正确的吗? */ CpIntc.sysInts[36].hostInt = 0; /*通道/主机中断0,匹配 CIC0_OUT0 -是否正确?*/ CpIntc.sysInts[36].enable = true; //将主机中断映射到事件组合器*/ CpIntc.mapHostIntToEventCombinetmeta (CpIntc.sysInts[36].hostInts*); // CpIntx48 PCIe[sysInts.sysIntts.n ='&PCIe_ERR_ISR';/* My ISR */ CpIntc.sysInts[48].arg = 48; /*这是正确的吗? */ CpIntc.sysInts[48].hostInt = 1; /*通道/主机中断1,匹配 CIC0_OUT1 -正确吗?*/ CpIntc.sysIntts[48].enable = true; //将主机中断映射到事件组合器*/ CpIntc.mapHostIntToEventCombinerMeta (CpIntc.sysIntts[48].hostInt); // ISR = CpInter 0[056.iner*/ CpInteEvent_Combiner 0[0].Cf56].Cn.Cf56] ;*事件组合器= Cf56.Cn.Cf56.Cn.Cf56.Cn.Cn.eEvent_event_Cn.Cf56.Cn.Cn.Cn.Cf56.Cn.Cn.Cn.Cn.e=0[0_event_event_event_Cn. EventCombiner.event[57].arg = 57; EventCombiner.event[57].unmask = true; //EventCombiner.eventGroupHwiNum[0] = 7; EventCombiner.eventGroupHwiNum[1]= 8; EventCombiner.eventHwiNum[2]= 9;EventCombiner.eventGroupHwiNum[3] ;EventCombiner.EventCombiner.EventGroupHwiNum[2];
请评论、我的理解是否正确。
提前感谢。