溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換

發(fā)布時間:2022-03-22 15:55:19 來源:億速云 閱讀:170 作者:iii 欄目:互聯(lián)網(wǎng)科技

今天小編給大家分享一下Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

從零起步,先實現(xiàn)2個固定任務(wù)的互相切換來驗證操作系統(tǒng)的切換功能。

然后再不斷的加入新功能,由淺入深,一步步將操作系統(tǒng)充實起來。每一個功能的加入都是一個獨立的階段性。

Wanlix操作系統(tǒng)有什么特點?

Wanlix只提供主動切換任務(wù)的功能,是非搶占操作系統(tǒng),編寫相對簡單,作為學(xué)習(xí)編寫操作系統(tǒng)的入門教材是個不錯的選擇。這也使得它非常小巧,適合在硬件資源少但又需要任務(wù)切換的小型嵌入式軟件系統(tǒng)中使用。

兩個固定任務(wù)之間如何切換?

從C語言的角度來看,任務(wù)就是函數(shù)只不過是在操作系統(tǒng)里,一個任務(wù)可以切換到其它任務(wù),其實也就是一個函數(shù)可以切換到其它函數(shù)

當(dāng)切換發(fā)生時,正在執(zhí)行的函數(shù)1的R0~R15、CPSR這17個寄存器臨時保存起來,然后將希望執(zhí)行的函數(shù)2的上次保存的數(shù)值恢復(fù)到R0~R15、CPSR這17個寄存器,這樣芯片就從函數(shù)1切換到函數(shù)2運行了。

當(dāng)希望從函數(shù)2切換到函數(shù)1時,再將函數(shù)2的17個寄存器保存起來,恢復(fù)函數(shù)1的17個寄存器,芯片就又繼續(xù)運行函數(shù)1了。這樣便在函數(shù)1運行的中間插入了函數(shù)2,這就是任務(wù)切換,也就是所謂的“上下切換”,函數(shù)1或函數(shù)2所在的最上層父函數(shù)調(diào)用的一系列函數(shù)就組成了任務(wù),任是從最上層父函數(shù)開始運行的。

Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換

任務(wù)切換示意圖

這種切換也可以在多個任務(wù)之間進(jìn)行,至于什么時候切換,怎么控制切換,這就是操作系統(tǒng)要做的事情了。

下面我們將遵循著這一設(shè)計思路來編寫一個最簡單的切換過程——2個函數(shù)之間不停的互相切換,來驗證任務(wù)切換過程中寄存器備份、恢復(fù)原理的正確性。

為了能看出任務(wù)切換的效果,我們設(shè)計2個函數(shù)

TEST_TestTask1和TEST_TestTask2,這兩個函數(shù)都是死循環(huán),反復(fù)執(zhí)行“打印消息—>延遲”的過程,我們可以通過打印信息來確認(rèn)是哪個函數(shù)在執(zhí)行,

偽碼如下:

Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換

如果沒有函數(shù)切換功能,那么這樣的函數(shù)只要一開始執(zhí)行,它們就會一直死循環(huán)執(zhí)行下去,不會給其它函數(shù)執(zhí)行的機(jī)會,我們就只能看到只有一個函數(shù)在循環(huán)打印消息。如果能夠按照上面是所講述的切換原理發(fā)生函數(shù)切換,那么我們

就應(yīng)該能看到的是這2個函數(shù)是在循環(huán)交替打印。

在main函數(shù)里首先初始化硬件,然后調(diào)用WLX_TaskInit函數(shù)對2個任務(wù)進(jìn)行初始化,最后調(diào)用WLX_TaskStart函數(shù)啟動任務(wù)調(diào)度,這2個任務(wù)就開始交替執(zhí)行了,交替向串口打印數(shù)據(jù)。

Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換

最終結(jié)果:

Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換

以上就是“Wanlix操作系統(tǒng)怎么實現(xiàn)兩個固定任務(wù)之間的切換”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI