<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          學習RTOS 使用RTOS

          作者:邵貝貝 清華大學 時間:2008-02-26 來源: 收藏

          長期以來,計算機科學專家們的杰作--實時系統(tǒng)()與嵌入式應用產品開發(fā)工程師的理念之間存在著一道明顯的溝壑。如陽春白雪和者甚寡。分析我國推動計算機嵌入式應用發(fā)展的這支隊伍可以發(fā)現(xiàn),他們中絕大多數(shù)是各個應用領域的專家,而沒有受過計算機專業(yè)方面的專門訓練。很多人都是從自學8位微處理器Z-80開始的,缺乏對計算機科學方面系統(tǒng)的理論知識的深層次理解。在8位CPU的嵌入式應用中這種矛盾并不突出,而當嵌入式應用走向32位,應用程序越來越復雜時,就顯得力不從心。而科班出身的計算機專家又不可能對各個應用領域都熟悉。多數(shù)應用領域的開發(fā)人員習慣于畫一塊印刷線路板,畫個程序框圖,編一個軟件,試一試,于是產品開發(fā)就完成了。從計算機科學的角度來看,不但開發(fā)出的產品存在著諸多的不安全隱患,這種開發(fā)產品的方法本身就不夠科學。是計算機專家們多年潛心研究的成果,使用RTOS不僅增加了嵌入式應用系統(tǒng)的可靠性,縮短了產品的開發(fā)時間,而且應用程序的維護也會方便許多。

          在嵌入式產品開發(fā)中使用RTOS有很多好處,歸納起來主要有以下幾方面,首先RTOS支持多任務,應用程序被分解成多個任務,程序開發(fā)變得更加容易,便于維護,易讀易懂。提高了開發(fā)效率,縮短了開發(fā)周期。再者,計算機對關鍵事件的處理在延遲時間上有保證,即系統(tǒng)的實時性可以保證好于某一確定的值。還有系統(tǒng)的穩(wěn)定性、可靠性會得到提高。例如可以增加一些用于監(jiān)控各任務運行狀態(tài)的任務來提高系統(tǒng)的可靠性。

          價格因素限制了RTOS在我國嵌入式應用產品開發(fā)中的推廣與普及。也許這才是和者甚寡的最主要原因。多數(shù)RTOS的商業(yè)產品都相當?shù)馁F,著名的RTOS價位在2萬到3萬美元之間,國內只有少數(shù)實力雄厚的單位買得起。使用中,由于許多商業(yè)RTOS軟件都是所謂的黑盒子,即不提供源代碼,用戶知其然未必知其所以然。理解不透,用得不好,RTOS的優(yōu)勢也就不能全發(fā)揮出來。有些商業(yè)軟件還要對開發(fā)出來的產品按件收費,費率從幾美元到上百美元。給產品增加力額外的成本。

          隨著操作系統(tǒng)走向開放,越來越多的帶源代碼的無版稅軟件、自由軟件得到了廣泛的認可與應用。自由軟件Linux和可用于嵌入式應用的μCLinux的出現(xiàn)使RTOS不再神秘。一些商業(yè)RTOS軟件開始公開源碼。RTOS的一些自由軟件頻頻在網(wǎng)上出現(xiàn),自由軟件μC /OS和廉價的μC/OS-Ⅱ就是很好的例子。RTOS的春天來了,廣大嵌入式應用產品開發(fā)工程師與計算機專家間的溝壑在逐漸填平。

          μC/OS出自于美國的一位嵌入式系統(tǒng)專家Jean J.Labrosse。他后來成為嵌入式系統(tǒng)會議的顧問委員會委員,并在每年的嵌入式系統(tǒng)會議上講演。最早的文章連載在美國1992年<<嵌入式系統(tǒng)編程>>雜志的5月和6月刊上。源碼發(fā)布在該雜志的BBS上。1993年,美國的R&D出版社出了一本叫做μC/OS the Real Time Kernel的書,后來的幾年中書的銷量超過了15,000冊。世界上數(shù)以千計的工程技術人員將μC/OS應用到了各個領域,如照像機業(yè)、醫(yī)療儀器、音響設備、發(fā)動機控制、網(wǎng)絡接入設備、高速公路電話系統(tǒng)、ATM機、工業(yè)機器人等。近10年的應用史證明,這個RTOS是穩(wěn)定可靠的,且不斷有新版本推出。

          μC/OS已經(jīng)將移植到了幾乎所有知名的CUP上。移植的范例可以從網(wǎng)上下載。μC/OS the Real Time Kernel一書中附一張軟盤,是μC/OS的版本1.08。關于版權,書中寫到: 在您的應用中使用書中的代碼不需要許可證。但是您得指出您的產品中使用了μC/OS。如果是賣源碼得話,就有版權的問題了。

          1998年,作者決定出μC/OS的第二本書μC/OS-Ⅱ the Real Time Kernel,并設立了正式的網(wǎng)站:WWW. uC/OS -Ⅱ.COM,給μC/OS增加了一些新的功能。并且增加了約200頁的解釋。當μC/OS的商業(yè)價值得到認可時,μC/OS-Ⅱ的版權政策也發(fā)生了變化,把目標代碼嵌入到商業(yè)產品中去也需要版稅了。最新版本的μC/OS-Ⅱ V2.51索價55.95美元。中國電力出版社購買了這本書的版權,譯成了中文版,于2001年8月出版,中文書名是<<μC/OS-Ⅱ源碼開放的嵌入式實時操作系統(tǒng)>>。

          這是一本出色的教材,清華大學已在嵌入式系統(tǒng)與單片機教學中使用了這本書。書中不但給出了一個實時內核的全部源代碼,而且對這些代碼做了詳盡的解釋。對實時操作系統(tǒng)中的一些基本概念做了詳細的描述。源程序的寫作風格、注釋都相當規(guī)范、漂亮。讀了這本書就會弄明白,一段段的程序是怎么協(xié)調工作的。如果只是將數(shù)千行的程序代碼、數(shù)十個文件羅列在那里,讀起來會相當費勁。商業(yè)軟件不僅僅是貴,而即使有些軟件帶源代碼一起出售,也沒有哪一個解釋得如此詳盡。

          μC/OS和μC/OS-Ⅱ是專門為計算機的嵌入式應用設計的,絕大部分代碼是用C語言寫的。CPU硬件相關部分是用匯編語言寫的,總量約200行。匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。用戶只要有標準的ANSI 的C交叉編譯器,有匯編、連接等軟件工具,就可以將μC/OS-Ⅱ嵌入到開發(fā)的產品中。

          μC/OS和μC/OS-Ⅱ是占先式(Preemptive)多任務實時內核,是基于優(yōu)先級的,即總是讓進入就緒態(tài)的諸任務中優(yōu)先級最高的那個任務先運行。任務調度是用查表法完成的,速度快。每個任務都有互不相同的優(yōu)先級。有64個優(yōu)先級,最多支持64個任務。

          μC/OS和μC/OS-Ⅱ的另一特點是可裁剪,即只嵌入用戶程序用得著的那些函數(shù),即產品中既可以只用幾個函數(shù),也可以嵌入全部函數(shù),這樣內核占用的ROM/RAM資源,就可以依據(jù)產品調整。裁剪是通過條件編譯實現(xiàn)的。作者盡了極大的努力,使內核占用的資源盡量少。

          μC/OS-Ⅱ這本書中提供的內核源代碼以及幾個應用的例子是80x86 CPU為對象的。讀者可以在任何一臺PC機上用PC機上的標準的C編譯器對這些代碼編譯,然后在Windows中的DOS窗口下運行RTOS,邊讀書,分析書中所附的源代碼,邊實踐,運行μC/OS-Ⅱ,找到RTOS的感覺以后,再把μC/OS-Ⅱ移植到自己熟悉的一種CPU上去。可以從網(wǎng)上下載移植的范例。由于使用的編譯器不同,網(wǎng)上的范例未必能直接使用,故一定要讀一讀源代碼,用這種方式學習和掌握一個實時內核,直到有勇氣對它做一些改動和優(yōu)化。因為μC/O-II是為了嵌入式應用編寫的通用軟件,它不得不強調諸CPU有共性的那些方面,并將匯編代碼、CPU硬件相關部分代碼壓縮到最小,不可能照顧到不同CPU的各自特點。而我國的用戶一般對自己用過的一、兩種CPU非常熟悉。讀懂這些源碼以后,根據(jù)不同CPU的特長,對μC/OS-II中相當多的函數(shù)可進一步優(yōu)化,改善RTOS的實時性。

          雖然μC/OS-II僅僅是一個實時內核,但有了這個內核就有了良好的開始。在此基礎上許多功能都可以加上去,如內存管理、TCP/IP支持、遠程調用甚至文件系統(tǒng)。網(wǎng)上出現(xiàn)了基于μC/OS-Ⅱ的商業(yè)產品廣告。以μC/OS-Ⅱ為基礎,自己做一些功能軟件也不難,也有一些開放的資源可以參考。以TCP/IP為例,英國人Jeremy Bentham的TCPIP Lean: Web Server for Embedded System 一書就教您如何將TC/PIP嵌入8位單片機。

          讀書、學習、實踐,不但對于大專院校的學生,特別是對有經(jīng)驗的工程師,再學習,再實踐,學習RTOS,使用RTOS,我們全民族的微計算機嵌入式應用技術水平將會邁上一個新的臺階。


          關鍵詞: RTOS

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();