问题描述
- cortex m3移植uC/OS后程序运行一段时间停止或者跑飞
- 鄙人最近需要在Atmel sam3x8e开发板上移植uC/OS操作系统,移植成功之后发现系统运行一段时间后总是会跑飞或者停止。经调试发现在pendsv处理任务切换的中断服务函数的BX LR这一条汇编语句之前是好的,但是执行了这个语句之后发现程序停止运行或者不知道跑哪去了。需要注意的是是在系统正常运行一段时间之后才会发生上述情况。由于不能单步调试,所以最后也不知道程序最终bx到哪执行去了,求大神指点,万分感谢!!!
程序代码如下:
.thumb_func
OSPendSV:CPSID I MRS R0PSP CBZ R0OSPendSV_nosave SUBS R0R0#0x20 STM R0{R4-R11} LDR R4=OSTCBCur LDR R4[R4] STR R0[R4]
OSPendSV_nosave:
PUSH {R14} LDR R0=OSTaskSwHook BLX R0 POP {R14} LDR R4=OSPrioCur LDR R5=OSPrioHighRdy LDRB R6[R5] STRB R6[R4] LDR R4=OSTCBCur LDR R5=OSTCBHighRdy LDR R6[R5] STR R6[R4] LDR R0[R6] LDM R0{R4-R11} ADDS R0R0#0x20 MSR PSPR0 PUSH {R0R1R14} MOV R0#3 LDR R1=testfunc BLX R1 POP {R0R1R14} MOV LR#0xFFFFFFFD CPSIE I BX LR
.END
时间: 2024-11-03 21:51:18