nickli814 2014-08-13 09:09
浏览 1151

cortex m3移植uC/OS后程序运行一段时间停止或者跑飞

鄙人最近需要在Atmel sam3x8e开发板上移植uC/OS操作系统,移植成功之后发现系统运行一段时间后总是会跑飞或者停止。经调试发现在pendsv处理任务切换的中断服务函数的BX LR这一条汇编语句之前是好的,但是执行了这个语句之后发现程序停止运行或者不知道跑哪去了。需要注意的是是在系统正常运行一段时间之后才会发生上述情况。由于不能单步调试,所以最后也不知道程序最终bx到哪执行去了,求大神指点,万分感谢!!!

程序代码如下:

.thumb_func
OSPendSV:

    CPSID   I
    MRS     R0,PSP
    CBZ     R0,OSPendSV_nosave

    SUBS        R0,R0,#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    R0,R0,#0x20
    MSR     PSP,R0

    PUSH    {R0,R1,R14}
    MOV     R0,#3
    LDR     R1,=testfunc
    BLX     R1
    POP     {R0,R1,R14}

    MOV     LR,#0xFFFFFFFD
    CPSIE   I
    BX      LR

.END

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 c程序不知道为什么得不到结果
    • ¥40 复杂的限制性的商函数处理
    • ¥15 程序不包含适用于入口点的静态Main方法
    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置