找到一个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应该也是没有问题的。
文章评论(0条评论)
登录后参与讨论