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

正文內(nèi)容

嵌入式實時操作系統(tǒng)的移植(參考版)

2025-05-16 06:46本頁面
  

【正文】 ? 只是一個實時多任務(wù)內(nèi)核,沒有圖形用戶接口( GUI)、文件系統(tǒng)( FS)和 TCP/IP協(xié)議棧。 ? 系統(tǒng)時鐘中斷,沒有提供用戶使用定時器,可以借鑒 Linux的定時器加以修改。C/OS 的完善 ? 固定的基于優(yōu)先級的調(diào)度,不支持時間片,使用起來不方便。 ? 定義 OSTaskStkInit來初始化任務(wù)的堆棧。 ? 定義函數(shù) OSIntCtxSw實現(xiàn)中斷級任務(wù)切換,用純匯編實現(xiàn)。 ? 定義函數(shù) OS_TASK_SW執(zhí)行任務(wù)切換。C/OSII的開發(fā)者,移植還是有一定難度的。 } } 90 關(guān)于移植 相對于其他的嵌入式操作系統(tǒng), 181。 for (。 } } void SYS_Task(void *Id) { uHALr_InstallSystemTimer()。) { Uart_Printf(run task2\n)。 OSTimeDly(1000)。C/OSII( 3) void Task1(void *Id) { for(。 // start the game // // never reached // return 0。Task1_Stack[STACKSIZE1], Task1_Prio )。Task2_Stack[STACKSIZE1], Task2_Prio)。SYS_Task_Stack[STACKSIZE1], SYS_Task_Prio)。 // do target (uHAL based ARM system) initialisation // OSInit()。 define Task2_Prio 13 88 測試 181。 define Task1_Prio 12 OS_STK Task2_Stack[STACKSIZE]= {0, }。 OS_STK Task1_Stack[STACKSIZE]={0, }。C/OSII( 1) /*任務(wù)定義 */ OS_STK SYS_Task_Stack[STACKSIZE]= {0, }。 設(shè)置新的當前任務(wù)的 TCB地址 LDMFD sp!, {r4} MSR SPSR, r4 LDMFD sp!, {r4} BIC r4, r4, 0xC0 。 得到新任務(wù)堆棧指針 。 保存 sp 在被占先的任務(wù)的 TCB 86 OSIntCtxSW ();中斷級的任務(wù)切換函數(shù)( 3) 。 OSPrioCur = OSPrioHighRdy // 改變當前程序 LDR r4, addr_OSPrioCur LDR r5, addr_OSPrioHighRdy LDRB r6, [r5] STRB r6, [r4] 。 保存任務(wù)當前 PSR MRS r4, SPSR STMFD sp!, {r4} 。在任務(wù)堆棧上保存 PSR 和任務(wù) PSR MRS r4, CPSR bic r4, r4, 0xC0 。 從 FIQ堆棧中得到保存的寄存器 STMFD sp!, {r0r12} 。 保存 LR mov lr, r7 。 當前 PC地址是 (saved_LR 4) STMFD sp!, {r0} 。 從 IRQ堆棧中得到 IRQ39。 關(guān)閉 IRQ, FIQ. msr CPSR_cxsf, r1 。FIQ_STACK mrs r1, SPSR 。 } 84 OSIntCtxSW ();中斷級的任務(wù)切換函數(shù)( 1) OSIntCtxSw add r7, sp, 16 。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來 。 OSPrioCur = OSPrioHighRdy。 調(diào)用用戶定義的 OSTaskSwHook()。 82 OSIntCtxSW的實現(xiàn) 83 OSIntCtxSw()的原型 void OSIntCtxSw(void) { 調(diào)整堆棧指針來去掉在調(diào)用: OSIntExit(), OSIntCtxSw()過程中壓入堆棧的多余內(nèi)容 。在后一種情況下,可以通過簡單的執(zhí)行一定數(shù)量的 pop(出棧)指令來實現(xiàn)相同的功能。另外,處理器狀態(tài)字可能是 8, 16, 32甚至 64位寬,并且OSIntExit()可能會分配局部變量。 返回到新任務(wù)的上下文 LDMFD sp!, {r0r12, lr, pc} 79 中斷服務(wù) 80 關(guān)于棧指針調(diào)整 81 棧指針調(diào)整 調(diào)整堆棧指針(加一個數(shù)在堆棧指針上)來完成的。 設(shè)置新的當前任務(wù)的 TCB地址 。 得到新任務(wù)堆棧指針 。 保存 sp在被占先的任務(wù)的 TCB 。 OSPrioCur = OSPrioHighRdy LDR r4, addr_OSPrioCur LDR r5, addr_OSPrioHighRdy LDRBr6, [r5] STRBr6, [r4] 78 OS_TASK_SW():任務(wù)級的任務(wù)切換函數(shù)( 2) 。 保存當前的 PSR MRS r4, SPSR STMFD sp!, {r4} 。 保存 lr STMFD sp!, {r0r12} 。 } 77 OS_TASK_SW ();任務(wù)級的任務(wù)切換函數(shù)( 1) OS_TASK_SW STMFD sp!, {lr} 。 將所有處理器寄存器從新任務(wù)的堆棧中恢復(fù)出來 。 OSPrioCur = OSPrioHighRdy。 調(diào)用用戶定義的 OSTaskSwHook()。 運行新的任務(wù) 76 OSCtxSw()的原型 void OSCtxSw(void) { 保存處理器寄存器 。 從棧頂獲得新的狀態(tài) MSR CPSR, r4 。 設(shè)置新的當前任務(wù) TCB地址 LDMFD sp!, {r4} 。 獲得堆棧指針 LDR sp, [r5] 。 得到當前任務(wù) TCB地址 LDR r5, addr_OSTCBHighRdy 。實際上, OSTimeTickHook()是在節(jié)拍被 ?C/OSⅡ 真正處理,并通知用戶的移植實例或應(yīng)用程序之前被調(diào)用的。例如,用戶可以保持并顯示每個任務(wù)的執(zhí)行時間,每個任務(wù)所用的 CPU份額,以及每個任務(wù)執(zhí)行的頻率等。 ? 函數(shù)原型: void OSTaskSwHook (void) { if 0 if(OSRunning==TRUE){ /*保存擬被掛起任務(wù)的寄存器; } /*恢復(fù)擬被運行任務(wù)的寄存器; endif } 72 OSTaskStatHook ? OSTaskStatHook()每秒鐘都會被 OSTaskStat()調(diào)用一次。注意在調(diào)用 OSTaskSwHook()期間中斷一直是被禁止的。 OSTaskSwHook()可以直接訪問 OSTCBCur和 OSTCBHighRdy,因為它們是全局變量。 ? 函數(shù)原型: void OSTaskDelHook (OS_TCB *ptcb) { ptcb=ptcb。當 該函數(shù)被調(diào)用的時候,它會收到指向正被刪除任務(wù)的 OS_TCB的指針,這樣它就可以訪問所有的結(jié)構(gòu)成員了。 } 70 OSTaskDelHook ? 當任務(wù)被刪除的時候,就會調(diào)用 OSTaskDelHook()函數(shù)。 ? 當 OSTaskCreateHook()被調(diào)用的時候,它會收到指向已建立任務(wù)的OS_TCB的指針,這樣它就可以訪問所有的結(jié)構(gòu)成員了。該函數(shù)被調(diào)用的時候中斷是禁止的。該函數(shù)允許用戶或使用移植實例的用戶擴展 ?C/OSⅡ 功能。 /* spsr */ return ((OS_STK *)stk)。 /* r0 */ *stk = (SUPMODE)。 /* r2 */ *stk = 1。 /* r4 */ *stk = 3。 /* r6 */ *stk = 5。 /* r8 */ *stk = 7。 /* r10 */ *stk = 9。 /* r12 */ *stk = 11。 /* pc */ *stk = (unsigned int) task。 opt++。 stk = (unsigned int *)ptos。 OSTaskCreate()和 OSTaskCreateExt()會獲得該地址并將它保存到任務(wù)控制塊( OS_TCB)中。 ? 在用戶建立任務(wù)時,用戶傳遞任務(wù)的地址、 pdata指針、任務(wù)的堆棧棧頂和任務(wù)的優(yōu)先級給 OSTaskCreate()和 OSTaskCreat
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1