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