This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于TMS320C6678论坛例程Keystone1_Memory的一些疑问

Other Parts Discussed in Thread: TMS320C6678

你好:
最近在看6678芯片DDR3方面的东西,在官方论坛www.deyisupport.com/.../2622.aspx中 提供的
Keystone1_Memory.7z的三个工程中,关于Memory_Sharing这个工程有些疑问:
1.工程MEM_share_EDMA_Timer_Intc_setup.c源文件中函数:
void CP_INTC_Init_EDMA(void)
{
TDSP_Board_Type DSP_Board_Type;
/* Disable Global host interrupts. */
cpIntc0Regs->GLOBAL_ENABLE_HINT_REG= 0;
DSP_Board_Type= KeyStone_Get_dsp_board_type();
if(C6670_EVM==DSP_Board_Type
||DUAL_NYQUIST_EVM==DSP_Board_Type
||TCI6614_EVM==DSP_Board_Type)
{
uiEdma_host_event_num[0]= 74;
uiEdma_host_event_num[1]= 84;
uiEdma_host_event_num[2]= 94;
/*map EDMA0, 1, 2 GINT interrupts events (36, 6, 22) to INTC0 out74, 84, 94*/
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(36)]= 74;
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(6)]= 84;
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(22)]= 94;
/*enable INTC out74, 84, 94*/
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 74;
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 84;
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 94;
}
else if(C6678_EVM==DSP_Board_Type)
{
               uiEdma_host_event_num[0]= 44;
uiEdma_host_event_num[1]= 55;
uiEdma_host_event_num[2]= 66;
第一步:
/*map EDMA0, 1, 2 GINT interrupts events (36, 6, 22) to INTC0 out44, 55, 66*/
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(36)]= 44;
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(6)]= 55;
cpIntc0Regs->CH_MAP[SWAP_ENDIAN(22)]= 66;
第二步:
/*enable INTC out44, 55, 66*/
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 44;
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 55;
cpIntc0Regs->HINT_ENABLE_SET_INDEX_REG= 66;
}
else
{
puts("Unknown DSP board type!");
return;
}
第三步:
/*clear EDMA0, 1, 2 GINT interrupts events (36, 6, 22)*/
cpIntc0Regs->STATUS_CLR_INDEX_REG= 6; 
cpIntc0Regs->STATUS_CLR_INDEX_REG= 22; 
cpIntc0Regs->STATUS_CLR_INDEX_REG= 36; 
第四步:
/*enable EDMA0, 1, 2 GINT interrupts events (36, 6, 22)*/
cpIntc0Regs->ENABLE_SET_INDEX_REG= 6;
cpIntc0Regs->ENABLE_SET_INDEX_REG= 22;
cpIntc0Regs->ENABLE_SET_INDEX_REG= 36;
第五步:
/* Enable Global host interrupts. */
cpIntc0Regs->GLOBAL_ENABLE_HINT_REG= 1;
}
程序中标红部分,数组中依次写值44/55/66,这三个数的来源是什么,与EDMA0, 1, 2 GINT interrupts events (36, 6, 22)的什么关系?是随意写的吗?还是有什么规则?有规则的话出处在哪?
2.工程MEM_share_EDMA_Timer_Intc_setup.c源文件中函数:
void EDMA_Timer_Interrupts_Init(void)
{
/*on Nyquist, INTC0 out74, out84, out94 event number are 22 on core 1, 2, 3
on Shannon, INTC0 out44, out55, out66 event number are 22 on core 1, 2, 3
map this event 22 to INT8 */
CGEM_regs->INTMUX2 = 22<<CSL_CGEM_INTMUX2_INTSEL8_SHIFT;

//map timer interrupt to INT14
CGEM_regs->INTMUX3 = CSL_GEM_TINTLN<<CSL_CGEM_INTMUX3_INTSEL14_SHIFT;

 /*Clear all DSP core events*/
CGEM_regs->EVTCLR[0]=  0xFFFFFFFF;
CGEM_regs->EVTCLR[1]=  0xFFFFFFFF;
CGEM_regs->EVTCLR[2]=  0xFFFFFFFF;
CGEM_regs->EVTCLR[3]=  0xFFFFFFFF;

//clear DSP core interrupt flag
ICR= IFR;

//enable INT8, 14
IER = 3|(1<<8)|(1<<14);

/*Interrupt Service Table Pointer to begining of LL2 memory*/
ISTP= 0x800000;

//enable GIE
TSR = TSR|1;
}
函数中标红部分将事件22映射到INT8,查看对应PDF文档TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual中7.9.1的Table7-38,截图如下:
对应其中22,我想知道CIC0_OUT(32+1+11*n) (7) Or CIC1_OUT(32+1+11*(n-4)) (7) 中n是什么意思?INTC0 out44, out55, out66这三个out与事件22是怎么样一种关系呢?是如何连接或者映射到一起的呢?映射机制出处在哪?

疑问较多,麻烦TI工程师了,请不吝解疑。
非常感谢!