今天,我把杨屹的移植版本修改到自己的平台上,也算是检验一下自己对移植uCOS的理解和掌握程度。虽然其间繁琐的指针操作让我很头大,但最后还是比较顺利的调试通过了。
发现自己的板子都能做反面教材使了,基本上参考现成的板子画的,修改也不多。用的时候才发现问题好多啊,如果程序里有访问片外存储的代码,两个按键,部分数码管都不能正常工作。这些都是因为P2、P3除了用作IO口还具有其他功能,往往二者只能得其一,这些都是以后电路设计时要细细分析的。
虽然修改的地方不多,只是把堆栈生长方向改为向下,另外任务控制块中保存指向任务模拟栈栈顶的指针,与uCOS保持一致。后来我发现,这样改后在任务切换时现场的保护和恢复变得麻烦了许多。呃,杨屹的修改是有道理的。其实这些都是我们自己控制的,系统对任务模拟栈里放了些啥一无所知,因此我们也不用担心这些改动会对系统造成什么影响。