UCOS-II移植ARM的读书笔记(12.25)

 __OSStartHighRdy
        MSR     CPSR_c, #(NoInt | SYS32Mode)    ;调整到管理模式
                                                ;告诉uC/OS-II自身已经运行
        LDR     R4, =OSRunning
        MOV     R5, #1
        STRB    R5, [R4]   ;标记多任务运行标记为真

        BL      OSTaskSwHook                    ;调用钩子函数,可以运行用户自定义的函数

        LDR     R6, =OSTCBHighRdy    ;R6存有最高优先级的就绪任务的控制块地址
        LDR     R6, [R6]
        B       OSIntCtxSw_1     ;转到前面编写的中断返回函数块的任务跳转部分的代码,因为这两个函数都要用到这部分代码,进入这段代码之前高优先级的就绪任务的任务控制快地址存在R6中。

        AREA    SWIStacks, DATA, NOINIT,ALIGN=2
SvcStackSpace      SPACE   SVC_STACK_LEGTH * 4  ;管理模式堆栈空间 

OSIntCtxSw_1的代码:
OSIntCtxSw_1
                                                    ;获取新任务堆栈指针
        LDR     R4, [R6] ;任务控制块的堆栈指针放在R6中,现在放在R4中
        ADD     SP, R4, #68                         ;1

你可能感兴趣的:(嵌入式之路,读书,任务,exception,存储,c)