器件型号:TI-RTOS
工具/软件:TI-RTOS
我已经将现有项目从 DSP/BIOS 移植到 SYS/BIOS 中、并且在 Task.c 模块的 Task_schedule()中的堆栈检查中遇到了断言的触发。 问题是新任务句柄是无效的指针。 指针值是'ti_SysBIOS_KNL_Task_Module_State_0_readyQ__A'中的一个值、但它不是系统中任何任务的地址。
在研究情况后、我发现如果我不使用 Task_setPri ()函数、我可以解决这个问题。 在不使用 Task_setPri 函数的情况下、项目运行稳定。 (但不符合我们的时序要求)
我还尝试理解 Task_schedule()方法,并将以下过程放在末尾:
静态空 taskTest()
{
//待办事项
uint32 curSet;
void * readyQ;
void *curQ;
void * MaxQ;
UINT maxbit;
UINT ptrSize;
UINT 手柄大小;
int i;
对于(I = 0;I < 7;+I){
if (Task_module->curSet &(1 << i)){
curSet = Task_module->curSet;
readyQ = Task_module->readyQ;
maxbit =内在函数_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);
}
}
这个新的附加断言在栈的断言之前被触发。
系统配置:
CPU:28377S
编译器:6.2.6
SYS/BIOS:v6.42.03.35
CGT:3.36.67
请提供一些我可以检查的建议。
