用了CCS9.1 安装了 DSP BIOS 5.42.1.09;
运行一段时间后,出现一个问题:有一个任务的信号量变为45,理论上应该是0或1,请问一下,引起这个问题的原因会是什么?多谢!!
Green Deng:
你好,请问具体是什么任务的信号量改变了?运行一段时间大概是多久?
user6441275:
回复 Green Deng:
你好,
是一个用于与下位机通信的任务的信号量,我的工程中一共有三个任务,分别是:与下位机通信功能,与上位机通信功能以及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,无法运行。
Green Deng:
回复 user6441275:
你好,我把你的问题升级到英文E2E论坛了,英文论坛的工程师对BIOS系统更专业,你可以跟一下这个帖子:
e2e.ti.com/…/940681
user6441275:
回复 Green Deng:
好的,万分感谢!!!
user6441275:
回复 Green Deng:
好的,十分感谢!
Green Deng:
回复 user6441275:
客气了,因为确实C2000很少有用BIOS的,所以我也不太熟悉。