现象:
有时会发现os_idle_demon出现overflow,但实际不是os_idle_demon出现overflow而是其他task
原因:
当前task stack overflow。
处理办法:
in config中增加task stack
减少stack使用,用malloc申请memory
注意:
系统只会在SVC和PendSV handler中检查
原因:
当前ISR FIFO Queue buffer overflow。这是因为在中断处理函数中过多的发送message,设置信号量,设置event等。
处理办法:
中断处理函数运行速冻要快,不要调用长时间运行的函数。
不要在中断中过多发送message,信号量,event
减少中断触发频率。
如果task是混合任务模式(有相同优先级task同时有不同优先级的task)时,不能使能Round-Robin Task switching--->#define OS_ROBIN 0
原因:
mail box overflow,中断中发送的message,没有task在等待接收。
处理办法:
接收message的task不要长时间处理某个消息,要快速进入接收状态。
减少发送消息频率。
注意:
只会在PendSV Handler中检查。
原因:
Timer Callback Queue overflow。OS Timer callback没有及时处理,有新的timer到时间了。
处理办法:
Timer callback处理时间要短
减少同时的start的OS Timer。
周期性的OS timer,间隔不要设的过短。
注意:
sysTick handler中检查。