这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ucos 关于ucos退出中断的处理,不解

共2条 1/1 1 跳转至

ucos 关于ucos退出中断的处理,不解

院士
2006-09-17 18:14:16     打赏
ucos 关于ucos退出中断的处理,不解



关键词: 关于     退出     中断     处理     不解    

院士
2006-12-22 22:43:00     打赏
2楼
问 OS_core.c文件里的函数OSIntExit()调用了一句OSIntCtxSw();
请问这句话的作用到底是Includes.h里的
  #define OSIntCtxSw()    return
还是OS_cpu_a.s里的汇编代码?
请高手指点,谢谢:)
1: 顶一下,要沉了 2: OSIntCtxSw用于中断退出时的任务切换。实际没有在OSIntExit中进行任务切换,而是使用了OS_cpu_a.s中的OSIntCtxSw。

        ...
        BL      OSIntExit                       ; 调用中断退出系统函数

        LDR     R2, =OsEnterSum                 ; 因为中断服务程序要退出,所以OsEnterSum=0
        MOV     R1, #0
        STR     R1, [R2]

        MSR     CPSR_c, #(NoInt | IRQ32Mode)    ; 切换回irq模式
        LDMFD   SP, {R3, SP, LR}^               ; 恢复用户状态的R3,SP,LR,注意不能回写
                                                ; 如果回写的是用户的SP,所以后面要调整SP
        LDR     R0, =OSTCBHighRdy
        LDR     R0, [R0]
        LDR     R1, =OSTCBCur
        LDR     R1, [R1]
        CMP     R0, R1

        ADD     SP, SP, #4*3                    ;
        MSR     SPSR_cxsf, R3
        LDMEQFD SP!, {R0-R3, R12, PC}^          ; 不进行任务切换
        LDR     PC, =OSIntCtxSw                 ; 进行任务切换

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]