TI中文支持网
TI专业的中文技术问题搜集分享网站

关于6678的sysbios问题

1、在bios下,设置一个硬件中断,但是事件是CIC里面的,我首先在cfg文件里面创建了一个中断,关于CIC到core中断的映射,不知道用什么语句来写,我就把CIC里面寄存器的地址写出来,去设置这些寄存器,使CIC中EDMA0的中断映射到了core中断4,我不知道这么设置对不对?设置寄存器的时候,需不需要解锁KICK0等?

2、还有一个问题是依旧是BIOS下,第一个核利用messageq向第二个核发送消息,第二个核根据消息内容来判断执行哪一步,类似于官方vlfft OK那个历程,但是总是卡在mode = msg->mode;,这一步不再往下进行,不知道问题出现在哪,也没报错

while(1)
{

status = MessageQ_get(messageQ, (MessageQ_Msg *)&msg, MessageQ_FOREVER);

mode = msg->mode;

if(mode == VLFFT_DO_NOTHING)
{
msg->mode = VLFFT_PROCESS_1stITER;//VLFFT_OK;

}

// 1st iteration processing
if(mode == VLFFT_PROCESS_1stITER)
{
#if ENABLE_VLFFT_PROCESSING
/******************************************************/
/* configure EDMA for 1st iteration of FFTs */
/******************************************************/
vlfftEdmaConfig_1stIter( &DMAparams);

ptrIn = inData;
ptrOut = workBufExternal;
VLFFT_1stIter( ptrIn, ptrOut, &VLFFTparams, &VLFFTbuffers, &DMAparams, coreNum);
#endif msg->mode = VLFFT_OK;
} // if(msg.mode == VLFFT_PROCESS_1stITER)

// 2nd iteration processing
if(mode == VLFFT_PROCESS_2ndITER)
{
/******************************************************/
/* configure EDMA for 2nd iteration of FFTs */
/******************************************************/
#if ENABLE_VLFFT_PROCESSING
vlfftEdmaConfig_2ndIter( &DMAparams);

ptrIn = workBufExternal;
ptrOut = outData;
VLFFT_2ndIter( ptrIn, ptrOut, &VLFFTparams, &VLFFTbuffers, &DMAparams, coreNum);
#endif
msg->mode = VLFFT_OK;
} // if(msg.mode == VLFFT_PROCESS_2ndITER)

if(mode == VLFFT_EXIT){
#ifdef ENABLE_PRINTF
System_printf("The test is complete!\n");
// System_printf("\n\n");
#endif
#ifdef ENABLE_SYSTEM_TRACE_LOGS
STMXport_logMsg(pSTMHandle, STM_CHAN_STATUS, "Test Complete\0");
#endif
System_exit(0);
}
/*********************************************/
/* send the message to the remote processor */
/*********************************************/

#if DEBUG_DISPLAY
System_printf( " Sending a message to core0\n" );
#endif
status = MessageQ_put(core0QueueId, (MessageQ_Msg)msg);
#if DEBUG_DISPLAY
if (status < 0) {
System_abort("MessageQ_put had a failure/error\n");
}
#endif

} // while(1)

}

Thomas Yang1:

1 CIC 出来是HOST EVENT,通过HOST EVENT会挂接到128个Core event上,core event然后会和interrupt关联。安装了processor SDK或者MCSDK后可以看下PDK中CIC相应的API函数和例子

2 mode = msg->mode;不是一个赋值语句么?不明白为什么会卡在这里,可以在汇编窗口单步跟踪看看

user4712072:

回复 Thomas Yang1:

首先感谢你的回复

1、关于第一个中断有点了解了。我在pdk6678下面的csl下面找到了cic中断,但是那个例子好像是裸机下,用到了中断向量表,我想在bios下设置CIC,那些api函数一样吗?

2、第二个问题我没有说明白,其实大概是如下:

core1:                                                                                           core2:

messageQ_put();                                                                     messageQ_get();

Semaphore_pend(sem);                                                           EVENT_send();(post核0中的那个sem)

然后我用Timestamp_get32()来测量核0中释放Semaphore_pend(sem); 需要多长时间。CCS仿真中时间用了13697个,而在板子上用仿真器跑了一下,时间很长,达到了325987612,不知道为什么出现这种情况,我用的是官方vlfft OK那个模板,算法是自己的

赞(0)
未经允许不得转载:TI中文支持网 » 关于6678的sysbios问题
分享到: 更多 (0)