很轻松的在44b0的平台上完成了uCOSII+LwIP的移植,回过头来有了在LPC2200上实现的想法。可是这里并不顺利。。。
说实话,我对ZLG并不反感,对NXP的片子印象还算好,之前也当单片机的用过,也跑过ZLG的uCOS(完全是ZLG封好的那个)。也看了看两个任务来回的跑。但是总觉得缺点什么,毕竟不是自己弄上去的。很多底层的东西都是ZLG封起来的,而且看着也费劲。
uCOSII的学习总不能就是拿着ZLG的板子直接写应用吧?
说实话,NXP把中断机制封装的很好,但是这也给应用带来了很多不便,很多通用的接口到了这里都需要改进。周公的代码把各个中断的入口都单独作为汇编写了一堆,我觉得没有必要,所以就开始了自己移植的过程。
花了大约4天的时间吧,终于把我的uCOSII跑了起来,总算拜托了ZLG的那个模板了!心情真是不错,哈哈!
说实话,这几天主要是绕在了中断的处理上,最后我才用了与44B0统一的方法处理中断入口:
IsrIRQ
SUB SP, SP, #4
STMFD SP!,{R0}
LDR R0, VicAddr
LDR R0, [R0]
STR R0, [SP, #4] ; 将对应的中断函数首地址入栈保护
LDMFD SP!,{R0, PC} ; 将中断函数的首地址放入PC中
VicAddr
DCD VICVectAddr
IsrIRQEnd
这样程序直接跳转到中断服务程序,中断服务程序必须用__irq声明!
这样的好处是在OS中那个系统时钟可以直接设置到中断中来,不必要重新再写代码处理了,一个入口管理全部中断了!
最后,我的中断全部是向量的,我不清楚向量中断与非向量中断有什么区别,不过NXP的好像用向量中断方便一些,便于统一管理了。
https://static.assets-stash.eet-china.com/album/old-resources/2009/6/26/b176119d-fcf9-43ea-87e8-c803f7fa0d09.rar
【2008-05-28 】
文章评论(0条评论)
登录后参与讨论