從μC/OS―II到μC/OS―III的各種改進(jìn)
摘要:相比μC/OS—II,μC/OS—III做了很多改進(jìn),比如任務(wù)調(diào)度策略、時(shí)間節(jié)拍管理等,不僅消除了μC/OS—II中的一些局限,而且增加了一些全新的功能。本文首先介紹了μC/OS—II的特點(diǎn)與局限,然后介紹了μC/OS—III所做的各種改進(jìn)。
關(guān)鍵詞:μC/OS—II;μC/OS—III;實(shí)時(shí)內(nèi)核
引言
μC/OS系列內(nèi)核都是源代碼開放的、可移植、可固化、可裁剪的搶占式實(shí)時(shí)多任務(wù)內(nèi)核。μC/OS誕生于1992年,是針對(duì)68HC11 CPU開發(fā)的。μC/OS—II V2.0誕生于1998年,μC/OS—II V2.52誕生于2002年。針對(duì)這3個(gè)版本的實(shí)時(shí)內(nèi)核,Jean J.Labrosse先生出版了3書,分別為《μC/OS The Real—Time Kernel》、《Micro C/OS—II The Real—Time kernel》和《Micro C/OS—II TheReal—Time kernel(Second Edition)》。其中,第2本和第3本書都有對(duì)應(yīng)的中文譯著,第3本書比第2本書增加了約250頁新內(nèi)容。μC/OS—III誕生于2009年,于2011年8月公開源碼。《μC/OS—III The Real Time Kernel》--書分為兩大部分:第1部分是對(duì)μC/OS—III硬件無關(guān)軟件的描述;第2部分講述μC/OS—III在不同型號(hào)的ARMCortex—M3/4單片機(jī)評(píng)估板上應(yīng)用的范例。第1部分相同,第2部分對(duì)應(yīng)不同硬件,目前已經(jīng)組合出版了6本書,分別對(duì)應(yīng)如下:
◆Freescale公司的以Kinetis53單片機(jī)為核心,面向醫(yī)療儀器類應(yīng)用的TWR—K53N512評(píng)估板;
◆NXP公司的以LPCI768(Cortex—M3核)為核心的評(píng)估板;
◆Renesas公司的以RX62N為核心的評(píng)估板;
◆Renesas公司的以帶以太網(wǎng)口的SH7216為核心的評(píng)估板;
◆ST公司的以STM32F107為核心的評(píng)估板;
◆TI公司的以LM3S9892為核心,面向小型機(jī)器人帶以太網(wǎng)口的VM—EVALBOT評(píng)估板。
μC/OS—III是針對(duì)32位CPU開發(fā)的,相比μC/OS—II做了很多改動(dòng)。下面將詳細(xì)介紹μC/OS—II中的一些可以改進(jìn)的地方以及μC/OS—III中的一些新特性。
1 μC/OS—Il的特點(diǎn)與局限
μC/OS—II主要針對(duì)8/16位CPU開發(fā),是一個(gè)搶占式的實(shí)時(shí)多任務(wù)內(nèi)核。任務(wù)調(diào)度策略是基于任務(wù)的優(yōu)先級(jí),總是運(yùn)行處于就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)。在μC/OS—II中,每個(gè)任務(wù)都有一個(gè)唯一的優(yōu)先級(jí)。μC/OS—IIV2.8之前的版本最多支持64個(gè)優(yōu)先級(jí),從V2.8開始最
多可支持255個(gè)優(yōu)先級(jí)。
μC/OS—II的核心是任務(wù)調(diào)度算法。任務(wù)調(diào)度算法的目標(biāo)就是快速找出其中優(yōu)先級(jí)最高的處于就緒態(tài)的任務(wù)。為了做到這一點(diǎn),μC/OS —II巧妙地采用了查表法。在查表過程中,μC/OS—II需要快速找出1個(gè)8位數(shù)的第一個(gè)非零位的位置,這是通過1個(gè)由256個(gè)元素構(gòu)成的查找表OSUnMapTb1[]實(shí)現(xiàn)的,該查找表記錄了每一個(gè)8位數(shù)的第一個(gè)非零位的位置。通過這種巧妙的查表算法,不論有多少個(gè)任務(wù)處于就緒態(tài),都能在很短的、確定的時(shí)間內(nèi)找出其中優(yōu)先級(jí)最高的那個(gè)就緒任務(wù)。
如今,很多新的CPU都有一條計(jì)算前導(dǎo)零指令(CLZ)或功能類似的指令,比如32位PowerPC處理器的CLZ指令、Freescale S12X雙核微控制器中的協(xié)處理器XGATE的Bit Field Find First One指令等。對(duì)于有這類硬件指令的CPU,無需再使用μC/OS—II中的查表算法,可以利用這類指令優(yōu)化任務(wù)調(diào)度算法。
實(shí)時(shí)系統(tǒng)有2類:軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng)。軟實(shí)時(shí)系統(tǒng)中,各任務(wù)運(yùn)行得越快越好,并不限定某一任務(wù)必須在多長(zhǎng)時(shí)間內(nèi)完成。硬實(shí)時(shí)系統(tǒng)要求系統(tǒng)中的任何函數(shù)都有確定的執(zhí)行周期數(shù),任務(wù)運(yùn)行必須準(zhǔn)時(shí),執(zhí)行時(shí)間不因任務(wù)多少而改變。大多數(shù)實(shí)時(shí)系統(tǒng)是二者的結(jié)合。μC /OS—II中僅有一處不滿足硬實(shí)時(shí)條件:OSTimeTiek()函數(shù)需要遍歷所有任務(wù)控制塊,執(zhí)行時(shí)間受任務(wù)數(shù)目的影響,而該函數(shù)由時(shí)鐘節(jié)拍中斷服務(wù)程序調(diào)用,因此時(shí)鐘節(jié)拍中斷服務(wù)程序的執(zhí)行時(shí)間也受任務(wù)多少影響。通過把這部分工作放到一個(gè)專門的系統(tǒng)級(jí)任務(wù)中去做,便可以解決這個(gè)問題,使其成為一個(gè)滿足硬實(shí)時(shí)條件的RTOS。對(duì)于Freeseale公司的雙核微控制器S12X,還可以通過把時(shí)鐘節(jié)拍中斷的處理交給協(xié)處理器來完成,從而實(shí)現(xiàn)硬實(shí)時(shí)條件,提高RTOS的實(shí)時(shí)性。
評(píng)論