嵌入式實時操作系統(tǒng)mC/OS-II的應用與新發(fā)展
兩年來,筆者看到很多國內關于嵌入式系統(tǒng)應用的雜志,都刊登了關于mC/OS,mC/0S-II移植與應用的文章。這些刊物對RTOS嵌入式應用的推廣功不可沒。
mC/OS以及mC/0S-II在國內普及與推廣的意義首先是提高了嵌入式工作者對RTOS的認知度,強化了學習使用RTOS的觀念與意識,其后才是mC/OS、mC/0S-II本身的實用價值。mC/OS、mC/0S-II是一個小的實時內核,源碼公開,有詳盡的解釋。正是因為其小,才便于研究、理解和掌握。
兩年來,筆者除給在校生上課外,也應邀為社會上的用戶、公司舉辦過培訓與講座,從用戶反映的問題來看,主要涉及“移植”與“應用”這兩個方面。以下,筆者就如何開發(fā)基于mC/0S-II的應用軟件和移植過程中使用的C編譯器問題提出一些建議,并簡要介紹μC/0S-II的最新版本V.2.52和mC/0S-II一書的第二版,供讀者參考。
基于mC/0S-II的應用軟件
由于mC/0S-II的商業(yè)價值得到了認可,一些基于mC/0S-II的商業(yè)軟件也可以買到,如TCP/IP協(xié)議棧、藍牙通信軟件、紅外通信軟件等(見UCOS-III.com網(wǎng)站)。我們這里說的是如何自己開發(fā)這類應用軟件。以TCP/IP協(xié)議棧為例,如果需要全套的TCP/IP功能,可以直接使用嵌入式Linux ,如mCLinux、 RTEMS等。以mCLinux為例,內核本身要占用512KB內存,TCP/IP部分也有70B至80KB。mC/05II特定的是一個小內核,本身占用內存在10KB量級上。對于特定的應用,嵌入mC/0S-II的產(chǎn)品往往只需要TCP/IP中某一小部分。參照TCP/IP協(xié)議標準和一些公開出版的圖書,以及網(wǎng)上的源碼資源,自己寫這一部分并非十分困難。舉例說來,如果用戶已經(jīng)完成了一套基于mC/0S-II的單片機控制系統(tǒng),而單片機仍有一定的剩余負荷可支持網(wǎng)絡通信,用戶希望能通過Internet網(wǎng)遠程控制該系統(tǒng)。在硬件上,可以通過RS-232和Modem撥號上網(wǎng),也可以加一片網(wǎng)絡接口芯片如RTL8019直接上網(wǎng)。軟件開發(fā)方面,TCP/IP的標準可以從www.rfc-editor.org中找到,一本不錯的參考書,是英國人Jeremy Bentham所著《TCP/IP Lean Web Servers for Embedded Systems》。這本約400頁的書后所附光盤中有實現(xiàn)一個瘦服務器的全部源代碼。書中以Microchip的8位單片機PIC16CF6為例,實現(xiàn)了單片機通過Modem撥號上網(wǎng)的功能。參照上述資料,我們在8位、16位、32位 Motorola單片機上也實現(xiàn)了通過RTL8019 Internet網(wǎng)接口芯片直接上網(wǎng)的功能。在寫這些軟件時,我們發(fā)現(xiàn),在mC/0S-II下寫TCP/IP通信軟件,比傳統(tǒng)的前后臺系統(tǒng)要方便很多。單片機要在完成原來控制系統(tǒng)功能的前提下,同時實現(xiàn)網(wǎng)絡通信,又是發(fā)送又是接收,沒有RTOS支持簡直不可想象。從代碼長度看,實現(xiàn)基本功能的TCP/IP協(xié)議棧只需要大約7KB目標代碼,比使用mCLinux顯然有優(yōu)勢。上面提到的瘦服務器(Lean Server)一書是一本暢銷書,其第二版已經(jīng)出版了,據(jù)悉機械工業(yè)出版社已購買了中譯本版權,希望不久的將來能見到該書的中譯本。
mC/0S-II的移植
mC/0S-II是專門為單片機嵌入式應用設計的實時操作系統(tǒng)內核,主體用標準的ANSI C語言寫成,可移植性極好。目前已被成功地移植到四十多種CPU上,包括8位、16位、32位及64位單片機,包括若干種DSP,因為移植的范例大多可以從網(wǎng)上下載,故移植起來并不困難。綜合來自各方面的反映,移植難度并不在于mC/0S-II源代碼本身,而在于不同用戶使用了不同的C編譯器,由于編譯器的差異而引發(fā)的移植方面的問題有時很難得到友人的幫助。而對于嵌入式應用潛在市場群體—正在高校就讀的研究生們說來,困難還在于:幾乎所有用于單片機的C編譯器都是商業(yè)軟件,其中有些還相當貴。
使用自由軟件Linux下的C語言交叉編譯器GNU gcc作為開發(fā)工具來編譯移植mC/0S-II是一個不錯的選擇。使用自由軟件開發(fā)嵌入式應用的意義決不僅限于經(jīng)濟上節(jié)省開支。學習使用自由軟件過程,實際上是培養(yǎng)IT高手的過程。自由軟件將造就一大批有共同語言的軟件開發(fā)精英,GNU gcc交叉編譯工具支持大多數(shù)知名的16位、32位嵌入式應用CPU,如Motorola的68HC11/12、M68K、CPU32、ColdFire 、PowerPC,AMD的AMD29K,Intel的i386、Intel960,其它如著名的ARM、Thumb、M32、MIPS、RT、SPARC、DEC的Alpha、VAX等,還包括TI的TMS32 DSP等。
自由軟件有強大的網(wǎng)上技術支持是公認的,不斷推出的升級版本表明自由軟件的強大生命力。使用GNU gcc作為交叉編譯器的難點不在于交叉編譯器的用法本身,而在于搭建Linux下的開發(fā)環(huán)境。這一部分工作在國外一般由專門的系統(tǒng)管理員來做。而國內由于公司的規(guī)模較小,往往沒有專門的系統(tǒng)管理員,這部分工作要自己做,從而增加了Linux系統(tǒng)下自由軟件的使用難度。使用中的另一個難點是,遇到問題時常常不知道如何處理。要學會看系統(tǒng)提供的幫助信息,向Linux的高手請教,校園內利用BBS的交流是一種學習的極好方式。還有一個辦法是在網(wǎng)上搜索,因為你遇到的問題也許過去別人也遇到過,解決辦法可能網(wǎng)上就有。再有一個辦法就是直接給作者發(fā)電子郵件。自由軟件有源碼,大多都有作者的Email地址。
如果mC/0S-II的移植以GNU gcc交叉編譯器為基礎,討論起來共同語言會更多些,移植會更容易。
一些芯片生產(chǎn)商在推出其嵌入式應用芯片的同時就提供了mC/0S-II的移植代碼,如Motorola的16位DSP 56800系列,移植代碼包含在系統(tǒng)開發(fā)工具SDK中,C編譯器采用其子公司metrowerks的Codewarrior。
雖然移植不難有現(xiàn)成的例子可參考,但筆者仍認為移植是一個重要的學習過程,這一過程的意義遠大于移植后的結果。這一過程有助于提高對RTOS的認識與理解,從而提高嵌入式工作者的理論與技術水平。
mC/0S-II的新進展
兩年前,我們介紹給讀者的mC/0S-II是mC/0S-II最初的版本,它以軟盤的形式附在《mC/0S-II The Real Time Kernel》一書的后面。該書中譯本所附的光盤中也是這個版本。該版本稱作V.2.0版本。V.2.0以下的版本指mC/OS。在V.2.0基礎上稍做改動的版本是V.2.04,出現(xiàn)在2000年11月。到2001年6月,作者推出了V2.51版本。在這一版本中,主要增加的新功能有:互斥型信號量和事件標志。
今年上半年,CMP公司出版了《mC/0S-IIThe Real Timce Kernel》的第二版。書中所附光盤中給出了mC/0S-II VV2.52版的源代碼。版本V2.52在V2.51的基礎上做了多處修改。比起該書第一版,新版的mC/0S-II一書增加了很多新內容,如介紹系統(tǒng)服務,第一版中只用了一條來描述,而新版書中擴展到6條。在如何移植mC/0S-II這一條中,增加了移植后如何測試mC/0S-II(詳見www.ucos-ii.com網(wǎng)站)。
據(jù)說國內某出版社正在與CMP公司商討購買中譯本版權的事,《mC/0S-III The Real Time Kernel》一書的新版中譯本,以及最新mC/0S-II V2.52有望在不久的將來與中國讀者見面?!?
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
tcp/ip相關文章:tcp/ip是什么
評論