單片機上使用M430/OS對系統的意義解析方案
任務(wù)調度的調度時(shí)機有兩種:一種是在任務(wù)掛起時(shí),一種是定時(shí)中斷。任務(wù)掛起時(shí)的任務(wù)調度一定會(huì )引起任務(wù)切換,定時(shí)中斷就不一定引起任務(wù)切換了。因為,如果就緒任務(wù)是當前正在運行的任務(wù)時(shí)不會(huì )引起切換。正是如此,任務(wù)調度是RTOS中執行得最頻繁的一個(gè)功能,也是最重要的一個(gè)功能,所以必須盡量縮減其代碼量,盡量用可靠的調度算法來(lái)減少任務(wù)調度所占的時(shí)間。這個(gè)子程序的流程如圖3所示。
(4)任務(wù)鎖和其它功能的實(shí)現
任務(wù)的加鎖與解鎖,是為了使一些在低優(yōu)先級任務(wù)的不可重入代碼,或對實(shí)時(shí)性要求較高的I/O操作在執行中不產(chǎn)生任務(wù)切換。這項功能是通過(guò)設置一個(gè)標志位實(shí)現的。當調度程序檢查到任務(wù)被鎖定時(shí),就算有就緒任務(wù)也必須等開(kāi)鎖之后才能切換。
如果系統突然產(chǎn)生一個(gè)事件要某個(gè)掛起的任務(wù)來(lái)處理,可以在事件產(chǎn)生的程序中調用任務(wù)喚醒。它的原理是把Task_Tick清0,然后執行一次任務(wù)調度。如果這個(gè)任務(wù)優(yōu)先級較高,就直接切換到這個(gè)任務(wù)里執行。
3 總 結
M430/OS已在筆者開(kāi)發(fā)的基于MSP430F149的系統上應用,運行穩定可靠。該操作系統稍加改動(dòng),就可應用于其它MSP430單片機。當然,它的功能還是很有限的,也可能還存在一些尚未暴露的問(wèn)題;但無(wú)論如何,它向我們證明,在MSP430單片機系統中使用RTOS是完全可能的。
評論