呵呵,已经成功移植了。原来是我所使用的CodeWarrior6.1和以前的板本不一样。 现象描述如下: 移植的时候,在OSStartHighRdy函数中得到的最高优先级指针OSTCBHighRdy始终错误,查找原因后发现在OSPrioHighRdy = OSFindHighPrio();这条指令中,OSFindHighPrio()的返回值放在A寄存器中,可OSPrioHighRdy 却从X中取值,一直郁闷不知道原因,甚至怀疑CodeWarrior6.1有Bug。 后来发现在编译时,CodeWarrior6有一些告警与函数OSFindHighPrio()有关,具体告警是:OSFindHighPrio()没用声明。后来在OS_HEAD.H中将所有没用声明的函数全部声明,调试后就OK了。 从此,得出一个结论:一是要仔细,二是对编译器的告警信号也不能掉以轻心,虽然没用报错,可以正常编译,但这些告警信号或许是对一些困扰的提示。 |