μC/OS-II嵌入式實(shí)時(shí)操作系統(tǒng)自1998年推出以來,因其方便移植、代碼量小、實(shí)時(shí)性強(qiáng)、可靠性高、內(nèi)核可剪裁等優(yōu)點(diǎn),成為我國(guó)計(jì)算機(jī)嵌入式應(yīng)用領(lǐng)域最受喜愛的實(shí)時(shí)操作系統(tǒng)(Real-Time Opreating System)之一。由于其源碼開源,至今,已經(jīng)成功在諸多廠家的MCU上移植并應(yīng)用在各行各業(yè)的電子產(chǎn)品之中,因而備受矚目。
組成部分:μC/OS-II可以大致分成核心、任務(wù)處理、時(shí)間處理、任務(wù)同步與通信,CPU的移植等5個(gè)部分。
1、核心部分(OSCore.c) 是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。
2、任務(wù)處理部分(OSTask.c) 任務(wù)處理部分中的內(nèi)容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、恢復(fù)等等。因?yàn)?mu;C/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。
3、時(shí)鐘部分(OSTime.c) μC/OS-II中的最小時(shí)鐘單位是timetick(時(shí)鐘節(jié)拍)。任務(wù)延時(shí)等操作是在這里完成的。
4、任務(wù)同步和通信部分為事件處理部分,包括信號(hào)量、郵箱、消息隊(duì)列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對(duì)臨界資源的訪問。
5、與CPU的接口部分是指μC/OS-II針對(duì)所使用的CPU的移植部分。由于μC/OS-II是一個(gè)通用性的操作系統(tǒng),所以對(duì)于關(guān)鍵問題上的實(shí)現(xiàn),還是需要根據(jù)具體CPU的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通常用匯編語言編寫。主要包括中斷級(jí)任務(wù)切換的底層實(shí)現(xiàn)、任務(wù)級(jí)任務(wù)切換的底層實(shí)現(xiàn)、時(shí)鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等內(nèi)容。
對(duì)于嵌入式系統(tǒng)來說任務(wù)優(yōu)先級(jí)的安排是十分重要的。
對(duì)于ucosII來說,最大優(yōu)先級(jí)為63(共64個(gè)優(yōu)先級(jí)),當(dāng)然要根據(jù)項(xiàng)目的實(shí)際需要來定義最低的優(yōu)先級(jí)()OS_LOWEST_PRIO ,例如實(shí)際項(xiàng)目使用20個(gè)優(yōu)先級(jí),則OS_LOWEST_PRIO需要這樣設(shè)定:
#define OS_LOWEST_PRIO 19 實(shí)際上是用0-19
值得注意的是,我們實(shí)際可使用的優(yōu)先級(jí)并不是整整64個(gè),ucosII將OS_LOWEST_PRIO賦予給了“統(tǒng)計(jì)任務(wù)“將OS_LOWEST_PRIO-1留給了“空閑任務(wù)”,更需要注意的是系統(tǒng)將0、1、2、3號(hào)優(yōu)先級(jí)以及OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-3號(hào)優(yōu)先級(jí)留給了自己,以備系統(tǒng)的后續(xù)升級(jí)使用。