; OS_CPU_FIQ_ISR_Handler(); MOVLR, PC BXR0 MSRCPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode LDRR0,OS_IntExit; OSIntExit(); MOVLR, PC BXR0; RESTORE NEW TASK'S CONTEXT LDMFDSP!, {R4}; Pop new task's CPSR MSRSPSR_cxsf, R4 LDMFDSP!, {R0-R12,LR,PC}^; Pop new task's context 4)OSStartHighRdy()函数 该函数是在OSStart()多任务启动后,负责从最高优先级任务的TCB控制块中获得该任务的堆栈指针SP通过SP依次将CPU现场恢复。这时系统就将控制权交给用户创建的该任务进程,直到该任务被阻塞或者被更高优先级的任务抢占CPU。该函数仅仅在多任务启动时被执行一次,用来启动第一个也即最高优先级任务。 OSStartHighRdy MSRCPSR_cxsf, #0xD3; Switch to SVC mode with IRQ and FIQ disabled LDRR0, ??OS_TaskSwHook
评论