源碼公開的嵌入式系統(tǒng)軟件資源
2003/11/24 0:00:00
長(zhǎng)期以來,價(jià)格因素限制了RTOS在我國嵌入式應(yīng)用產(chǎn)品開發(fā)中的推廣與普及。而隨著操作系統(tǒng)走向開放,越來越多的帶源代碼的自由軟件得到了廣泛的認(rèn)可與應(yīng)用,其中最著名的是Linux。 Linux 不是實(shí)時(shí)的,于是出現(xiàn)了RTLinux, (詳見 www.fsmlabs.com ) RTLinux 是實(shí)時(shí)的,但不是為嵌入式應(yīng)用設(shè)計(jì)的。Linux 也不是為嵌入式應(yīng)用設(shè)計(jì)的,于是出現(xiàn)了嵌入式Linux, 如uCLinux, (詳見 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) 最初用于美國的導(dǎo)彈系統(tǒng),(詳見 www.oarcorp.com/RTEMS )OARCorp 的含義是On-Line Applications Research Corporation , TREMS是實(shí)時(shí)的,最初并不是為嵌入式應(yīng)用設(shè)計(jì)的,是為多處理器應(yīng)用設(shè)計(jì)的, C語言版本意為實(shí)時(shí)多處理系統(tǒng),Real-Time Executive for Multiprocessor Systems (C Version),其ada語言版本后來擴(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)大。 這類自由軟件出自于寫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源碼公開并不神秘,但由于代碼浩瀚,用于學(xué)習(xí)與研究實(shí)屬不易。而無論在嵌入式產(chǎn)品開發(fā)中使用還是不使用RTOS,學(xué)習(xí)和掌握RTOS的原理和設(shè)計(jì)思想都至關(guān)重要。專門為嵌入式應(yīng)用設(shè)計(jì)的RTOS,?C/OS和 ?C/OS-II 則不僅實(shí)用而且是難得的入門教材。?C/OS 是免費(fèi)軟件, 關(guān)于?C/OS的第一本書是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”一書出版。在2年前的“嵌入式2000學(xué)術(shù)研討會(huì)”上,我介紹了?C/OS和 ?C/OS-Ⅱ,引起了國內(nèi)人士的廣泛注視,中譯本<>于2001年8月出版。我校已在嵌入式系統(tǒng)與單片機(jī)課程中用這本書作教材。不少會(huì)議要我去講解?C/OS-II,一些公司邀我去為他們的技術(shù)人員做?C/OS-II的培訓(xùn),盡管用的那些CPU我并不熟悉,共同學(xué)習(xí)并將?C/OS-II移植到一個(gè)自己不熟悉的CPU上 也是件非常有趣的事。 ?C/OS-Ⅱ是一部出色的教材。書中不但給出了一個(gè)實(shí)時(shí)內(nèi)核的全部源代碼,而且對(duì)這些代碼做了詳盡的解釋。書中還對(duì)實(shí)時(shí)操作系統(tǒng)中的一些基本概念做了詳細(xì)的描述。源程序的寫作風(fēng)格、注釋都相當(dāng)漂亮、規(guī)范。商業(yè)軟件不僅僅是貴,而即使有些軟件帶源代碼一起出售,也沒有哪一個(gè)解釋的如此詳盡。 ?C/OS和?C/OS-Ⅱ是專門為嵌入式應(yīng)用設(shè)計(jì)的,絕大部分代碼是用C語言寫的。CPU硬件相關(guān)部分是用匯編語言寫的,總量約200行。匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。許多移植的范例可以從網(wǎng)站上得到。用戶只要有C交叉編譯器,就可以將?C/OS-Ⅱ嵌入到開發(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ù)目無關(guān)。都不大于某一確定值。 ?C/OS和?C/OS-Ⅱ的另一特點(diǎn)是可裁剪,即只嵌入用戶程序用得著的那些函數(shù),內(nèi)核占用的ROM/RAM資源,可以依據(jù)產(chǎn)品調(diào)整。 “?C/OS-Ⅱ the Real Time Kernel”一書和其相應(yīng)的中文本,書后所附的軟件版本是?C/OS-Ⅱ V2.00。到2001年6月,網(wǎng)上出售的?C/OS-Ⅱ的源代碼更新到了2.51。今年上半年,“?C/OS-Ⅱ The Real Time Kernel”一書的第2版又出版了,書中附了?C/OS-Ⅱ的最新版本V2.52。 最新版本的?C/OS-Ⅱ增加了一些有用的新功能,如互斥型信號(hào)量,事件標(biāo)志等,新書在講述?C/OS-Ⅱ方面增加了很多新內(nèi)容,如介紹任務(wù)間的通訊與同步,新版書由原來的1章增加到了6章,特別是在移植?C/OS-Ⅱ一章中,介紹了移植后如何測(cè)試(詳見 www.ucos-ii.com )。有關(guān)出版社正在聯(lián)系購買版權(quán)的事,相信不久的將來新版?C/OS-Ⅱ的中譯本就會(huì)在國內(nèi)與讀者見面。 在?C/OS和?C/OS-Ⅱ的學(xué)習(xí)與應(yīng)用中聽到最多的反映是兩類問題,一類是關(guān)于移植,另一類是有關(guān)基于?C/OS-Ⅱ的應(yīng)用程序。 關(guān)于移植,網(wǎng)上有40余種CPU移植的范例,包括8、16、32乃至64位CPU與DSP。從來自各方面的反映來看,移植難度并不在于?C/OS-Ⅱ本身,問題大多是由于C編譯器不同引起的。而對(duì)于高校正在就讀的研究生說來,困難還在于幾乎所有單片機(jī)用的C編譯器都是商業(yè)軟件,有些還相當(dāng)貴。我們遇到的問題是,某正版商業(yè)軟件用得好好的,忽然這個(gè)公司沒有了,新推出的單片機(jī)不支持了。 使用自由軟件Linux 下的 GNU gcc 交叉 C 編譯器作為開發(fā)工具來編譯、移植?C/OS-Ⅱ是一個(gè)不錯(cuò)的選擇。其意義決不僅限于節(jié)省開支,學(xué)習(xí)使用自由軟件的過程實(shí)際也是打造IT 高手的過程。GNU gcc 支持幾乎所有知名16位、32位CPU。 Linux 下自由軟件好用,有強(qiáng)大的網(wǎng)上技術(shù)支持是公認(rèn)的,GNU gcc 的使用難點(diǎn)不在于交叉編譯器本身,而在于開發(fā)環(huán)境的配置。一旦系統(tǒng)開發(fā)環(huán)境建立起來了,會(huì)用了,從長(zhǎng)遠(yuǎn)看還是很值得的?;谕痪幾g器,移植?C/OS-Ⅱ?qū)⒆兊脹]有什么可討論的。 ?C/OS-Ⅱ下的應(yīng)用程序,問得最多的是關(guān)于TCP/IP 協(xié)議棧。雖然有相關(guān)商業(yè)軟件可以買到,但對(duì)于確定的嵌入式應(yīng)用,只用到CP/IP 協(xié)議棧其中一小部分時(shí),我們?nèi)灾鲝堊约簩?。Jeremy Bentham 著,“TC/PIP Lean Web Servers for Embedded System” (詳見www.cmpbooks.com) 給出了使用8位單片機(jī)撥號(hào)上網(wǎng)的例子。書中介紹了如何寫TCP/IP 協(xié)議棧,并附有C程序(該出中并沒有使用任何TROS)。參考這本書,我們用Motorola 8位、16位和32位單片機(jī)實(shí)現(xiàn)了通過以太網(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ī),寫這一類程序時(shí)你就會(huì)發(fā)現(xiàn),在RTOS ?C/OS-Ⅱ 支持下來做這件事是多么舒服。CPU要完成原來在控制系統(tǒng)中應(yīng)該完成的任務(wù),又要同時(shí)管理網(wǎng)絡(luò)的發(fā)送和接受,沒有實(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ù),程序開發(fā)變得更加容易,便于維護(hù),易讀易懂,提高了開發(fā)效率,縮短了開發(fā)周期。而說到使用RTOS的缺點(diǎn)主要表現(xiàn)于RTOS本身要占用一定的資源,需要額外的ROM/RAM空間來運(yùn)行RTOS本身。這對(duì)于一些內(nèi)存十分有限、且只能工作在單片方式的單片機(jī)來說會(huì)受到限制。無論使用還是不使用RTOS,學(xué)習(xí)RTOS的基本思想都是必要的,即使您買了著名的商業(yè)RTOS,也不妨學(xué)習(xí)、研究一下?C/OS-Ⅱ這個(gè)小內(nèi)核,會(huì)對(duì)用好那個(gè)商業(yè)RTOS有幫助。 RTOS是開發(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)直覺,MATLAB/Simulink助力重型機(jī)械的智能化轉(zhuǎn)型
新大陸自動(dòng)識(shí)別精彩亮相2024華南國際工業(yè)博覽會(huì)
派拓網(wǎng)絡(luò)被Forrester評(píng)為XDR領(lǐng)域領(lǐng)導(dǎo)者
智能工控,存儲(chǔ)強(qiáng)基 | ??低晭砭手黝}演講
展會(huì)|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會(huì)