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

正文內(nèi)容

[信息與通信]移植-文庫(kù)吧資料

2024-10-24 22:21本頁(yè)面
  

【正文】 ,=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 。 OSCtxSw()的基本運(yùn)行流程: ?保存處理器的寄存器到當(dāng)前任務(wù)的堆棧中; ?將當(dāng)前的堆棧地址保存到該任務(wù)的任務(wù)控制塊OS_TCB中; ?調(diào)用 OSTaskSwHook()函數(shù) ?設(shè)置當(dāng)前任務(wù)控制塊指針 OSTCBCur為OSTCBHighRdy ?設(shè)置當(dāng)前任務(wù)優(yōu)先級(jí) OSPrioCur為 OSPrioHighRdy ?得到新任務(wù)的堆棧指針; ?從新任務(wù)堆棧中恢復(fù)所有處理器寄存器; ?中斷返回以啟動(dòng)新任務(wù)?;謴?fù)其它寄存器和 PC值,啟動(dòng)任務(wù) OSCtxSw()任務(wù)切換函數(shù) ? OSCtxSw()是一個(gè)任務(wù)級(jí)的任務(wù)切換函數(shù),在任務(wù)需要進(jìn)行切換時(shí)被 的宏定義 OS_TASK_SW調(diào)用,由于此時(shí)的任務(wù)切換都是在非異常模式下進(jìn)行的,因此區(qū)別于中斷級(jí)別的任務(wù)切換。恢復(fù) SPSR LDR R4, [sp], 4 MSR CPSR_cxsf,R4 。調(diào)用 OSTaskSwHook() LDR R4, =OSRunning MOV R5, 1 STRB R5,[R4] 。 ? OSStartHighRdy()函數(shù)的基本運(yùn)行流程: ( 1)調(diào)用 OSTaskSwHook()函數(shù); ( 2)將變量 OSRunning設(shè)為 True; ( 3)得到優(yōu)先級(jí)最高任務(wù)的堆棧指針; ( 4)恢復(fù)優(yōu)先級(jí)最高的任務(wù)的處理器寄存器; ( 5)中斷返回以啟動(dòng)優(yōu)先級(jí)最高的任務(wù)。 UC/OSII使用變量 OSTCBHighRdy指向的是優(yōu)先級(jí)最高的任務(wù)的任務(wù)控制塊,而堆棧地址在任務(wù)控制塊的起始地址,所以 OSStartHighRdy()函數(shù)可以通過(guò)這個(gè)變量獲取優(yōu)先級(jí)最高的任務(wù)的堆棧地址。 OSStartHighRdy() ?此函數(shù)被操作系統(tǒng)啟動(dòng)函數(shù) OSStart()調(diào)用,來(lái)啟動(dòng)在啟動(dòng)函數(shù)運(yùn)行之前已經(jīng)處于就緒態(tài)的、具有最高優(yōu)先級(jí)的任務(wù)。通常包括: OSStartHighRdy(); OSCtxSw(); OSIntCtxSw(); OSTickISR(); 開(kāi)啟和關(guān)閉中斷的代碼。 OSTimeTickHook() 在每個(gè)時(shí)鐘節(jié)拍中被 OSTaskTick()函數(shù)調(diào)用。 OSTaskSwHook() 在發(fā)生任務(wù)切換的時(shí)候被調(diào)用,它允許用戶進(jìn)行任務(wù)運(yùn)行時(shí)間的計(jì)算等一些擴(kuò)展操作。函數(shù)原型: Void OSTaskCreateHook (OS_TCB *ptcb) 參數(shù) ptcb指向已建立任務(wù)的 OS_TCB的指針。因?yàn)槿蝿?wù)運(yùn)行在此模式時(shí),只能被中斷進(jìn)入其它模式,而從不用返回到其它模式中去, SPSR寄存器并沒(méi)有被使用。 /* SPSR IRQ */ return ((void *)stk)。 /* r0 */ *stk= (SVC32MODE|0x0)。 /* r2 */ *stk= 0。 /* r4 */ *stk= 0。 /* r6 */ *stk= 0。 /* r8 */ *stk= 0。 /* r10 */ *stk= 0。 /* r12 */ *stk= 0。 /* PC */ *stk= (OS_STK) task。未使用 ,此處可防止編譯器的警告 */ stk = ptos。 /* 39。了解了 ARM中斷時(shí)的堆棧結(jié)構(gòu),就可以完成 OSTaskStkInit()的修改: SPSR CPSR R0 R12 Lr PC OsEnterSum …… …… R11 高地址 低地址 增 長(zhǎng) 方 向 由于編譯器ADS僅支持堆棧從上往下長(zhǎng),并且必須是滿遞減堆棧,所以文件中用來(lái)定義堆棧增長(zhǎng)方式的常量OS_
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1