函式原型來自os_core.c
//該函式由sstart()函式呼叫,功能是執行優先順序最高的就緒任務,在呼叫osstart()之前,使用者必須先呼叫osinit(),並且已經至少建立了乙個任務.
//osstarthighrdy()預設指標ostcbhighrdy指向優先順序最高就緒任務的任務控制塊(os_tcb)(在這之前ostcbhighrdy已由osstart()設定好了).
void osstart (void)//通過這個函式,開始多工
}函式原型來自os_cpu_a.asm
為了啟動任務,osstarthighrdy()從任務控制塊(os_tcb)中找到指向堆疊的指標,然後執行pop ds/ pop es/ popa 和 iret
_osstarthighrdy proc far
mov ax, seg _ostcbhighrdy ; reload ds
mov ds, ax ;
;call far ptr _ostaskswhook ; call user defined task switch hook
;mov al, 1 ; osrunning = true;
mov byte ptr ds:_osrunning, al ; (indicates that multitasking has started)
;les bx, dword ptr ds:_ostcbhighrdy ; ss:sp = ostcbhighrdy->ostcbstkptr
mov ss, es:[bx+2] ;
mov sp, es:[bx+0] ;
;pop ds ; load task's context
pop es ;
popa ;
;iret ; run task
_osstarthighrdy endp
uCOS II 上電啟動流程
上電啟動,一般分為兩個階段 第一階段 主要是cpu核心的初始化,執行固化的啟動 1 初始化堆疊 2 初始化 規劃中斷向量表,跳轉到reset handler中,執行復位後的中斷 3 在reset handler中,呼叫c函式systeminit來進行系統初始化 4 呼叫c函式 main 將會跳轉到主...
uC OS II原始碼分析(五)
每個任務被賦予不同的優先順序等級,從0 級到最低優先順序os lowest pr1o,包括0 和 os lowest pr1o 在內。當 c os 初始化的時候,最低優先順序os lowest pr1o 總是被賦給空閒任務idle task 注意,最多工數目os max tasks 和最低優先順序數...
uC OS II原始碼分析(五)
每個任務被賦予不同的優先順序等級,從0 級到最低優先順序os lowest pr1o,包括0 和 os lowest pr1o 在內。當 c os 初始化的時候,最低優先順序os lowest pr1o 總是被賦給空閒任務idle task 注意,最多工數目os max tasks 和最低優先順序數...