原创 UC/OS II 在AC32上跑成功了

2009-3-18 12:56 2080 16 10 分类: MCU/ 嵌入式

找到一个UC/OS II 在S08QE128上的移植代码。准备在这个基础上移植到AC32上运行。


QE128 有8K RAM 128K FLASH ,资源方面比AC32要多不少。FLASH 需要采用分页模式访问。


昨天晚上下了FREESCALE关于存储器分页的介绍,大致弄明白是怎么回事了。


codewarrier直接支持分页模式的编译。写在不同页中的代码使用CALL指令调用。在AC32中只要有codewarrior中设置编译模式为小模式,不需要改动代码就能用。


将cw中将CPU改成AC32后,编译出错。有几个寄存器名定义QE和AC不一样,改过来后编码通过。烧到板子上运行。不成功。


一开始认为是OSTickISR 中断弄得不对。 反复调整RTI中的设置后没有什么改变。


将OSTickISR中断改为使用定时器1的溢出中断。情况还是一样。


使用BDM单步执行,执行到OS_TASKSW时程序跑飞。很奇怪的是OS_TASKSW是一个宏定义,其实就是一条SWI指令。但软件中断对应的中断服务程序是一个空程序。中断向量表中软中断没有挂上。挂上后不跑飞了。但程序仍然没有正确运行。


将OSTickISR 第一行增加一个清除溢出中断标记的指令后,程序能正常执行了。


看样子如果OSTickISR 使用RTI应该也是没有问题的。


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
16
关闭 站长推荐上一条 /3 下一条