|
成都國嵌嵌入式培訓(xùn)_嵌入式實(shí)時(shí)操作系統(tǒng)uC/OS-II的應(yīng)用,
回顧嵌入式RTOS在我國應(yīng)用與推廣的歷程,幾年前,RTOS的概念還很少為嵌入式系統(tǒng)工程師接受。這是由于8位單片機(jī)時(shí)代,應(yīng)用程序相對簡單,設(shè)計(jì)者使用RTOS的意識(shí)不強(qiáng);另一方面,商業(yè)RTOS軟件過于昂貴。兩年前的這個(gè)時(shí)候,筆者應(yīng)《電子產(chǎn)品世界》之邀,在嵌入式 2000學(xué)術(shù)研討會(huì)上提出,以免費(fèi)的RTOS-uC/OS的學(xué)習(xí)與應(yīng)用為突破口,提倡學(xué)習(xí)RTOS,使用RTOS,不久以后,《uC/0S-II the Real Time Kernel》一書的中譯本出版了。一些著名的大學(xué)開始用uC/0S-II作教材給研究生講述RTOS。
近年來,筆者看到很多國內(nèi)關(guān)于嵌入式系統(tǒng)應(yīng)用的雜志,都刊登了關(guān)于uC/OS,uC/0S-II移植與應(yīng)用的文章。這些刊物對RTOS嵌入式應(yīng)用的推廣功不可沒。mC/OS以及uC/0S-II在國內(nèi)普及與推廣的意義首先是提高了嵌入式工作者對RTOS的認(rèn)知度,強(qiáng)化了學(xué)習(xí)使用RTOS的觀念與意識(shí),其后才是mC/OS、uC/0S-II本身的實(shí)用價(jià)值。mC/OS、uC/0S-II是一個(gè)小的實(shí)時(shí)內(nèi)核,源碼公開,有詳盡的解釋。正是因?yàn)槠湫,才便于研究、理解和掌握?
以下,筆者就如何開發(fā)基于uC/0S-II的應(yīng)用軟件和移植過程中使用的C編譯器問題提出一些建議,并簡要介紹μC/0S-II的最新版本V.2.52和uC/0S-II一書的第二版,供讀者參考。
如何開發(fā)基于uC/0S-II的應(yīng)用軟件
基于uC/0S-II的應(yīng)用軟件由于uC/0S-II的商業(yè)價(jià)值得到了認(rèn)可,一些基于uC/0S-II的商業(yè)軟件也可以買到,如TCP/IP協(xié)議棧、藍(lán)牙通信軟件、紅外通信軟件等(見UCOS-III.com 網(wǎng)站)。我們這里說的是如何自己開發(fā)這類應(yīng)用軟件。以TCP/IP 協(xié)議棧為例,如果需要全套的TCP/IP功能,可以直接使用嵌入式Linux ,如mCLinux、 RTEMS等。以mCLinux為例,內(nèi)核本身要占用512KB內(nèi)存,TCP/IP部分也有70B至80KB。mC/OSII特定的是一個(gè)小內(nèi)核,本身占用內(nèi)存在10KB量級上。對于特定的應(yīng)用,嵌入uC/0S-II的產(chǎn)品往往只需要TCP/IP中某一小部分。參照TCP/IP協(xié)議標(biāo)準(zhǔn)和一些公開出版的圖書,以及網(wǎng)上的源碼資源,自己寫這一部分并非十分困難。舉例說來,如果用戶已經(jīng)完成了一套基于uC/0S-II的單片機(jī)控制系統(tǒng),而單片機(jī)仍有一定的剩余負(fù)荷可支持網(wǎng)絡(luò)通信,用戶希望能通過Internet網(wǎng)遠(yuǎn)程控制該系統(tǒng)。在硬件上,可以通過RS-232和Modem撥號(hào)上網(wǎng),也可以加一片網(wǎng)絡(luò)接口芯片如RTL8019直接上網(wǎng)。軟件開發(fā)方面,TCP/IP的標(biāo)準(zhǔn)可以從www.rfc-editor.org中找到,一本不錯(cuò)的參考書,是英國人jemy Bentham所著《TCP/IP Lean Web Servers for Emb-edded Systems》。這本約400頁的書后所附光盤中有實(shí)現(xiàn)一個(gè)瘦服務(wù)器的全部源代碼。書中以Microchip的8位單片機(jī)PIC16CF6為例,實(shí)現(xiàn)了單片機(jī)通過Modem撥號(hào)上網(wǎng)的功能。參照上述資料,我們在8位、16位、32位 Motorola單片機(jī)上也實(shí)現(xiàn)了通過RTL8019 Internet網(wǎng)接口芯片直接上網(wǎng)的功能。在寫這些軟件時(shí),我們發(fā)現(xiàn),在uC/0S-II下寫TCP/IP通信軟件,比傳統(tǒng)的前后臺(tái)系統(tǒng)要方便很多。單片機(jī)要在完成原來控制系統(tǒng)功能的前提下,同時(shí)實(shí)現(xiàn)網(wǎng)絡(luò)通信,又是發(fā)送又是接收,沒有RTOS支持簡直不可想象。從代碼長度看,實(shí)現(xiàn)基本功能的TCP/IP 協(xié)議棧只需要大約7KB目標(biāo)代碼,比使用mCLinux顯然有優(yōu)勢。上面提到的瘦服務(wù)器(Lean Server) 一書是一本暢銷書,其第二版已經(jīng)出版了,據(jù)悉機(jī)械工業(yè)出版社已購買了中譯本版權(quán),希望不久的將來能見到該書的中譯本。嵌入式中軸怎么樣, 嵌入式網(wǎng)頁視頻抓取, 為什么安卓是嵌入式, 嵌入式工控單板, 嵌入式關(guān)閉蜂鳴器, 嵌入式類型病毒, 嵌入式交叉編譯環(huán)境, 嵌入式資訊平臺(tái), 大疆嵌入式軟件筆試, 怎么快速了解嵌入式, 嵌入式導(dǎo)航壽命, 嵌入式數(shù)據(jù)結(jié)構(gòu)算法, 嵌入式分析表, 嵌入式開發(fā)英文簡歷, 嵌入式計(jì)算機(jī)等, 碩士畢設(shè)嵌入式, 嵌入式服務(wù)器搭建, 嵌入式測試筆試題目, 嵌入式系教學(xué)視頻, 嵌入式臂頭是啥意思, 嵌入式c代碼網(wǎng)站, 嵌入式開發(fā)編程學(xué)習(xí),
uC/0S-II的移植
uC/0S-II是專門為單片機(jī)嵌入式應(yīng)用設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng)內(nèi)核,主體用標(biāo)準(zhǔn)的ANSI C語言寫成,可移植性極好。目前已被成功地移植到四十多種CPU上,包括8位、16位、32位及64位單片機(jī),包括若干種DSP,因?yàn)橐浦驳姆独蠖嗫梢詮木W(wǎng)上下載,故移植起來并不困難。綜合來自各方面的反映,移植難度并不在于uC/0S-II源代碼本身,而在于不同用戶使用了不同的 C編譯器,由于編譯器的差異而引發(fā)的移植方面的問題有時(shí)很難得到友人的幫助。而對于嵌入式應(yīng)用潛在市場群體-正在高校就讀的研究生們說來,困難還在于:幾乎所有用于單片機(jī)的C編譯器都是商業(yè)軟件,其中有些還相當(dāng)貴。
使用自由軟件Linux下的C語言交叉編譯器GNU gcc作為開發(fā)工具來編譯移植uC/0S-II是一個(gè)不錯(cuò)的選擇。
使用自由軟件開發(fā)嵌入式應(yīng)用的意義決不僅限于經(jīng)濟(jì)上節(jié)省開支。學(xué)習(xí)使用自由軟件過程,實(shí)際上是培養(yǎng)IT高手的過程。自由軟件將造就一大批有共同語言的軟件開發(fā)精英,GNU gcc交叉編譯工具支持大多數(shù)知名的16位、32位嵌入式應(yīng)用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等。
自由軟件有強(qiáng)大的網(wǎng)上技術(shù)支持是公認(rèn)的,不斷推出的升級版本表明自由軟件的強(qiáng)大生命力。使用GNU gcc作為交叉編譯器的難點(diǎn)不在于交叉編譯器的用法本身,而在于搭建Linux下的開發(fā)環(huán)境。這一部分工作在國外一般由專門的系統(tǒng)管理員來做。而國內(nèi)由于公司的規(guī)模較小,往往沒有專門的系統(tǒng)管理員,這部分工作要自己做,從而增加了Linux系統(tǒng)下自由軟件的使用難度。使用中的另一個(gè)難點(diǎn)是,遇到問題時(shí)常常不知道如何處理。要學(xué)會(huì)看系統(tǒng)提供的幫助信息,向Linux的高手請教,校園內(nèi)利用BBS的交流是一種學(xué)習(xí)的極好方式。還有一個(gè)辦法是在網(wǎng)上搜索,因?yàn)槟阌龅降膯栴}也許過去別人也遇到過,解決辦法可能網(wǎng)上就有。再有一個(gè)辦法就是直接給作者發(fā)電子郵件。自由軟件有源碼,大多都有作者的Email地址。如果 uC/0S-II的移植以GNU gcc交叉編譯器為基礎(chǔ),討論起來共同語言會(huì)更多些,移植會(huì)更容易。一些芯片生產(chǎn)商在推出其嵌入式應(yīng)用芯片的同時(shí)就提供了uC/0S-II的移植代碼,如 Motorola的16位DSP 56800系列,移植代碼包含在系統(tǒng)開發(fā)工具SDK中,C編譯器采用其子公司metrowerks的codewarrior。雖然移植不難有現(xiàn)成的例子可參考,但筆者仍認(rèn)為移植是一個(gè)重要的學(xué)習(xí)過程,這一過程的意義遠(yuǎn)大于移植后的結(jié)果。這一過程有助于提高對RTOS的認(rèn)識(shí)與理解,從而提高嵌入式工作者的理論與技術(shù)水平。 |
|