中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Wanlix操作系統怎么實現兩個固定任務之間的切換

發布時間:2022-03-22 15:55:19 來源:億速云 閱讀:177 作者:iii 欄目:互聯網科技

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

從零起步,先實現2個固定任務的互相切換來驗證操作系統的切換功能。

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

Wanlix操作系統有什么特點?

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

兩個固定任務之間如何切換?

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

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

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

Wanlix操作系統怎么實現兩個固定任務之間的切換

任務切換示意圖

這種切換也可以在多個任務之間進行,至于什么時候切換,怎么控制切換,這就是操作系統要做的事情了。

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

為了能看出任務切換的效果,我們設計2個函數

TEST_TestTask1和TEST_TestTask2,這兩個函數都是死循環,反復執行“打印消息—>延遲”的過程,我們可以通過打印信息來確認是哪個函數在執行,

偽碼如下:

Wanlix操作系統怎么實現兩個固定任務之間的切換

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

就應該能看到的是這2個函數是在循環交替打印。

在main函數里首先初始化硬件,然后調用WLX_TaskInit函數對2個任務進行初始化,最后調用WLX_TaskStart函數啟動任務調度,這2個任務就開始交替執行了,交替向串口打印數據。

Wanlix操作系統怎么實現兩個固定任務之間的切換

最終結果:

Wanlix操作系統怎么實現兩個固定任務之間的切換

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平阳县| 望谟县| 柏乡县| 舟曲县| 高碑店市| 赤峰市| 澄城县| 海阳市| 外汇| 濮阳县| 谢通门县| 盘山县| 洪湖市| 黑河市| 和硕县| 蓬莱市| 恩平市| 黔江区| 汉阴县| 大埔区| 陵川县| 临沭县| 滨州市| 济南市| 通州市| 通化市| 澄城县| 湘潭县| 朝阳县| 甘泉县| 汉川市| 津南区| 洛隆县| 六安市| 维西| 潞西市| 张家界市| 安庆市| 若尔盖县| 洞头县| 商丘市|