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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 sub地址DHCP问题
    • ¥15 delta降尺度计算的一些细节,有偿
    • ¥15 Arduino红外遥控代码有问题
    • ¥15 数值计算离散正交多项式
    • ¥30 数值计算均差系数编程
    • ¥15 redis-full-check比较 两个集群的数据出错
    • ¥15 Matlab编程问题
    • ¥15 训练的多模态特征融合模型准确度很低怎么办
    • ¥15 kylin启动报错log4j类冲突
    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大