BLOG記事用論壇

 找回密碼
 註冊
搜索
熱搜:
查看: 851|回復: 0

PC_DOSSaveReturn() ,PC_VectSet(uCOS,OSCtxSw)

[複製鏈接]
發表於 2023-6-5 14:21:39 | 顯示全部樓層 |閱讀模式

PC_DOSSaveReturn() 是一個特定於平台的函數,通常在微控制器操作系統 µC/OS-II 的 IBM PC/MS-DOS 實現中找到。這個函數的主要目的是保存當前的 DOS 狀態,以便之後可以恢復。以下是一些關於它的關鍵步驟的說明:

PC_ExitFlag = FALSE;: 設置一個全局退出標誌為 FALSE。這個標誌通常用於標記操作系統是否應該終止並恢復到 DOS。

OSTickDOSCtr = 8;: 這可能是設置操作系統的滴答時鐘計數器。

PC_TickISR = PC_VectGet(VECT_TICK);: 獲取當前滴答時鐘中斷處理程序的地址,並保存以供稍後使用。

PC_VectSet(VECT_DOS_CHAIN, PC_TickISR);: 將中斷向量設置為先前保存的滴答時鐘中斷處理程序。

setjmp(PC_JumpBuf);: 設置一個長跳躍(long jump)的恢復點。如果操作系統決定終止並返回到 DOS,它將執行一個長跳躍回到這個點。

PC_SetTickRate(18);: 在操作系統終止並返回到 DOS 時,恢復滴答時鐘的速率。

PC_VectSet(VECT_TICK, PC_TickISR);: 恢復滴答時鐘的中斷處理程序。

PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);: 清除屏幕並設置白色前景和黑色背景。

exit(0);: 終止程序並返回到 DOS。

請注意,上述函數的實際功能可能會根據您的具體硬體平台和 µC/OS-II 的版本有所不同。對於特定的詳細信息,建議查看 µC/OS-II 的相關文檔或源代碼。

PC_VectSet(uCOS,OSCtxSw)
PC_VectSet(uCOS,OSCtxSw): 這個函數的工作是設置中斷處理程序。在這種情況下,它將上下文切換處理程序(OSCtxSw)安裝到中斷向量表中的某個位置,這裡的位置為 uCOS。

Interrupt # 0x80 of 80x86 family: 0x80 是 x86 處理器家族中用於系統調用的軟中斷號。在這種情況下,它可能用於觸發上下文切換。

Context switches are handled during ISR!: ISR 代表中斷服務程序,這是一種在硬體中斷發生時由操作系統執行的程序。在 µC/OS-II 中,上下文切換處理程序是一種特殊類型的 ISR,用於在兩個任務之間進行切換。

Voluntary CXTSW via executing an INT instruction: 有兩種類型的上下文切換:自願的和非自願的。自願的上下文切換是當一個任務主動放棄 CPU 控制權時發生的,這可以通過執行 INT 指令(即產生軟中斷)來達成。

Involuntary CXTSW during the return of a timer ISR: 另一方面,非自願的上下文切換是由操作系統強制執行的,通常是在一個定時器中斷返回時發生。這種情況下,操作系統可能會決定將 CPU 控制權給另一個任務,例如,當當前任務的時間片用完時。


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|綜合討論區

GMT+8, 2026-6-24 18:38 , Processed in 0.040869 second(s), 8 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表