1、问题描述
CORE2 的任务运行次数的计数值OsTask_100ms_Core2 - task_cnt[12]、OsTask_50ms_Core2 - task_cnt[16]不在累加,但是其他任务OsAlarm_1ms_Core2、OsAlarm_5ms_Core2、OsAlarm_10ms_Core2、OsAlarm_20ms_Core2 任务计数值累加正常。
- 如果是任务栈溢出,那么会导致进入TRAP,进入TRAP后CORE2会卡死不在运行,那CORE2所有的任务都不在运行。但是目前只有100/50MS的任务不执行,所以排除任务栈溢出。
- OsTask_50ms_Core2 TASK中调用的函数进入了死循环,导致任务一直处于激活状态。当任务一直处于激活状态时,下一次任务定时时间到之后,将不响应此次任务调度。
- OsAlarm_1ms_Core2、OsAlarm_5ms_Core2、OsAlarm_10ms_Core2、OsAlarm_20ms_Core2任务优先级比OsTask_100ms_Core2、OsTask_50ms_Core2任务优先级高,当高优先级的任务运行时间过长导致长时间占用,也会导致低优先级的任务不能正常执行调度。
2、排查步骤
1)查看全局变量Os_SCB,观测Os_SCB.sysRunningTaskID变化:会出现Os_SCB.sysRunningTaskID = 4的情况;