新聞中心

EEPW首頁 > 嵌入式系統 > μC/OS-II使用中的幾個熱點問題

μC/OS-II使用中的幾個熱點問題

——
作者: 時間:2007-02-28 來源:http://www.designnews.com.cn/BBS 收藏
μC/OS-II使用中的幾個熱點問題 !!《μC/OS-II——源碼公開的實時》一書是Jean J. Labrosse 所著,“Micro μC/OS-II The Real-Time Kernel”一書的中譯本。該書于2001年7月出版以后,引起了國內嵌入式實時系統應用領域中科技人員的極大興趣。一些有名的大學已經或者打算把它當作教材用于教學。有的公司提出以之培訓開發(fā)嵌入式應用的員工。在實際應用中,用戶提出較多的問題主要有:μ C/OS-II的應用領域和適用環(huán)境如何,交叉編譯工具問題,如何移植到用戶目標系統上,以及如何實現基于 μC/OS-II的著如IC/PIP網絡協議等問題。此外還有使用許可證問題等,本文擬對這些 μC/OS-II使用中的熱點問題做一簡要回答。


μC/OS與μC/OS-II 


μC/OS和μC/OS-II是專門為嵌入式應用設計的實時操作系統內核。注解得很詳細的源代碼有200頁,其中95%左右是用C語言寫的,與CPU類型相關的代碼用8088的匯編寫成,不超過200行。μC/OS最早的版本叫做 COS,關于 μCOS的論文,分兩期連載在美國的“嵌入式系統編程”(Embedded System Programming)雜志的1992年第5期和第6期上, COS的源碼放在該雜志網頁的留言版(BBS)上供用戶下載。1992年末,美國的R&D出版社出版了“Micro C/OS The Real-Time Kernel”一書,書中附有一張軟盤,是μC/OS的源代碼。該書后來成為一本暢銷書,發(fā)行量突破了15000。μC/OS是基于優(yōu)先級的可剝奪型(Preemptive)實時內核,可裁剪、可固化。由于與硬件相關的代碼僅200行左右,并寫在兩個單獨的文件中,且注解很清楚,故很容易將 C/OS移植到其它類型的CPU上。

在后來的幾年中,用戶紛紛將μC/OS移植到了各種CPU上,如Motorola的68HC11、68HC1216、68K、CPU32、CPU32+、PowerPC等。Intel的80X86、奔騰、奔騰-II、8051、8052、MCS-251、80196、8096等;日立的64180、H8/3XX系列、SH系列;西門子的80C166和TriCore、ARM的ARM6、ARM7、Analog的AD21xx、TI的TMS320飛利浦的XA、三菱的M16、M32等等。應用領域涵蓋了如照相機業(yè),醫(yī)療器械、音響設施,發(fā)動機控制、網絡設備、高速公路電話系統,自動柜員機、工業(yè)機器人等。

到1998年,作者出了他的第二本書“μC/OS-II The Real-Time Kernel”,給μC/OS增加了一些新功能,對源碼進行了整理,說明得更詳盡,書的厚度也增加了200頁,Jean J. Labrosse先生開通了μC/OS-II的商業(yè)網站,并不斷推出新版本。


使用許可證


μC/OS是完全免費的,μC/OS的源碼可以免費使用,但用戶不得以賣源碼來謀利。μC/OS的目標代碼可以免費地嵌入到用戶的產品中去,但用戶得標明在產品中使用了μC/OS。“μC/OS The Real-Time Kernel”一書中所附的軟盤是版本1.08。由于μC/OS的商業(yè)價值得到了社會越來越多的認可,高版本的μC/OS,即版本1.10以上不再是完全免費的。 μC/OS的2.0版本就是μC/OS-II,最新的2.51版本的μC/OS-II目前售價55.95美元。

μC/OS-II的源碼和目標碼可以在有資質的大學中免費提供給學生用于教學目的。而以盈利為目的的將μC/OS-II的目標代碼嵌入到產品中去則應得到“目標代碼銷售許可證”。

就準備從事嵌入式應用開發(fā)工作的大學生、研究生而言,μC/OS-II無疑是一本極好的教材。對于從事嵌入式應用開發(fā)工作的工程技術人員來說,μC/OS和μC/OS-II則是一件很實用的工具。


單片機的C編譯器


由于各公司出的CPU在硬件上有很大區(qū)別,要使用針對不同CPU的交叉編譯器,有的公司在推出CPU芯片時提供交叉C編譯器,而更多的情況是由第三方提供交叉C語言編譯器,編譯μC/OS或μC/OS-II必須有C語言的編譯器,對于C語言來說,一般是使用標準的ANSI的C,而功能強大的C編譯器不但提供C,還能提供視窗下的集成環(huán)境、CPU的純軟件仿真以及在線的源碼級調試工具。

一般情況下,交叉編譯器是要向第三方購買的,選擇C編譯器廠商時,可參考μC/OS-II網絡上移植范例欄目,該欄目中說明了移植時所用的編譯器是什么公司的。

免費的C編譯是Linux下的gcc。幾乎所有32位CPU都可以使用gcc交叉C編譯器。目前一些Windows環(huán)境下的軟件如Cygwin ASHWare等都允許在Windows環(huán)境下使用Linux的命令行方式,是不錯的開發(fā)工具,但由于Linux下的應用程序都相當復雜,非計算機方面的高級專業(yè)人才難以掌握。Linux是自由軟件,版本也很多,有些版本不很穩(wěn)定,與手冊難以對應。特別是遇到問題時,非專業(yè)人士很難解決。


適宜使用的CPU與系統開銷


可以說凡是能夠使用C語言編程的CPU都可以使用μC/OS或μC/OS-II,在μC/OS-II.com網站上有移植范例,在移植μC/OS-II欄目下,總共有80余款,較μC/OS的移植范例多出幾倍。新出現的CPU不久后就能找到移植范例,以Motorola芯片為例,除前面提到的品種,68HC08、ColdFire、以及DSP568XX上都有運行μC/OS-II的范例。

我們知道,在嵌入式應用中使用實時操作系統是有系統資源開銷的,也就是額外的ROM/RAM開銷和CPU負荷。由于實時操作系統引起的CPU額外負荷一般在5%以下,故不成為使用中的問題,而對于單片機,且工作在單片方式下,則要考慮由于引入操作系統帶來的存儲器開銷。由于目前單片機中FLASH的容量已經可以做到幾十K乃至幾百K,而μC/OS-II的ROM開銷一般在3K到10K之間,故ROM的開銷對于單片類應用也不成為問題。在單片方式下運行μC/OS或μC/OS-II要考慮的是RAM的開銷,由于目前單片機片內靜態(tài)隨機存儲器SRAM還不可能做得很大,一般只有幾百字節(jié)至十幾K,雖然我們也給出過在只有512字節(jié)的68HC08GP32上運行 μC/OS-II的例子,但筆者認為這只是一個用于學習的例子,可運行的任務只有幾個,可使用的操作系統的功能也少得可憐。筆者認為,至少有2K的RAM空間,使用μC/OS或μC/OS-II才有意義。當然如果嵌入式系統中使用了外擴的RAM和ROM,使用實時操作系統則全然沒有問題。 


基于μC/OS-II的應用軟件


μC/OS和μC/OS-II僅僅是一個實時操作系統內核,和商業(yè)實時操作系統軟件包比較起來,它缺少Utilities這一部分,如文件系統、遠程函數調用庫、通信軟件庫。通信軟件包括:TCP/IP軟件庫、籃牙通信軟件庫、IrDA紅外通信軟件庫等。這一類軟件的解決途徑無非是兩個,一個是買現成的,另一個途徑是自己寫。現成的第三方軟件廠商可以從μC/OS-II網頁上查到,如果用戶僅僅需要用單片機實現例如TCP/IP協議中的某些功能的話,自主開發(fā)并不很難。一個TCP/IP通信的庫,二進制代碼一般有70K到80K。單片機系統只需要將其中一部分嵌入到系統中去。英國作者Jeremy Bentham在他的“嵌入式系統用TCP/IP瘦服務器” (TCP/IP Lean Web Server)一書中,提供了用PIC單片機實現TCP/IP協議的例子。所用的單片機片內RAM只有348個字節(jié),TCP/IP通信程序也只有不到7K字節(jié),故參考別人做過的程序范例,自行開發(fā)這一類的應用也是學習的極好過程。

c語言相關文章:c語言教程




評論


相關推薦

技術專區(qū)

關閉