μC/OS-II使用中的幾個(gè)熱點(diǎn)問(wèn)題
——
μC/OS與μC/OS-II
μC/OS和μC/OS-II是專(zhuān)門(mén)為嵌入式應用設計的實(shí)時(shí)操作系統內核。注解得很詳細的源代碼有200頁(yè),其中95%左右是用C語(yǔ)言寫(xiě)的,與CPU類(lèi)型相關(guān)的代碼用8088的匯編寫(xiě)成,不超過(guò)200行。μC/OS最早的版本叫做 COS,關(guān)于 μCOS的論文,分兩期連載在美國的“嵌入式系統編程”(Embedded System Programming)雜志的1992年第5期和第6期上, COS的源碼放在該雜志網(wǎng)頁(yè)的留言版(BBS)上供用戶(hù)下載。1992年末,美國的R&D出版社出版了“Micro C/OS The Real-Time Kernel”一書(shū),書(shū)中附有一張軟盤(pán),是μC/OS的源代碼。該書(shū)后來(lái)成為一本暢銷(xiāo)書(shū),發(fā)行量突破了15000。μC/OS是基于優(yōu)先級的可剝奪型(Preemptive)實(shí)時(shí)內核,可裁剪、可固化。由于與硬件相關(guān)的代碼僅200行左右,并寫(xiě)在兩個(gè)單獨的文件中,且注解很清楚,故很容易將 C/OS移植到其它類(lèi)型的CPU上。
在后來(lái)的幾年中,用戶(hù)紛紛將μC/OS移植到了各種CPU上,如Motorola的68HC11、68HC1216、68K、CPU32、CPU32+、PowerPC等。Intel的80X86、奔騰、奔騰-II、8051、8052、MCS-251、80196、8096等;日立的64180、H8/3XX系列、SH系列;西門(mén)子的80C166和TriCore、ARM的ARM6、ARM7、Analog的AD21xx、TI的TMS320飛利浦的XA、三菱的M16、M32等等。應用領(lǐng)域涵蓋了如照相機業(yè),醫療器械、音響設施,發(fā)動(dòng)機控制、網(wǎng)絡(luò )設備、高速公路電話(huà)系統,自動(dòng)柜員機、工業(yè)機器人等。
到1998年,作者出了他的第二本書(shū)“μC/OS-II The Real-Time Kernel”,給μC/OS增加了一些新功能,對源碼進(jìn)行了整理,說(shuō)明得更詳盡,書(shū)的厚度也增加了200頁(yè),Jean J. Labrosse先生開(kāi)通了μC/OS-II的商業(yè)網(wǎng)站,并不斷推出新版本。
使用許可證
μC/OS是完全免費的,μC/OS的源碼可以免費使用,但用戶(hù)不得以賣(mài)源碼來(lái)謀利。μC/OS的目標代碼可以免費地嵌入到用戶(hù)的產(chǎn)品中去,但用戶(hù)得標明在產(chǎn)品中使用了μC/OS?!唉藽/OS The Real-Time Kernel”一書(shū)中所附的軟盤(pán)是版本1.08。由于μC/OS的商業(yè)價(jià)值得到了社會(huì )越來(lái)越多的認可,高版本的μC/OS,即版本1.10以上不再是完全免費的。 μC/OS的2.0版本就是μC/OS-II,最新的2.51版本的μC/OS-II目前售價(jià)55.95美元。
μC/OS-II的源碼和目標碼可以在有資質(zhì)的大學(xué)中免費提供給學(xué)生用于教學(xué)目的。而以盈利為目的的將μC/OS-II的目標代碼嵌入到產(chǎn)品中去則應得到“目標代碼銷(xiāo)售許可證”。
就準備從事嵌入式應用開(kāi)發(fā)工作的大學(xué)生、研究生而言,μC/OS-II無(wú)疑是一本極好的教材。對于從事嵌入式應用開(kāi)發(fā)工作的工程技術(shù)人員來(lái)說(shuō),μC/OS和μC/OS-II則是一件很實(shí)用的工具。
單片機的C編譯器
由于各公司出的CPU在硬件上有很大區別,要使用針對不同CPU的交叉編譯器,有的公司在推出CPU芯片時(shí)提供交叉C編譯器,而更多的情況是由第三方提供交叉C語(yǔ)言編譯器,編譯μC/OS或μC/OS-II必須有C語(yǔ)言的編譯器,對于C語(yǔ)言來(lái)說(shuō),一般是使用標準的ANSI的C,而功能強大的C編譯器不但提供C,還能提供視窗下的集成環(huán)境、CPU的純軟件仿真以及在線(xiàn)的源碼級調試工具。
一般情況下,交叉編譯器是要向第三方購買(mǎi)的,選擇C編譯器廠(chǎng)商時(shí),可參考μC/OS-II網(wǎng)絡(luò )上移植范例欄目,該欄目中說(shuō)明了移植時(shí)所用的編譯器是什么公司的。
免費的C編譯是Linux下的gcc。幾乎所有32位CPU都可以使用gcc交叉C編譯器。目前一些Windows環(huán)境下的軟件如Cygwin ASHWare等都允許在Windows環(huán)境下使用Linux的命令行方式,是不錯的開(kāi)發(fā)工具,但由于Linux下的應用程序都相當復雜,非計算機方面的高級專(zhuān)業(yè)人才難以掌握。Linux是自由軟件,版本也很多,有些版本不很穩定,與手冊難以對應。特別是遇到問(wèn)題時(shí),非專(zhuān)業(yè)人士很難解決。
適宜使用的CPU與系統開(kāi)銷(xiāo)
可以說(shuō)凡是能夠使用C語(yǔ)言編程的CPU都可以使用μC/OS或μC/OS-II,在μC/OS-II.com網(wǎng)站上有移植范例,在移植μC/OS-II欄目下,總共有80余款,較μC/OS的移植范例多出幾倍。新出現的CPU不久后就能找到移植范例,以Motorola芯片為例,除前面提到的品種,68HC08、ColdFire、以及DSP568XX上都有運行μC/OS-II的范例。
我們知道,在嵌入式應用中使用實(shí)時(shí)操作系統是有系統資源開(kāi)銷(xiāo)的,也就是額外的ROM/RAM開(kāi)銷(xiāo)和CPU負荷。由于實(shí)時(shí)操作系統引起的CPU額外負荷一般在5%以下,故不成為使用中的問(wèn)題,而對于單片機,且工作在單片方式下,則要考慮由于引入操作系統帶來(lái)的存儲器開(kāi)銷(xiāo)。由于目前單片機中FLASH的容量已經(jīng)可以做到幾十K乃至幾百K,而μC/OS-II的ROM開(kāi)銷(xiāo)一般在3K到10K之間,故ROM的開(kāi)銷(xiāo)對于單片類(lèi)應用也不成為問(wèn)題。在單片方式下運行μC/OS或μC/OS-II要考慮的是RAM的開(kāi)銷(xiāo),由于目前單片機片內靜態(tài)隨機存儲器SRAM還不可能做得很大,一般只有幾百字節至十幾K,雖然我們也給出過(guò)在只有512字節的68HC08GP32上運行 μC/OS-II的例子,但筆者認為這只是一個(gè)用于學(xué)習的例子,可運行的任務(wù)只有幾個(gè),可使用的操作系統的功能也少得可憐。筆者認為,至少有2K的RAM空間,使用μC/OS或μC/OS-II才有意義。當然如果嵌入式系統中使用了外擴的RAM和ROM,使用實(shí)時(shí)操作系統則全然沒(méi)有問(wèn)題。
基于μC/OS-II的應用軟件
μC/OS和μC/OS-II僅僅是一個(gè)實(shí)時(shí)操作系統內核,和商業(yè)實(shí)時(shí)操作系統軟件包比較起來(lái),它缺少Utilities這一部分,如文件系統、遠程函數調用庫、通信軟件庫。通信軟件包括:TCP/IP軟件庫、籃牙通信軟件庫、IrDA紅外通信軟件庫等。這一類(lèi)軟件的解決途徑無(wú)非是兩個(gè),一個(gè)是買(mǎi)現成的,另一個(gè)途徑是自己寫(xiě)?,F成的第三方軟件廠(chǎng)商可以從μC/OS-II網(wǎng)頁(yè)上查到,如果用戶(hù)僅僅需要用單片機實(shí)現例如TCP/IP協(xié)議中的某些功能的話(huà),自主開(kāi)發(fā)并不很難。一個(gè)TCP/IP通信的庫,二進(jìn)制代碼一般有70K到80K。單片機系統只需要將其中一部分嵌入到系統中去。英國作者Jeremy Bentham在他的“嵌入式系統用TCP/IP瘦服務(wù)器” (TCP/IP Lean Web Server)一書(shū)中,提供了用PIC單片機實(shí)現TCP/IP協(xié)議的例子。所用的單片機片內RAM只有348個(gè)字節,TCP/IP通信程序也只有不到7K字節,故參考別人做過(guò)的程序范例,自行開(kāi)發(fā)這一類(lèi)的應用也是學(xué)習的極好過(guò)程。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評論