今天leader让我调FreeRTOS系统;
现象是:task1运行后,接着运行task2,然后就挂了;
leader怀疑可能是任务保存与恢复有问题;
经过一番折腾后,已经确认任务保存与恢复没有问题,但以自己的经验来说,当任务优先级一样的时候,应该是轮训,但执行完task1和task2后,就一直在task2转;
开始怀疑是vTaskSwitchContext()函数中的taskSELECT_HIGHEST_PRIORITY_TASK()有问题,于是就仔细查看taskSELECT_HIGHEST_PRIORITY_TASK函数做了些什么。。。。。甚至想过要重写taskSELECT_HIGHEST_PRIORITY_TASK()函数
后来leader提示了一下,才想明白,任务先switch一遍后在Scheduler,然后再switch。。。。。
才知道自己刚刚的想法好幼稚,居然怀疑别人写的os有问题,那么多人有,要是有问题,早就改了。肯定是自己的操作不对,改加的函数没有加。FreeRTOS都没理解就开始调程序。。。
分析问题的思路不对,以后可要注意啊。。。