工控網(wǎng)首頁(yè)
>

應(yīng)用設(shè)計(jì)

>

源碼公開(kāi)的嵌入式系統(tǒng)軟件資源

源碼公開(kāi)的嵌入式系統(tǒng)軟件資源

2003/11/24 0:00:00
長(zhǎng)期以來(lái),價(jià)格因素限制了RTOS在我國(guó)嵌入式應(yīng)用產(chǎn)品開(kāi)發(fā)中的推廣與普及。而隨著操作系統(tǒng)走向開(kāi)放,越來(lái)越多的帶源代碼的自由軟件得到了廣泛的認(rèn)可與應(yīng)用,其中最著名的是Linux。 Linux 不是實(shí)時(shí)的,于是出現(xiàn)了RTLinux, (詳見(jiàn) www.fsmlabs.com ) RTLinux 是實(shí)時(shí)的,但不是為嵌入式應(yīng)用設(shè)計(jì)的。Linux 也不是為嵌入式應(yīng)用設(shè)計(jì)的,于是出現(xiàn)了嵌入式Linux, 如uCLinux, (詳見(jiàn) www.uclinux.org ), uCLinux 在Linux基礎(chǔ)上做了簡(jiǎn)化,去掉了多用戶及虛擬內(nèi)存管理等,適用于嵌入式應(yīng)用類CPU,內(nèi)核較Linux 小了很多,但仍有500kb之大。uCLiunx是為嵌入式應(yīng)用設(shè)計(jì)的,但不是實(shí)時(shí)的。另一個(gè)著名的RTOS自由軟件是RTEMS (Real-Time Executive for Missile Systems) 最初用于美國(guó)的導(dǎo)彈系統(tǒng),(詳見(jiàn) www.oarcorp.com/RTEMS )OARCorp 的含義是On-Line Applications Research Corporation , TREMS是實(shí)時(shí)的,最初并不是為嵌入式應(yīng)用設(shè)計(jì)的,是為多處理器應(yīng)用設(shè)計(jì)的, C語(yǔ)言版本意為實(shí)時(shí)多處理系統(tǒng),Real-Time Executive for Multiprocessor Systems (C Version),其ada語(yǔ)言版本后來(lái)擴(kuò)展到軍方其他應(yīng)用,字母M的含義由導(dǎo)彈Missile 變?yōu)檐娛翸ilitary (ada Version) 。 RTEMS 可以用于嵌入式應(yīng)用,但應(yīng)為RTEMS總是要基于POSIX API 標(biāo)準(zhǔn),嵌入到片上系統(tǒng)難度相當(dāng)大。 這類自由軟件出自于寫(xiě)Unix的專家里手,功能強(qiáng),性能穩(wěn)定可靠,雖然有源碼,但因程序量大、版本多,非Linux高手難以掌握。且相應(yīng)的內(nèi)核較大,有數(shù)百K之多,不易裁剪至嵌入到單片機(jī)中去,以實(shí)現(xiàn)片上系統(tǒng)(SOC)。一些商業(yè)軟件商將Linux 改頭換面包裝上市,于是出現(xiàn)了各種各樣的阿貓阿狗Linux, 如blue cat Linux, Yellow dog Linux ……有些價(jià)格還不低。 Linux源碼公開(kāi)并不神秘,但由于代碼浩瀚,用于學(xué)習(xí)與研究實(shí)屬不易。而無(wú)論在嵌入式產(chǎn)品開(kāi)發(fā)中使用還是不使用RTOS,學(xué)習(xí)和掌握RTOS的原理和設(shè)計(jì)思想都至關(guān)重要。專門(mén)為嵌入式應(yīng)用設(shè)計(jì)的RTOS,?C/OS和 ?C/OS-II 則不僅實(shí)用而且是難得的入門(mén)教材。?C/OS 是免費(fèi)軟件, 關(guān)于?C/OS的第一本書(shū)是1992年出版的,世界上數(shù)以千計(jì)的工程技術(shù)人員已將?C/OS成功地移植到了幾乎所有知名的CUP上,并應(yīng)用到了各個(gè)應(yīng)用領(lǐng)域。 由于?C/OS的商業(yè)價(jià)值得到了認(rèn)可,?C/OS-II用于教育仍免費(fèi),商用則要許可證了 。1998年,“?C/OS-Ⅱ The Real Time Kernel”一書(shū)出版。在2年前的“嵌入式2000學(xué)術(shù)研討會(huì)”上,我介紹了?C/OS和 ?C/OS-Ⅱ,引起了國(guó)內(nèi)人士的廣泛注視,中譯本<>于2001年8月出版。我校已在嵌入式系統(tǒng)與單片機(jī)課程中用這本書(shū)作教材。不少會(huì)議要我去講解?C/OS-II,一些公司邀我去為他們的技術(shù)人員做?C/OS-II的培訓(xùn),盡管用的那些CPU我并不熟悉,共同學(xué)習(xí)并將?C/OS-II移植到一個(gè)自己不熟悉的CPU上 也是件非常有趣的事。 ?C/OS-Ⅱ是一部出色的教材。書(shū)中不但給出了一個(gè)實(shí)時(shí)內(nèi)核的全部源代碼,而且對(duì)這些代碼做了詳盡的解釋。書(shū)中還對(duì)實(shí)時(shí)操作系統(tǒng)中的一些基本概念做了詳細(xì)的描述。源程序的寫(xiě)作風(fēng)格、注釋都相當(dāng)漂亮、規(guī)范。商業(yè)軟件不僅僅是貴,而即使有些軟件帶源代碼一起出售,也沒(méi)有哪一個(gè)解釋的如此詳盡。 ?C/OS和?C/OS-Ⅱ是專門(mén)為嵌入式應(yīng)用設(shè)計(jì)的,絕大部分代碼是用C語(yǔ)言寫(xiě)的。CPU硬件相關(guān)部分是用匯編語(yǔ)言寫(xiě)的,總量約200行。匯編語(yǔ)言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。許多移植的范例可以從網(wǎng)站上得到。用戶只要有C交叉編譯器,就可以將?C/OS-Ⅱ嵌入到開(kāi)發(fā)的產(chǎn)品中。 ?C/OS和?C/OS-Ⅱ是占先式(Preemptive)多任務(wù)實(shí)時(shí)內(nèi)核,是基于優(yōu)先級(jí)的,即總是讓進(jìn)入就緒態(tài)的諸任務(wù)中優(yōu)先級(jí)最高的那個(gè)任務(wù)先運(yùn)行。每個(gè)任務(wù)都有互不相同的優(yōu)先級(jí)。最多支持64個(gè)任務(wù)。所有?C/OS及?C/OS-Ⅱ提供的系統(tǒng)服務(wù)函數(shù)的執(zhí)行時(shí)間都是可知的。除了一個(gè)函數(shù)以外,所有函數(shù)的執(zhí)行時(shí)間都與任務(wù)數(shù)目無(wú)關(guān)。都不大于某一確定值。 ?C/OS和?C/OS-Ⅱ的另一特點(diǎn)是可裁剪,即只嵌入用戶程序用得著的那些函數(shù),內(nèi)核占用的ROM/RAM資源,可以依據(jù)產(chǎn)品調(diào)整。 “?C/OS-Ⅱ the Real Time Kernel”一書(shū)和其相應(yīng)的中文本,書(shū)后所附的軟件版本是?C/OS-Ⅱ V2.00。到2001年6月,網(wǎng)上出售的?C/OS-Ⅱ的源代碼更新到了2.51。今年上半年,“?C/OS-Ⅱ The Real Time Kernel”一書(shū)的第2版又出版了,書(shū)中附了?C/OS-Ⅱ的最新版本V2.52。 最新版本的?C/OS-Ⅱ增加了一些有用的新功能,如互斥型信號(hào)量,事件標(biāo)志等,新書(shū)在講述?C/OS-Ⅱ方面增加了很多新內(nèi)容,如介紹任務(wù)間的通訊與同步,新版書(shū)由原來(lái)的1章增加到了6章,特別是在移植?C/OS-Ⅱ一章中,介紹了移植后如何測(cè)試(詳見(jiàn) www.ucos-ii.com )。有關(guān)出版社正在聯(lián)系購(gòu)買(mǎi)版權(quán)的事,相信不久的將來(lái)新版?C/OS-Ⅱ的中譯本就會(huì)在國(guó)內(nèi)與讀者見(jiàn)面。 在?C/OS和?C/OS-Ⅱ的學(xué)習(xí)與應(yīng)用中聽(tīng)到最多的反映是兩類問(wèn)題,一類是關(guān)于移植,另一類是有關(guān)基于?C/OS-Ⅱ的應(yīng)用程序。 關(guān)于移植,網(wǎng)上有40余種CPU移植的范例,包括8、16、32乃至64位CPU與DSP。從來(lái)自各方面的反映來(lái)看,移植難度并不在于?C/OS-Ⅱ本身,問(wèn)題大多是由于C編譯器不同引起的。而對(duì)于高校正在就讀的研究生說(shuō)來(lái),困難還在于幾乎所有單片機(jī)用的C編譯器都是商業(yè)軟件,有些還相當(dāng)貴。我們遇到的問(wèn)題是,某正版商業(yè)軟件用得好好的,忽然這個(gè)公司沒(méi)有了,新推出的單片機(jī)不支持了。 使用自由軟件Linux 下的 GNU gcc 交叉 C 編譯器作為開(kāi)發(fā)工具來(lái)編譯、移植?C/OS-Ⅱ是一個(gè)不錯(cuò)的選擇。其意義決不僅限于節(jié)省開(kāi)支,學(xué)習(xí)使用自由軟件的過(guò)程實(shí)際也是打造IT 高手的過(guò)程。GNU gcc 支持幾乎所有知名16位、32位CPU。 Linux 下自由軟件好用,有強(qiáng)大的網(wǎng)上技術(shù)支持是公認(rèn)的,GNU gcc 的使用難點(diǎn)不在于交叉編譯器本身,而在于開(kāi)發(fā)環(huán)境的配置。一旦系統(tǒng)開(kāi)發(fā)環(huán)境建立起來(lái)了,會(huì)用了,從長(zhǎng)遠(yuǎn)看還是很值得的?;谕痪幾g器,移植?C/OS-Ⅱ?qū)⒆兊脹](méi)有什么可討論的。 ?C/OS-Ⅱ下的應(yīng)用程序,問(wèn)得最多的是關(guān)于TCP/IP 協(xié)議棧。雖然有相關(guān)商業(yè)軟件可以買(mǎi)到,但對(duì)于確定的嵌入式應(yīng)用,只用到CP/IP 協(xié)議棧其中一小部分時(shí),我們?nèi)灾鲝堊约簩?xiě)。Jeremy Bentham 著,“TC/PIP Lean Web Servers for Embedded System” (詳見(jiàn)www.cmpbooks.com) 給出了使用8位單片機(jī)撥號(hào)上網(wǎng)的例子。書(shū)中介紹了如何寫(xiě)TCP/IP 協(xié)議棧,并附有C程序(該出中并沒(méi)有使用任何TROS)。參考這本書(shū),我們用Motorola 8位、16位和32位單片機(jī)實(shí)現(xiàn)了通過(guò)以太網(wǎng)接口芯片直接上網(wǎng)。網(wǎng)絡(luò)協(xié)議可以在 www.rfc-editor.org 網(wǎng)站上找到。對(duì)于8位單片機(jī)68HC08,TCP/IP 部分目標(biāo)代碼只有7kb左右。對(duì)于68HC11/12、CPU32、ColdFire等16、32位單片機(jī),寫(xiě)這一類程序時(shí)你就會(huì)發(fā)現(xiàn),在RTOS ?C/OS-Ⅱ 支持下來(lái)做這件事是多么舒服。CPU要完成原來(lái)在控制系統(tǒng)中應(yīng)該完成的任務(wù),又要同時(shí)管理網(wǎng)絡(luò)的發(fā)送和接受,沒(méi)有實(shí)時(shí)操作系統(tǒng)支持簡(jiǎn)直不可想向。 RTOS是計(jì)算機(jī)專家們多年潛心研究的成果,使用RTOS不僅增加了嵌入式應(yīng)用系統(tǒng)的可靠性,而且對(duì)關(guān)鍵事件的處理在延遲時(shí)間上有保證,即系統(tǒng)的實(shí)時(shí)性可以達(dá)到理論上可以達(dá)到的最優(yōu)值。 RTOS支持多任務(wù),應(yīng)用程序被分解成多個(gè)任務(wù),程序開(kāi)發(fā)變得更加容易,便于維護(hù),易讀易懂,提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期。而說(shuō)到使用RTOS的缺點(diǎn)主要表現(xiàn)于RTOS本身要占用一定的資源,需要額外的ROM/RAM空間來(lái)運(yùn)行RTOS本身。這對(duì)于一些內(nèi)存十分有限、且只能工作在單片方式的單片機(jī)來(lái)說(shuō)會(huì)受到限制。無(wú)論使用還是不使用RTOS,學(xué)習(xí)RTOS的基本思想都是必要的,即使您買(mǎi)了著名的商業(yè)RTOS,也不妨學(xué)習(xí)、研究一下?C/OS-Ⅱ這個(gè)小內(nèi)核,會(huì)對(duì)用好那個(gè)商業(yè)RTOS有幫助。 RTOS是開(kāi)發(fā)嵌入式產(chǎn)品的有力武器,RTOS的應(yīng)用將推廣到各個(gè)嵌入式應(yīng)用的各個(gè)領(lǐng)域。學(xué)習(xí)RTOS,使用RTOS,我們?nèi)褡宓奈⒂?jì)算機(jī)嵌入式應(yīng)用技術(shù)水平將會(huì)邁上一個(gè)新的臺(tái)階。
投訴建議

提交

查看更多評(píng)論
其他資訊

查看更多

超越傳統(tǒng)直覺(jué),MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型

新大陸自動(dòng)識(shí)別精彩亮相2024華南國(guó)際工業(yè)博覽會(huì)

派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者

智能工控,存儲(chǔ)強(qiáng)基 | ??低晭?lái)精彩主題演講

展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)