工控網(wǎng)首頁
>

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

>

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

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

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

提交

查看更多評論
其他資訊

查看更多

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

新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會

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

智能工控,存儲強基 | 海康威視帶來精彩主題演講

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