RTOS Real Time Operating System 實(shí)時*作系統(tǒng)
RTOS是Real Time Operation System的縮寫,即實(shí)時操作系統(tǒng)!
IRTOS指支持I2O協(xié)議的實(shí)時操作系統(tǒng),也即支持I2O規(guī)范的核心應(yīng)用程序接口與外殼應(yīng)用程序定義的實(shí)時操作系統(tǒng)。IRTOS為設(shè)備驅(qū)動程序提供的環(huán)境與桌面操作系統(tǒng)為應(yīng)用軟件提供的環(huán)境相類似。使用IRTOS的最大好處在于驅(qū)動程序的可互操作性,可重復(fù)利用性和可移植性。IRTOS提供了各種第三方I2O設(shè)備驅(qū)動程序共存的環(huán)境,并提供了一種稱為中間服務(wù)模塊(intermediate service modules)的增值軟件的運(yùn)行框架。
(1)更加面向硬件系統(tǒng),而不是操作者
嵌入式系統(tǒng)處理器一般都是獨(dú)立工作的,沒有人的直接參與;即使參與,也沒有大量的文字信息輸出,這是和桌面計(jì)算機(jī)有所不同的。因此RTOS著重面向的是硬件,而不是具有完整的人機(jī)界面。
(2)實(shí)時性
單片機(jī)系統(tǒng)的監(jiān)測、控制、通信等工作都要求實(shí)時性,一旦出現(xiàn)有關(guān)情況,CPU能夠及時響應(yīng),刻不容緩。為此,一個實(shí)用的RTOS都應(yīng)具有完善的中斷響應(yīng)機(jī)制,保證中斷響應(yīng)潛伏時間足夠短。
(3)多任務(wù)
半導(dǎo)體技術(shù)的發(fā)展和應(yīng)用復(fù)雜性的增長促使CPU的處理能力越來越高,當(dāng)今的一片16位或32位單片機(jī),在運(yùn)算速度、尋址能力等方面可以相當(dāng)于8位單片機(jī)的幾十片之和。在這樣強(qiáng)大的處理器上運(yùn)行應(yīng)用程序,必然不是整塊,而是根據(jù)所要實(shí)現(xiàn)的若干方面功能,劃分為數(shù)個任務(wù),這樣有利于軟件的開發(fā)和維護(hù)。
因此單片機(jī)系統(tǒng)中采用的RTOS必然是支持多任務(wù)的,并能夠根據(jù)各個任務(wù)的輕重緩急,合理地在它們之間分配CPU和各種資源的占用時間。
(4)不同的典型外設(shè)驅(qū)動支持
單片機(jī)的典型片內(nèi)外設(shè)為定時器、A/D、PWM、D/A、串行口、LCD/LED接口,CAN-bus、IC-bus等。根據(jù)處理器類型的不同,RTOS在出廠時一般附帶若干上面硬件接口的驅(qū)動程度,而網(wǎng)卡等片外設(shè)備的驅(qū)動程序,以及其它一些高級驅(qū)動函數(shù),如兼容DOS的文件系統(tǒng)、TCP/IP協(xié)議等,則需要另行選購。以RTOS為基礎(chǔ)和接口標(biāo)準(zhǔn),可以設(shè)計(jì)出大量的庫函數(shù)驅(qū)動模塊,并根據(jù)實(shí)際需要選擇或裁剪。
(5)高可靠性
一般計(jì)算機(jī)的操作系統(tǒng)出現(xiàn)問題,例如死機(jī),除數(shù)據(jù)丟失等外,不會有太大的問題;而單片機(jī)系統(tǒng)一般都是和工業(yè)控制、交通工具、醫(yī)用器械等機(jī)電系統(tǒng)密切相關(guān),不適當(dāng)?shù)妮敵錾踔敛患皶r的輸出都可能會帶來財(cái)產(chǎn)損失和安全問題。因此嵌入式系統(tǒng)中的RTOS要求高可靠性,發(fā)行之前必須經(jīng)過嚴(yán)格的測試。這是一個耗費(fèi)時間和精力的過程,也是RTOS價格普遍高于一般操作系統(tǒng)的原因之一。
1.RTOS是一個內(nèi)核
典型的單片機(jī)程序在程序指針復(fù)位后,首先進(jìn)行堆棧、中斷、中斷向量、定時器、串行口等接口設(shè)置、初始化數(shù)據(jù)存儲區(qū)和顯示內(nèi)容,然后就來到了一個監(jiān)測、等待或空循環(huán),在這個循環(huán)中,CPU可以監(jiān)視外設(shè)、響應(yīng)中斷或用戶輸入。
這段主程序可以看作是一個內(nèi)核,內(nèi)核負(fù)責(zé)系統(tǒng)的初始化和開放、調(diào)度其它任務(wù),相當(dāng)于C語言中的主函數(shù)。
RTOS就是這樣的一個標(biāo)準(zhǔn)內(nèi)核,包括了各種片上外設(shè)初始化和數(shù)據(jù)結(jié)構(gòu)的格式化,不必、也不推薦用戶再對硬件設(shè)備和資源進(jìn)行直接操作,所有的硬件設(shè)置和資源訪問都要通過RTOS核心。硬件這樣屏蔽起來以后,用戶不必清楚硬件系統(tǒng)的每一個細(xì)節(jié)就可以進(jìn)行開發(fā),這樣就減少了開發(fā)前的學(xué)習(xí)量。
一般來說,對硬件的直接訪問越少,系統(tǒng)的可靠性越高。RTOS是一個經(jīng)過測試的內(nèi)核,與一般用戶自行編寫的主程序內(nèi)核相比,更規(guī)范,效率和可靠性更高。對于一個精通單片機(jī)硬件系統(tǒng)和編程的“老手”而言,通過RTOS對系統(tǒng)進(jìn)行管理可能不如直接訪問更直觀、自由度大,但是通過RTOS管理能夠排除人為疏忽因素,提高軟件可靠性。
另外,高效率地進(jìn)行多任務(wù)支持是RTOS設(shè)計(jì)從始至終的一條主線,采用RTOS管理系統(tǒng)可以統(tǒng)一協(xié)調(diào)各個任務(wù),優(yōu)化CPU時間和系統(tǒng)資源的分配,使之不空閑、不擁塞。針對某種具體應(yīng)用,精細(xì)推敲的應(yīng)用程序不采用RTOS可能比采用RTOS能達(dá)到更高的效率;但是對于大多數(shù)一般用戶和新手而言,采用RTOS是可以提高資源利用率的,尤其是在片上資源不斷增長、產(chǎn)品可靠性和進(jìn)入市場時間更重要的今天。
2.RTOS是一個平臺
RTOS建立在單片機(jī)硬件系統(tǒng)之上,用戶的一切開發(fā)工作都進(jìn)行于其上,因此它可以稱作是一個平臺。采用RTOS的用戶不必花大量時間學(xué)習(xí)硬件,和直接開發(fā)相比起點(diǎn)更高。
RTOS還是一個標(biāo)準(zhǔn)化的平臺,它定義了每個應(yīng)用任務(wù)和內(nèi)核的接口,也促進(jìn)了應(yīng)用程序的標(biāo)準(zhǔn)化。應(yīng)用程序標(biāo)準(zhǔn)化后便于軟件的存檔、交流、修改和擴(kuò)展,為嵌入式軟件開發(fā)的工程化創(chuàng)造了條件、減少開發(fā)管理工作量。嵌入式軟件標(biāo)準(zhǔn)化推廣到社會后,可以促進(jìn)軟件開發(fā)的分工,減少重復(fù)勞動,近來出現(xiàn)的建立于RTOS上的文件和通信協(xié)議庫函數(shù)產(chǎn)品等就是實(shí)例。
RTOS對于開發(fā)單位和開發(fā)者個人來說也是一種提高。引入RTOS的開發(fā)單位,相當(dāng)于引入了一套行業(yè)中廣泛采用的嵌入式系統(tǒng)應(yīng)用程序開發(fā)標(biāo)準(zhǔn),使開發(fā)管理更簡易、有效;赗TOS和C語言的開發(fā),具有良好的可繼承性,在應(yīng)用程序、處理器升級以及更換處理器類型時,現(xiàn)存的軟件大部分可以不經(jīng)修改地移植過來。
對于開發(fā)人員來說,則相當(dāng)于在程序設(shè)計(jì)中采用一種標(biāo)準(zhǔn)化的思維方式,提高知識創(chuàng)造的效率;同時因?yàn)榫哂蓄愃频乃悸罚梢愿斓乩斫馔衅渌藛T的創(chuàng)造成果。
單片機(jī)處理器能力的提高和應(yīng)用程序功能的復(fù)雜化、精確化,迫使應(yīng)用程序劃分為多個重要性不同的任務(wù),在各任務(wù)間優(yōu)化地分配CPU時間和系統(tǒng)資源,同時還要保證實(shí)時性?坑脩糇约壕帉懸粋實(shí)現(xiàn)上述功能的內(nèi)核一般是不現(xiàn)實(shí)的,而這種需求又是普遍的。在這種形勢之下,由專業(yè)人員編寫的、滿足大多數(shù)用戶需要的高性能RTOS內(nèi)核就是一種必然結(jié)果了。
對程序?qū)崟r性和可靠性要求的提高也是RTOS發(fā)展的一個原因。此外,單片機(jī)系統(tǒng)軟件開發(fā)日趨工程化,產(chǎn)品進(jìn)入市場時間不斷縮短,也迫使管理人員尋找一種有利于程序繼承性、標(biāo)準(zhǔn)化、多人并行開發(fā)的管理方式。從長遠(yuǎn)的意義上來講,RTOS的推廣能夠帶來嵌入式軟件工業(yè)更有效、更專業(yè)化的分工,減少社會重復(fù)勞動、提高勞動生產(chǎn)率。
(1)任務(wù)
任務(wù)(Task)是RTOS中最重要的操作對象,每個任務(wù)在RTOS的調(diào)用下由CPU分時執(zhí)行。激活的或當(dāng)前任務(wù)是CPU正在執(zhí)行的任務(wù),休眠的任務(wù)是在存儲器中保留其執(zhí)行的上下文背景、一旦切換為當(dāng)前任務(wù)即可從上次執(zhí)行的末尾繼續(xù)執(zhí)行的任務(wù)。任務(wù)的調(diào)度目前主要有時間分片式(TimeSlicing)、輪流查詢式(Round-Robin)和優(yōu)先搶占式(Preemptive)三種,不同的RTOS可能支持其中的一種或幾種,其中優(yōu)先搶占式對實(shí)時性的支持最好。
(2)任務(wù)切換
RTOS管理下的系統(tǒng)CPU和系統(tǒng)資源的時間是同時分配給不同任務(wù)的,這樣看起來就象許多任務(wù)在同時執(zhí)行,但實(shí)際上每個時刻只有一個任務(wù)在執(zhí)行,也就是當(dāng)前任務(wù)。任務(wù)的切換有兩種原因。當(dāng)一個任務(wù)正常地結(jié)束操作時,它就把CPU控制權(quán)交給RTOS,RTOS則檢查任務(wù)隊(duì)列中的所有任務(wù),判斷下面那個任務(wù)的優(yōu)先級最高,需要先執(zhí)行。另一種情況是在一個任務(wù)執(zhí)行時,一個優(yōu)先級更高的任務(wù)發(fā)生了中斷,這時RTOS就將當(dāng)前任務(wù)的上下文保存起來,切換到中斷任務(wù)。RTOS經(jīng)常性地整理任務(wù)隊(duì)列,刪除結(jié)束的任務(wù),增加新的要執(zhí)行任務(wù),并將其按照優(yōu)先級從大到小的順序排列起來,這樣可以合理地在各個任務(wù)之間分配系統(tǒng)資源。
(3)消息和郵箱
消息(Message)和郵箱(Mailbox)是RTOS中任務(wù)之間數(shù)據(jù)傳遞的載體和渠道,一個任務(wù)可以有多個郵箱。通過郵箱,各個任務(wù)之間可以異步地傳遞信息,沒有占用CPU時間的查詢和等待。當(dāng)RTOS包含片上總線接口驅(qū)動功能時,各個單片機(jī)之間的通信也通過郵箱的方式來進(jìn)行,用戶并不需要了解更深的關(guān)于硬件的內(nèi)容。
(4)旗語
旗語(Semaphore)相當(dāng)于一種標(biāo)志(Flag),通過預(yù)置,一個事件的發(fā)生可以改變旗語。一個任務(wù)可以通過監(jiān)測旗語的變化來決定其行動,在監(jiān)測旗語變化的時候不消耗CPU時間,旗語對任務(wù)的觸發(fā)是由RTOS來完成的。通過使用旗語,一個任務(wù)在等待事件變化的時候就可以不必不斷查詢,而把CPU時間出讓給其它任務(wù)。
(5)存儲區(qū)分配
RTOS對系統(tǒng)存儲區(qū)進(jìn)行統(tǒng)一分配,分配的方式可以是動態(tài)的或靜態(tài)的,每個任務(wù)在需要存儲區(qū)時都要向RTOS內(nèi)核申請。RTOS通過使用存儲分配類核心對象管理數(shù)據(jù)存儲器,在動態(tài)分配時能夠防止存儲區(qū)的零碎化。
(6)中斷和資源管理
RTOS提供了一種通用的設(shè)計(jì)用于中斷管理,有效率而靈活,這樣可以實(shí)現(xiàn)最小的中斷潛伏時間和最大的中斷響應(yīng)度。RTOS內(nèi)核中的資源對象類則實(shí)現(xiàn)了對系統(tǒng)實(shí)體資源或虛擬資源的獨(dú)占式訪問,一個任務(wù)可以取得對資源的唯一訪問權(quán),其它任務(wù)在資源釋放以前無法訪問,這樣可以避免資源沖突。設(shè)計(jì)完善的RTOS具有檢查可能導(dǎo)致系統(tǒng)死鎖的資源調(diào)用設(shè)計(jì)。
當(dāng)你在電子雜志上尋找RTOS的時候,可能會發(fā)現(xiàn)世界上研制RTOS產(chǎn)品的公司多得令你無所適從;但是仔細(xì)閱讀后會發(fā)現(xiàn),它們的產(chǎn)品可能只覆蓋幾種處理器,而且是你所不熟悉的。目前產(chǎn)品比較全面的公司主要有美國的CMXCompany和EmbeddedSystemProducts(ESP),Inc.,它們對中國單片機(jī)工業(yè)流行的單片機(jī),如8051,251,196/296,P51XA,68xxx等都有RTOS及其相關(guān)的接口庫函數(shù)產(chǎn)品,提供源程序代碼,沒有每個產(chǎn)品的二進(jìn)制版稅。其中CMX公司的產(chǎn)品價格略低,較適合中國市場;而ESP公司的產(chǎn)品則有較豐富的庫函數(shù)支持