我使用LM3S6916,用的是zlg的移植。我发现在一个任务里面读取OSPrioCur读取出来,发现OSPrioCur的值不等于这个任务建立时的优先级。 然后我在OSTaskSwHook()函数里面做判断if(OSPrioCur == OSPrioHighRdy)。居然发现可以进入到这。OSTaskSwHook()是在 LDR R4, =OSPrioCur ; OSPrioCur = OSPrioHighRdy LDR R5, =OSPrioHighRdy LDRB R6, [R5] STRB R6, [R4]
LDR R4, =OSTCBCur ; OSTCBCur = OSTCBHighRdy; LDR R6, =OSTCBHighRdy LDR R6, [R6] STR R6, [R4] 这段代码之前调用的,也就是说OSPrioCur 和 OSPrioHighRdy相等也执行了任务切换。但是通过看OSIntExit()和OS_Sched()的代码可以知道:OSPrioCur 和 OSPrioHighRdy相等是不会进行任务切换的。 那么这只能说是移植出了问题吧? |