|
发表于 2013-1-28 23:01:26
|
显示全部楼层
本帖最后由 ggchao 于 2013-1-29 19:43 编辑
k11254 发表于 2013-1-27 13:53
我原来移植一半的代码~,调试的时候老是卡在硬件出错中断那了,可能是汇编的某些原因把,就没继续了 ...
代码我简单看了一下,说说我的一点意见吧
1.首先建议使用MPC5534的移植范例的代码,那个里面的指令是VLE兼容的,只需要修改极少的部分,原因在于5604B有些寄存器设置不支持(吐槽下,5604B是POWERPC里面最入门的芯片之一了),具体修改那些,可以稍后交流;
2.void INTC_INTCInterruptHandler(void),这个函数应该使用OSExtIntISR来替代,原因在于5604B的中断跳转需要保存所有的寄存器,包括Non-volatile类型的
3.干掉OS_SAVE_CONTEXT_WITH_FPRS,不解释了
4.os_cpu_a.inc里面的保存和恢复寄存器组的宏需要简单修改,是删去会引起“程序执行错误中断”的部分
5.OSTickISR函数中去掉下面这一部分:
lis r11,OSIntNesting@ha # load OSIntNesting
lbz r3, OSIntNesting@l(r11)
addi r0, r3, 1
stb r0, OSIntNesting@l(r11) # OSIntNesting++
以及
lis r4, 0x0800 # load r4 with TSR[DIS] bit (0x08000000)
mtspr TSR,r4 # clear TSR[DIS] bit
将上面这两行代码替换为下面的内容
li r0, 0 # load r0 with 0x0000
lis r3, INTC_EOIR@ha # get the address of the INTC.EOIR Register ...
stw r0, INTC_EOIR@l(r3) # and clear the INTC.EOIR register
6.一个中断做tick和SC指令产生软中断我就不多说了,大家都懂得
7.剩下就是调试了,完成上述的几步基本就差不多了,另外,BSP里面的东西能不用就不用了吧,自己写基本的系统初始化函数比较好,而且里面有些东西是不能使用的。
8.GL HF ON POWERPC |
|