freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[信息與通信]移植-資料下載頁

2025-10-09 22:21本頁面
  

【正文】 基本上和任務(wù)級的切換函數(shù) OSCtxSw()相同,但是 由于進入中斷時,已經(jīng)保存過了被中斷任務(wù)的 CPU現(xiàn)場 ,因此不必再進行類似的操作,只需要調(diào)整堆棧指針。 ? 調(diào)用 OSIntCtxSw()函數(shù)的時候,堆棧的情況: 堆棧的底層部分(高地址)是進入中斷時保存的處理器狀態(tài)寄存器、中斷返回地址和其它寄存器。然后頂層部分是分別調(diào)用 OSIntExit()和 OSIntCtxSw()函數(shù)時保存的程序返回地址和狀態(tài)寄存器。因此 OSCtxSw()函數(shù)只需要調(diào)整堆棧指針,保存所需的任務(wù)信息(頂層部分)即可。 OSIntCtxSw()函數(shù)的返回地址 處理器狀態(tài)寄存器 OSIntExit()函數(shù)的返回地址 CPU寄存器 中斷返回地址 處理器狀態(tài)寄存器 OSIntCtxSw()函數(shù)的基本運行流程: ?調(diào)整堆棧指針,清除多余信息; ?將當(dāng)前堆棧地址保存到該任務(wù)的任務(wù)控制塊中; ?調(diào)用 OSTaskSwHook()函數(shù); ?設(shè)置當(dāng)前任務(wù)控制塊指針 OSTCBCur為OSTCBHighRdy; ?設(shè)置當(dāng)前任務(wù)優(yōu)先級 OSPrioCur為 OSPrioHighRdy ?得到新任務(wù)的堆棧指針; ?從新任務(wù)堆棧中恢復(fù)所有處理器寄存器; ?中斷返回以啟動新任務(wù)。 ? 注: OSIntCtxSw()函數(shù)的基本運行流程除了第一步,其它與 OSCtxSw()函數(shù)一致。用戶可以共享其中的大部分代碼。 ? 堆棧指針的調(diào)整與編譯器的屬性和設(shè)置等參數(shù)有很大關(guān)系,對于 ARM內(nèi)核來說, ARM硬件在中斷時并不自動壓棧任何寄存器,這樣就免去了調(diào)整堆棧的工作,所以 OSIntCtxSw()函數(shù)實際上是 OSCtxSw()函數(shù)的子集。 ? OSIntCtxSw()函數(shù)的代碼如下: ;調(diào)用鉤子函數(shù) BL OSTaskSwHook ;設(shè)置當(dāng)前任務(wù)控制塊指針為 OSTCBHighRdy LDR R1,=OSTCBCur LDR R2,=OSTCBHighRdy LDR R2,[R2] STR R2,[R1] ; R1現(xiàn)在存的是上面的 OSTCBCur ;設(shè)置當(dāng)前任務(wù)優(yōu)先級為 OSPrioHighRdy LDR R3,=OSPrioCur LDR R4,=OSPrioHighRdy LDRB R4,[R4] STRB R4,[R3] ;得到新任務(wù)的堆棧指針 LDR SP,[R2] ; 從新任務(wù)堆棧中恢復(fù)所有處理器寄存器 LDR R1, [sp], 4 //先把數(shù)據(jù)給 R1然后用 SP+4 ( SP指向的是棧頂 SPSR) MSR SPSR_cxsf,R1 ?;謴?fù) SPSR LDR R1, [sp], 4 MSR CPSR_cxsf,R1 ?;謴?fù) CPSR LDMFD sp! {ROR12,lr,pc} ?;謴?fù)其它寄存器和 PC值,啟動任務(wù) OSTickISR()時鐘節(jié)拍中斷處理函數(shù) ?主要任務(wù):負責(zé)處理 Tick時鐘中斷,調(diào)用OSTimeTick()函數(shù),完成任務(wù)的運行控制,如休眠計時等,并且調(diào)用 OSIntExit()函數(shù)完成必要的任務(wù)切換。 ? OSTickISR()工作流程: ( 1)保存所有的處理器寄存器; ( 2)調(diào)用 OSIntEnter()函數(shù)或直接 OSIntNesting加 1 ( 3)調(diào)用 OSTimeTick()函數(shù); ( 4)調(diào)用 OSIntExit()函數(shù); ( 5)恢復(fù)所有處理器寄存器;中斷返回。 ? OSTickISR()函數(shù)本質(zhì)上是一個中斷服務(wù)程序,所以需要結(jié)合處理器的具體型號進行編寫。 開啟和關(guān)閉中斷函數(shù) ? 開啟和關(guān)閉中斷的代碼對應(yīng)于在 OS_ENTER_CRITICAL和 OS_EXIT_CRITICAL。在 ARM內(nèi)核中,開啟和關(guān)閉中斷通過控制程序狀態(tài)寄存器 CPSR的中斷控制位來實現(xiàn)。 ? 具體代碼: INT_BIT EQU 0X80 EXPORT ARMIntClose EXPORT ARMIntOpen ARMIntClose STMFD SP!,{R0} MRS R0,CPSR ORR R0,R0,INT_BIT MSR CPSR_cxsf,R0 LDMFD SP!,{R0} MOV PC,LR ARMIntOpen STMFD SP!,{R0} MRS R0,CPSR BIC R0,R0,INT_BIT MSR CPSR_cxsf,R0 LDMFD SP!,{R0} MOV PC,LR
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1