主题 : ucos任务切换问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 3333
精华: 0
发帖: 26
金钱: 170 两
威望: 78 点
贡献值: 0 点
综合积分: 52 分
注册时间: 2009-01-05
最后登录: 2010-10-27
楼主  发表于: 2009-12-19 13:20

 ucos任务切换问题

管理提醒: 本帖被 qq2440 从 QQ2440技术交流专区 移动到本区(2009-12-27)
我在s3c2440上移植ucos,出现任务不能切换的问题,各位指点一下,个人觉得问题出在OSTickISR里面,代码如下

OSTickISR
    stmfd    sp!,{r0-r3}

    mov r1,sp
    add sp,sp,#16    ;pop r0-r3
    
    sub r2,lr,#4    ;get pc in svc mode
    
    mrs    r3, spsr    ;get cpsr in svc mode

    msr cpsr_c,#(NOINT|SVCMODE)        ;switch to SVC mode
    stmfd sp!,{r2}
    stmfd sp!,{lr}
    stmfd sp!,{r4-r12}
    
    ldmfd r1!,{r4-r7}
    stmfd sp!,{r4-r7}
    stmfd sp!,{r3}
    mrs r4, spsr
    stmfd sp!,{r4}
    
    ;bl    OSIntEnter
    ldr r0, =OSIntNesting
    ldrb r1, [r0]
    add r1, r1,#1
    strb r1, [r0]

    cmp r1, #1
    bne ISR1

    bl OSTest2Hook
    ldr    r4, =OSTCBCur
    ldr r5, [r4]
    str sp, [r5]

ISR1

    ldr r0, =SRCPND
    mov r1, #BIT_TIMER4
    str r1, [r0]

    ldr r0, =INTPND
    ldr r1,[r0]
    str r1, [r0]
    
    bl    OSTimeTick
    
    bl    OSIntExit
    bl OSTest1Hook
    ldmfd sp!,r4
    msr spsr_cxsf, r4

    ldmfd sp!,{r4}
    msr cpsr_cxsf, r4

    ldmfd sp!,{r0-r12,lr,pc}

OSIntCtxSw
    ;call user definable OSTaskSwHook()
    bl OSTaskSwHook

    
    ;OSPrioCur = OSPrioHighRdy
    ldr        r4 , =OSPrioCur
    ldr        r5 , =OSPrioHighRdy
    ldrb    r5 , [r5]
    strb    r5 , [r4]
    
    ;OSTCBCur = OSTCBHighRdy
    ldr    r4 , =OSTCBCur
    ldr    r5 , =OSTCBHighRdy
    ldr    r5 , [r5]
    str    r5 , [r4]

    ;stack pointer = OSTCBHighRdy->OSTCBStkPtr
    ldr    r4 , =OSTCBHighRdy
    ldr    r4 , [r4]
    ldr    sp , [r4]
    
    ;restore tasks mode registers
    ldmfd    sp!,{r4}
    msr    spsr_cxsf, r4
    ldmfd    sp!,{r4}
    msr    cpsr_cxsf, r4
    
    ;return in new task context
    ldmfd    sp!,{r0-r12,lr,pc}
级别: 新手上路
UID: 3333
精华: 0
发帖: 26
金钱: 170 两
威望: 78 点
贡献值: 0 点
综合积分: 52 分
注册时间: 2009-01-05
最后登录: 2010-10-27
1楼  发表于: 2009-12-20 13:06
各位,不好意思,程序没有问题,犯了点小错
级别: 侠客
UID: 8824
精华: 0
发帖: 54
金钱: 285 两
威望: 63 点
贡献值: 0 点
综合积分: 108 分
注册时间: 2009-09-07
最后登录: 2018-02-08
2楼  发表于: 2010-01-20 17:06
啥错啊,能分享一下吗?
级别: 新手上路
UID: 33979
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2010-12-08
最后登录: 2010-12-15
3楼  发表于: 2010-12-08 23:46
问题怎么解决的?我也遇到了同样的问题……
级别: 新手上路
UID: 35936
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2011-01-09
最后登录: 2011-01-09
4楼  发表于: 2011-01-09 12:34
可能是编译设置搞错了,我一次就是这样。。