用了CCS9.1 安装了 DSP BIOS 5.42.1.09;
运行一段时间后,出现一个问题:有一个任务的信号量变为45,理论上应该是0或1,请问一下,引起这个问题的原因会是什么?多谢!!
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.
用了CCS9.1 安装了 DSP BIOS 5.42.1.09;
运行一段时间后,出现一个问题:有一个任务的信号量变为45,理论上应该是0或1,请问一下,引起这个问题的原因会是什么?多谢!!
你好,
是一个用于与下位机通信的任务的信号量,我的工程中一共有三个任务,分别是:与下位机通信功能,与上位机通信功能以及SD卡存储操作,周期分别是2ms 2ms 4ms,出现问题的前一般进行SD卡读写操作,没有固定时间,出现问题后,只有与下位机通信的任务无法调度,其余俩个正常。还有就是SD卡操作的任务执行时间有时候会超过4ms,和这个有关系吗?调度逻辑如下:
while((0xFFFF != GenTaskInfoTable[cnt16_1].taskID))
{
if((0 == (sysTime % GenTaskInfoTable[cnt16_1].period))
&& (SEM_count(GenTaskInfoTable[cnt16_1].taskSEM) < 2))
{
SEM_post(GenTaskInfoTable[cnt16_1].taskSEM);
}
cnt16_1 ++;
}
出现问题的任务如下:
void TaskHardwareCommunicationRun(void)
{
while(1)
{
SEM_pend(&SEM_HardwareCommunication, SYS_FOREVER);
HardwareCommunicationProc();
}
}
出现问题时SEM_count(GenTaskInfoTable[cnt16_1].taskSEM的值为45,所以一直无法SEM_post,导致TaskHardwareCommunicationRun一直卡在SEM_pend,无法运行。