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

AWR1642 srrdemo_16xx_mss例程中task跳转问题

   在 AWR1642 srrdemo_16xx_mss例程中,task优先级为6的SRR_MSS_mmWaveCtrlTask一直在循环执行,程序是怎么跳转到MmwDemo_mboxReadTask的?

Annie Liu:

执行任何基于事件的任务,大多数都会在信号量上被阻止。

SRR_MSS_mmWaveCtrlTask-> MMWave_execute() ->

/* Pending on the semaphore: Waiting for events to be received */
SemaphoreP_pend (ptrMMWaveMCB->linkSemHandle, SemaphoreP_WAIT_FOREVER);

如果是mmwDemo_mboxReadTask,则在'gSrrMSSMCB.mboxSemHandle'信号量上将其阻止:

Semaphore_pend(gSrrMSSMCB.mboxSemHandle, BIOS_WAIT_FOREVER);

因此,当此信号量从邮箱中断中发出时,上面的代码行将被解除阻塞,并且控件将继续执行mboxReadTask中的进一步任务。

请问是否在客户端不继续读取mboxReadTask中的邮箱数据?

user6124565:

回复 Annie Liu:

感谢您的回复,我还有一个问题

在SYS/BIOS中,一个低优先级的task里发布了一个高优先级的task,这个高优先级task是creat完就立即执行?

还是等低优先级task所有语句运行完后才执行?

例如在srrdemo_16xx_mss例程中,SRR_MSS_initTask优先级为3,

在task最后有:

Task_create(SRR_MSS_mmWaveCtrlTask, &taskParams, NULL);
    /*****************************************************************************     * Setup the CLI     *****************************************************************************/    SRR_MSS_CLIInit ();
其运行顺序是立即执行SRR_MSS_mmWaveCtrlTask还是先执行SRR_MSS_CLIInit ()?

Annie Liu:

回复 user6124565:

我不确定以高优先级调用Task_create时任务切换的确切时间。

建议您可以在最后进行实验,在SRR_MSS_mmWaveCtrlTask和SRR_MSS_CLIInit函数中设置标记,看哪个先执行。

或者,您可以为任务设置“ HOOK FUNCTIONS”(挂钩功能),然后根据“钩子命中”来确定它是否已切换到另一个任务。同时,尝试在SysBios论坛中搜索类似的问题。

赞(0)
未经允许不得转载:TI中文支持网 » AWR1642 srrdemo_16xx_mss例程中task跳转问题
分享到: 更多 (0)