问题解决:星闪自动重启的问题
我有一个任务基本上充分占有cpu,然后在执行的过程中执行着执行着系统就直接重启了,找不明白原因,崩溃后就打一堆东西然后说不行。如下图所示,这个错误码应该对应的是访问了空指针。

我一开始怀疑是liteOS自带的看门狗的问题,因为持续执行同一个任务导致没有执行一些低优先级的任务,而喂狗好像就是藏在低优先级任务当中的。在idle_config.c当中

于是我在住主循环里面加入了一个主动喂狗,但是仍然没有改善。

这就真头晕了,短短1485秒,就已经系统重启了13次了,真神了。

又因为是偶发性问题,就只能打标志位来看看,发现出错问题都是在同一个位置,即B结束到C开始。该过程是在等待超时计时器出现中断设置标志位,以及接收定时器中断设置标志位,所以在这个过程当中出现了问题,表现为访问了空指针,本质上是一种并发问题,内存中的数据已经被清除了,但是寄存器的指针数据仍然指向这个空间来访问,就访问空区域了。

但是这个SDK的信号量有有点问题,直接调用小熊派自带的kernel文件夹提供的api会导致线程卡死,不清楚什么问题,只能用万能的delay了。

改成纯单线程无中断就可以了,真是如无必要,勿增实体。