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