ucOS學(xué)習(xí)筆記(1)——為什么需要操作系統(tǒng)
操作系統(tǒng)幫我們協(xié)調(diào)多個(gè)程序之間的耦合關(guān)系,比如我們需要將串口的接收到的數(shù)據(jù)顯示在一塊LCD上。傳統(tǒng)做法是如圖1所示:
圖1.無操作系統(tǒng)流程
該流程中當(dāng)串口接收到數(shù)據(jù)再調(diào)用LCD顯示程序?qū)?shù)據(jù)顯示出來,而圖2展示了一種基于操作系統(tǒng)的方法。在該方法中串口接收數(shù)據(jù)和LCD顯示程序均以為自己獨(dú)占CPU,各自都只是執(zhí)行自己相關(guān)部分的工作,而什么時(shí)候顯示到LCD屏幕,什么時(shí)候又繼續(xù)接收串口數(shù)據(jù)這個(gè)協(xié)調(diào)工作將由操作系統(tǒng)完成。
圖2 操作系統(tǒng)流程
從以上比較可以看出操作系統(tǒng)協(xié)調(diào)了不同功能程序以讓他們共同完成同一個(gè)工作。同時(shí)操作系統(tǒng)又隔離了各個(gè)功能程序讓它們的耦合程度降低。這樣就方便設(shè)計(jì)人員編寫各個(gè)功能模塊,同時(shí)整個(gè)系統(tǒng)的結(jié)構(gòu)也更加清晰。特別是系統(tǒng)邏輯結(jié)構(gòu)復(fù)雜,功能模塊較多的情況下操作系統(tǒng)的這一優(yōu)點(diǎn)體現(xiàn)的更加明顯。
2.操縱系統(tǒng)讓每一個(gè)任務(wù)都認(rèn)為自己獨(dú)占CPU,方便代碼編寫。
同樣采用上邊的例子,無操作系統(tǒng)情況下我么需要在適當(dāng)?shù)臅r(shí)候分別調(diào)用串口接收數(shù)據(jù)程序和LCD顯示程序,而有操作系統(tǒng)時(shí)我們只需要完成兩個(gè)功能模塊代碼然后加入到操作系統(tǒng)就可以了。兩個(gè)功能代碼都是以無限循環(huán)的方式執(zhí)行,結(jié)構(gòu)顯得就很簡單。
3.操作系統(tǒng)增加代碼的移植性。
這一點(diǎn)我認(rèn)為在ucOS系統(tǒng)上體現(xiàn)得并不明顯,對于其他系統(tǒng)例如android,linux等系統(tǒng)可以這樣講,因?yàn)樗麄兓旧蠎?yīng)該算是一個(gè)中等復(fù)雜系統(tǒng),而ucOS是一個(gè)簡單嵌入式系統(tǒng)。對于一個(gè)中等復(fù)雜系統(tǒng)它的底層硬件設(shè)備是有一定要求的,例如android設(shè)備,根據(jù)系統(tǒng)特性它就需要有GPS支持,顯示屏支持,電子羅盤支持,攝像頭支持這些支持都被列入android設(shè)備的系統(tǒng)內(nèi),它們以驅(qū)動(dòng)的形式存在。而上層的應(yīng)用程序通過調(diào)用底層的支持進(jìn)而實(shí)現(xiàn)復(fù)雜的功能。而ucOS我認(rèn)為它僅僅只是一個(gè)調(diào)度器,他的工作就是協(xié)調(diào)多個(gè)應(yīng)用程序在單個(gè)MCU上"同時(shí)"運(yùn)行而已,它幾乎是沒有驅(qū)動(dòng)這個(gè)概念的。
評論