Other Parts Discussed in Thread: SYSBIOS
Tool/software: TI-RTOS
I have ported existing project from DSP/BIOS into SYS/BIOS and I experience triggering of assert in stackchecking in Task_schedule() in Task.c module. Problem is that newTask handle is invalid pointer. Pointer value is one from 'ti_sysbios_knl_Task_Module_State_0_readyQ__A' but it is not address of any task in system.
After examining situation I found out that I can get round the problem if I dont use Task_setPri() function. Project is running stable without using Task_setPri function. (does not meet our timing requirements though)
I also tried to understand Task_schedule() method and placed the following procedure at the end:
static void taskTest()
{
// todo
UInt32 curSet;
void * readyQ;
void *curQ;
void *maxQ;
UInt maxbit;
UInt ptrSize;
UInt handleSize;
int i;
for (i = 0; i < 7; ++i) {
if (Task_module->curSet & (1 << i)) {
curSet = Task_module->curSet;
readyQ = Task_module->readyQ;
maxbit = Intrinsics_maxbit(Task_module->curSet);
maxQ = (Queue_Handle)((UInt8 *)(Task_module->readyQ) + (UInt)(i*(2*sizeof(Ptr))));
curQ = Task_module->curQ;
Assert_isTrue(!Queue_empty(maxQ), Task_A_badTimeout);
}
}
}
This new additional assert is triggered before assert for stacks.
System configuration:
CPU: 28377S
Compiler: 6.2.6
SYS/BIOS: v6.42.03.35
CGT: 3.30.6.67
Please give some advice what I could check.
