<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式實(shí)時(shí)操作系統uC/OS-II的應用與新發(fā)展

嵌入式實(shí)時(shí)操作系統uC/OS-II的應用與新發(fā)展

作者: 時(shí)間:2010-08-04 來(lái)源:網(wǎng)絡(luò ) 收藏

回顧嵌入式RTOS在我國應用與推廣的歷程,幾年前,RTOS的概念還很少為嵌入式系統工程師接受。這是由于8位單片機時(shí)代,應用程序相對簡(jiǎn)單,設計者使用RTOS的意識不強;另一方面,商業(yè)RTOS軟件過(guò)于昂貴。兩年前的這個(gè)時(shí)候,筆者應《電子產(chǎn)品世界》之邀,在嵌入式 2000學(xué)術(shù)研討會(huì )上提出,以免費的RTOS-uC/OS的學(xué)習與應用為突破口,提倡學(xué)習RTOS,使用RTOS,不久以后,《uC/0S-II the Real Time Kernel》一書(shū)的中譯本出版了。一些著(zhù)名的大學(xué)開(kāi)始用uC/0S-II作教材給研究生講述RTOS。

近年來(lái),筆者看到很多國內關(guān)于嵌入式系統應用的雜志,都刊登了關(guān)于uC/OS,uC/0S-II移植與應用的文章。這些刊物對RTOS嵌入式應用的推廣功不可沒(méi)。mC/OS以及uC/0S-II在國內普及與推廣的意義首先是提高了嵌入式工作者對RTOS的認知度,強化了學(xué)習使用RTOS的觀(guān)念與意識,其后才是mC/OS、uC/0S-II本身的實(shí)用價(jià)值。mC/OS、uC/0S-II是一個(gè)小的實(shí)時(shí)內核,源碼公開(kāi),有詳盡的解釋。正是因為其小,才便于研究、理解和掌握。

以下,筆者就如何開(kāi)發(fā)基于uC/0S-II的應用軟件和移植過(guò)程中使用的C編譯器問(wèn)題提出一些建議,并簡(jiǎn)要介紹μC/0S-II的最新版本V.2.52和uC/0S-II一書(shū)的第二版,供讀者參考。

如何開(kāi)發(fā)基于uC/0S-II的應用軟件

基于uC/0S-II的應用軟件由于uC/0S-II的商業(yè)價(jià)值得到了認可,一些基于uC/0S-II的商業(yè)軟件也可以買(mǎi)到,如TCP/IP協(xié)議棧、藍牙通信軟件、紅外通信軟件等(見(jiàn)UCOS-III.com網(wǎng)站)。我們這里說(shuō)的是如何自己開(kāi)發(fā)這類(lèi)應用軟件。以TCP/IP 協(xié)議棧為例,如果需要全套的TCP/IP功能,可以直接使用嵌入式Linux ,如mCLinux、 RTEMS等。以mCLinux為例,內核本身要占用512KB內存,TCP/IP部分也有70B至80KB。mC/OSII特定的是一個(gè)小內核,本身占用內存在10KB量級上。對于特定的應用,嵌入uC/0S-II的產(chǎn)品往往只需要TCP/IP中某一小部分。參照TCP/IP協(xié)議標準和一些公開(kāi)出版的圖書(shū),以及網(wǎng)上的源碼資源,自己寫(xiě)這一部分并非十分困難。舉例說(shuō)來(lái),如果用戶(hù)已經(jīng)完成了一套基于uC/0S-II的單片機控制系統,而單片機仍有一定的剩余負荷可支持網(wǎng)絡(luò )通信,用戶(hù)希望能通過(guò)Internet網(wǎng)遠程控制該系統。在硬件上,可以通過(guò)RS-232和Modem撥號上網(wǎng),也可以加一片網(wǎng)絡(luò )接口芯片如RTL8019直接上網(wǎng)。軟件開(kāi)發(fā)方面,TCP/IP的標準可以從www.rfc-editor.org中找到,一本不錯的參考書(shū),是英國人jemy Bentham所著(zhù)《TCP/IP Lean Web Servers for Emb-edded Systems》。這本約400頁(yè)的書(shū)后所附光盤(pán)中有實(shí)現一個(gè)瘦服務(wù)器的全部源代碼。書(shū)中以Microchip的8位單片機PIC16CF6為例,實(shí)現了單片機通過(guò)Modem撥號上網(wǎng)的功能。參照上述資料,我們在8位、16位、32位 Motorola單片機上也實(shí)現了通過(guò)RTL8019 Internet網(wǎng)接口芯片直接上網(wǎng)的功能。在寫(xiě)這些軟件時(shí),我們發(fā)現,在uC/0S-II下寫(xiě)TCP/IP通信軟件,比傳統的前后臺系統要方便很多。單片機要在完成原來(lái)控制系統功能的前提下,同時(shí)實(shí)現網(wǎng)絡(luò )通信,又是發(fā)送又是接收,沒(méi)有RTOS支持簡(jiǎn)直不可想象。從代碼長(cháng)度看,實(shí)現基本功能的TCP/IP 協(xié)議棧只需要大約7KB目標代碼,比使用mCLinux顯然有優(yōu)勢。上面提到的瘦服務(wù)器(Lean Server) 一書(shū)是一本暢銷(xiāo)書(shū),其第二版已經(jīng)出版了,據悉機械工業(yè)出版社已購買(mǎi)了中譯本版權,希望不久的將來(lái)能見(jiàn)到該書(shū)的中譯本。

uC/0S-II的移植

uC/0S-II是專(zhuān)門(mén)為單片機嵌入式應用設計的實(shí)時(shí)操作系統內核,主體用標準的ANSI C語(yǔ)言寫(xiě)成,可移植性極好。目前已被成功地移植到四十多種CPU上,包括8位、16位、32位及64位單片機,包括若干種DSP,因為移植的范例大多可以從網(wǎng)上下載,故移植起來(lái)并不困難。綜合來(lái)自各方面的反映,移植難度并不在于uC/0S-II源代碼本身,而在于不同用戶(hù)使用了不同的 C編譯器,由于編譯器的差異而引發(fā)的移植方面的問(wèn)題有時(shí)很難得到友人的幫助。而對于嵌入式應用潛在市場(chǎng)群體-正在高校就讀的研究生們說(shuō)來(lái),困難還在于:幾乎所有用于單片機的C編譯器都是商業(yè)軟件,其中有些還相當貴。

使用自由軟件Linux下的C語(yǔ)言交叉編譯器GNU gcc作為開(kāi)發(fā)工具來(lái)編譯移植uC/0S-II是一個(gè)不錯的選擇。

使用自由軟件開(kāi)發(fā)嵌入式應用的意義決不僅限于經(jīng)濟上節省開(kāi)支。學(xué)習使用自由軟件過(guò)程,實(shí)際上是培養IT高手的過(guò)程。自由軟件將造就一大批有共同語(yǔ)言的軟件開(kāi)發(fā)精英,GNU gcc交叉編譯工具支持大多數知名的16位、32位嵌入式應用CPU,如Motorola的68HC11/12、M68K、CPU32、ColdFire 、PowerPC,AMD的AMD29K,Intel的i386、Intel960,其它如著(zhù)名的ARM、Thumb、M32、MIPS、RT、 SPARC、DEC的Alpha、 VAX等,還包括TI的TMS32 DSP等。

自由軟件有強大的網(wǎng)上技術(shù)支持是公認的,不斷推出的升級版本表明自由軟件的強大生命力。使用GNU gcc作為交叉編譯器的難點(diǎn)不在于交叉編譯器的用法本身,而在于搭建Linux下的開(kāi)發(fā)環(huán)境。這一部分工作在國外一般由專(zhuān)門(mén)的系統管理員來(lái)做。而國內由于公司的規模較小,往往沒(méi)有專(zhuān)門(mén)的系統管理員,這部分工作要自己做,從而增加了Linux系統下自由軟件的使用難度。使用中的另一個(gè)難點(diǎn)是,遇到問(wèn)題時(shí)常常不知道如何處理。要學(xué)會(huì )看系統提供的幫助信息,向Linux的高手請教,校園內利用BBS的交流是一種學(xué)習的極好方式。還有一個(gè)辦法是在網(wǎng)上搜索,因為你遇到的問(wèn)題也許過(guò)去別人也遇到過(guò),解決辦法可能網(wǎng)上就有。再有一個(gè)辦法就是直接給作者發(fā)電子郵件。自由軟件有源碼,大多都有作者的Email地址。如果 uC/0S-II的移植以GNU gcc交叉編譯器為基礎,討論起來(lái)共同語(yǔ)言會(huì )更多些,移植會(huì )更容易。一些芯片生產(chǎn)商在推出其嵌入式應用芯片的同時(shí)就提供了uC/0S-II的移植代碼,如Motorola的16位DSP 56800系列,移植代碼包含在系統開(kāi)發(fā)工具SDK中,C編譯器采用其子公司metrowerks的codewarrior。雖然移植不難有現成的例子可參考,但筆者仍認為移植是一個(gè)重要的學(xué)習過(guò)程,這一過(guò)程的意義遠大于移植后的結果。這一過(guò)程有助于提高對RTOS的認識與理解,從而提高嵌入式工作者的理論與技術(shù)水平。

本文引用地址:http://dyxdggzs.com/article/241375.htm

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


矢量控制相關(guān)文章:矢量控制原理


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>