學(xué)習RTOS 使用RTOS
長(cháng)期以來(lái),計算機科學(xué)專(zhuān)家們的杰作--實(shí)時(shí)系統(RTOS)與嵌入式應用產(chǎn)品開(kāi)發(fā)工程師的理念之間存在著(zhù)一道明顯的溝壑。RTOS如陽(yáng)春白雪和者甚寡。分析我國推動(dòng)計算機嵌入式應用發(fā)展的這支隊伍可以發(fā)現,他們中絕大多數是各個(gè)應用領(lǐng)域的專(zhuān)家,而沒(méi)有受過(guò)計算機專(zhuān)業(yè)方面的專(zhuān)門(mén)訓練。很多人都是從自學(xué)8位微處理器Z-80開(kāi)始的,缺乏對計算機科學(xué)方面系統的理論知識的深層次理解。在8位CPU的嵌入式應用中這種矛盾并不突出,而當嵌入式應用走向32位,應用程序越來(lái)越復雜時(shí),就顯得力不從心。而科班出身的計算機專(zhuān)家又不可能對各個(gè)應用領(lǐng)域都熟悉。多數應用領(lǐng)域的開(kāi)發(fā)人員習慣于畫(huà)一塊印刷線(xiàn)路板,畫(huà)個(gè)程序框圖,編一個(gè)軟件,試一試,于是產(chǎn)品開(kāi)發(fā)就完成了。從計算機科學(xué)的角度來(lái)看,不但開(kāi)發(fā)出的產(chǎn)品存在著(zhù)諸多的不安全隱患,這種開(kāi)發(fā)產(chǎn)品的方法本身就不夠科學(xué)。RTOS是計算機專(zhuān)家們多年潛心研究的成果,使用RTOS不僅增加了嵌入式應用系統的可靠性,縮短了產(chǎn)品的開(kāi)發(fā)時(shí)間,而且應用程序的維護也會(huì )方便許多。
在嵌入式產(chǎn)品開(kāi)發(fā)中使用RTOS有很多好處,歸納起來(lái)主要有以下幾方面,首先RTOS支持多任務(wù),應用程序被分解成多個(gè)任務(wù),程序開(kāi)發(fā)變得更加容易,便于維護,易讀易懂。提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期。再者,計算機對關(guān)鍵事件的處理在延遲時(shí)間上有保證,即系統的實(shí)時(shí)性可以保證好于某一確定的值。還有系統的穩定性、可靠性會(huì )得到提高。例如可以增加一些用于監控各任務(wù)運行狀態(tài)的任務(wù)來(lái)提高系統的可靠性。
價(jià)格因素限制了RTOS在我國嵌入式應用產(chǎn)品開(kāi)發(fā)中的推廣與普及。也許這才是和者甚寡的最主要原因。多數RTOS的商業(yè)產(chǎn)品都相當的貴,著(zhù)名的RTOS價(jià)位在2萬(wàn)到3萬(wàn)美元之間,國內只有少數實(shí)力雄厚的單位買(mǎi)得起。使用中,由于許多商業(yè)RTOS軟件都是所謂的黑盒子,即不提供源代碼,用戶(hù)知其然未必知其所以然。理解不透,用得不好,RTOS的優(yōu)勢也就不能全發(fā)揮出來(lái)。有些商業(yè)軟件還要對開(kāi)發(fā)出來(lái)的產(chǎn)品按件收費,費率從幾美元到上百美元。給產(chǎn)品增加力額外的成本。
隨著(zhù)操作系統走向開(kāi)放,越來(lái)越多的帶源代碼的無(wú)版稅軟件、自由軟件得到了廣泛的認可與應用。自由軟件Linux和可用于嵌入式應用的μCLinux的出現使RTOS不再神秘。一些商業(yè)RTOS軟件開(kāi)始公開(kāi)源碼。RTOS的一些自由軟件頻頻在網(wǎng)上出現,自由軟件μC /OS和廉價(jià)的μC/OS-Ⅱ就是很好的例子。RTOS的春天來(lái)了,廣大嵌入式應用產(chǎn)品開(kāi)發(fā)工程師與計算機專(zhuān)家間的溝壑在逐漸填平。
μC/OS出自于美國的一位嵌入式系統專(zhuān)家Jean J.Labrosse。他后來(lái)成為嵌入式系統會(huì )議的顧問(wèn)委員會(huì )委員,并在每年的嵌入式系統會(huì )議上講演。最早的文章連載在美國1992年<<嵌入式系統編程>>雜志的5月和6月刊上。源碼發(fā)布在該雜志的BBS上。1993年,美國的R&D出版社出了一本叫做μC/OS the Real Time Kernel的書(shū),后來(lái)的幾年中書(shū)的銷(xiāo)量超過(guò)了15,000冊。世界上數以千計的工程技術(shù)人員將μC/OS應用到了各個(gè)領(lǐng)域,如照像機業(yè)、醫療儀器、音響設備、發(fā)動(dòng)機控制、網(wǎng)絡(luò )接入設備、高速公路電話(huà)系統、ATM機、工業(yè)機器人等。近10年的應用史證明,這個(gè)RTOS是穩定可靠的,且不斷有新版本推出。
μC/OS已經(jīng)將移植到了幾乎所有知名的CUP上。移植的范例可以從網(wǎng)上下載。μC/OS the Real Time Kernel一書(shū)中附一張軟盤(pán),是μC/OS的版本1.08。關(guān)于版權,書(shū)中寫(xiě)到: 在您的應用中使用書(shū)中的代碼不需要許可證。但是您得指出您的產(chǎn)品中使用了μC/OS。如果是賣(mài)源碼得話(huà),就有版權的問(wèn)題了。
1998年,作者決定出μC/OS的第二本書(shū)μC/OS-Ⅱ the Real Time Kernel,并設立了正式的網(wǎng)站:WWW. uC/OS -Ⅱ.COM,給μC/OS增加了一些新的功能。并且增加了約200頁(yè)的解釋。當μC/OS的商業(yè)價(jià)值得到認可時(shí),μC/OS-Ⅱ的版權政策也發(fā)生了變化,把目標代碼嵌入到商業(yè)產(chǎn)品中去也需要版稅了。最新版本的μC/OS-Ⅱ V2.51索價(jià)55.95美元。中國電力出版社購買(mǎi)了這本書(shū)的版權,譯成了中文版,于2001年8月出版,中文書(shū)名是<<μC/OS-Ⅱ源碼開(kāi)放的嵌入式實(shí)時(shí)操作系統>>。
這是一本出色的教材,清華大學(xué)已在嵌入式系統與單片機教學(xué)中使用了這本書(shū)。書(shū)中不但給出了一個(gè)實(shí)時(shí)內核的全部源代碼,而且對這些代碼做了詳盡的解釋。對實(shí)時(shí)操作系統中的一些基本概念做了詳細的描述。源程序的寫(xiě)作風(fēng)格、注釋都相當規范、漂亮。讀了這本書(shū)就會(huì )弄明白,一段段的程序是怎么協(xié)調工作的。如果只是將數千行的程序代碼、數十個(gè)文件羅列在那里,讀起來(lái)會(huì )相當費勁。商業(yè)軟件不僅僅是貴,而即使有些軟件帶源代碼一起出售,也沒(méi)有哪一個(gè)解釋得如此詳盡。
μC/OS和μC/OS-Ⅱ是專(zhuān)門(mén)為計算機的嵌入式應用設計的,絕大部分代碼是用C語(yǔ)言寫(xiě)的。CPU硬件相關(guān)部分是用匯編語(yǔ)言寫(xiě)的,總量約200行。匯編語(yǔ)言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。用戶(hù)只要有標準的ANSI 的C交叉編譯器,有匯編、連接等軟件工具,就可以將μC/OS-Ⅱ嵌入到開(kāi)發(fā)的產(chǎn)品中。
μC/OS和μC/OS-Ⅱ是占先式(Preemptive)多任務(wù)實(shí)時(shí)內核,是基于優(yōu)先級的,即總是讓進(jìn)入就緒態(tài)的諸任務(wù)中優(yōu)先級最高的那個(gè)任務(wù)先運行。任務(wù)調度是用查表法完成的,速度快。每個(gè)任務(wù)都有互不相同的優(yōu)先級。有64個(gè)優(yōu)先級,最多支持64個(gè)任務(wù)。
μC/OS和μC/OS-Ⅱ的另一特點(diǎn)是可裁剪,即只嵌入用戶(hù)程序用得著(zhù)的那些函數,即產(chǎn)品中既可以只用幾個(gè)函數,也可以嵌入全部函數,這樣內核占用的ROM/RAM資源,就可以依據產(chǎn)品調整。裁剪是通過(guò)條件編譯實(shí)現的。作者盡了極大的努力,使內核占用的資源盡量少。
μC/OS-Ⅱ這本書(shū)中提供的內核源代碼以及幾個(gè)應用的例子是80x86 CPU為對象的。讀者可以在任何一臺PC機上用PC機上的標準的C編譯器對這些代碼編譯,然后在Windows中的DOS窗口下運行RTOS,邊讀書(shū),分析書(shū)中所附的源代碼,邊實(shí)踐,運行μC/OS-Ⅱ,找到RTOS的感覺(jué)以后,再把μC/OS-Ⅱ移植到自己熟悉的一種CPU上去??梢詮木W(wǎng)上下載移植的范例。由于使用的編譯器不同,網(wǎng)上的范例未必能直接使用,故一定要讀一讀源代碼,用這種方式學(xué)習和掌握一個(gè)實(shí)時(shí)內核,直到有勇氣對它做一些改動(dòng)和優(yōu)化。因為μC/O-II是為了嵌入式應用編寫(xiě)的通用軟件,它不得不強調諸CPU有共性的那些方面,并將匯編代碼、CPU硬件相關(guān)部分代碼壓縮到最小,不可能照顧到不同CPU的各自特點(diǎn)。而我國的用戶(hù)一般對自己用過(guò)的一、兩種CPU非常熟悉。讀懂這些源碼以后,根據不同CPU的特長(cháng),對μC/OS-II中相當多的函數可進(jìn)一步優(yōu)化,改善RTOS的實(shí)時(shí)性。
雖然μC/OS-II僅僅是一個(gè)實(shí)時(shí)內核,但有了這個(gè)內核就有了良好的開(kāi)始。在此基礎上許多功能都可以加上去,如內存管理、TCP/IP支持、遠程調用甚至文件系統。網(wǎng)上出現了基于μC/OS-Ⅱ的商業(yè)產(chǎn)品廣告。以μC/OS-Ⅱ為基礎,自己做一些功能軟件也不難,也有一些開(kāi)放的資源可以參考。以TCP/IP為例,英國人Jeremy Bentham的TCPIP Lean: Web Server for Embedded System 一書(shū)就教您如何將TC/PIP嵌入8位單片機。
讀書(shū)、學(xué)習、實(shí)踐,不但對于大專(zhuān)院校的學(xué)生,特別是對有經(jīng)驗的工程師,再學(xué)習,再實(shí)踐,學(xué)習RTOS,使用RTOS,我們全民族的微計算機嵌入式應用技術(shù)水平將會(huì )邁上一個(gè)新的臺階。
評論