Linux源碼公開并不神秘,但由于代碼浩瀚,用于學(xué)習(xí)與研究實(shí)屬不易。而無論在嵌入式產(chǎn)品開發(fā)中使用還是不使用RTOS,學(xué)習(xí)和掌握RTOS的原理和設(shè)計思想都至關(guān)重要。專門為嵌入式應(yīng)用設(shè)計的RTOS,?C/OS和 ?C/OS-II 則不僅實(shí)用而且是難得的入門教材。?C/OS 是免費(fèi)軟件, 關(guān)于?C/OS的第一本書是1992年出版的,世界上數(shù)以千計的工程技術(shù)人員已將?C/OS成功地移植到了幾乎所有知名的CUP上,并應(yīng)用到了各個應(yīng)用領(lǐng)域。 由于?C/OS的商業(yè)價值得到了認(rèn)可,?C/OS-II用于教育仍免費(fèi),商用則要許可證了 。1998年,“?C/OS-Ⅱ The Real Time Kernel”一書出版。在2年前的“嵌入式2000學(xué)術(shù)研討會”上,我介紹了?C/OS和 ?C/OS-Ⅱ,引起了國內(nèi)人士的廣泛注視,中譯本<>于2001年8月出版。我校已在嵌入式系統(tǒng)與單片機(jī)課程中用這本書作教材。不少會議要我去講解?C/OS-II,一些公司邀我去為他們的技術(shù)人員做?C/OS-II的培訓(xùn),盡管用的那些CPU我并不熟悉,共同學(xué)習(xí)并將?C/OS-II移植到一個自己不熟悉的CPU上 也是件非常有趣的事。
?C/OS-Ⅱ是一部出色的教材。書中不但給出了一個實(shí)時內(nèi)核的全部源代碼,而且對這些代碼做了詳盡的解釋。書中還對實(shí)時操作系統(tǒng)中的一些基本概念做了詳細(xì)的描述。源程序的寫作風(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ù)實(shí)時內(nèi)核,是基于優(yōu)先級的,即總是讓進(jìn)入就緒態(tài)的諸任務(wù)中優(yōu)先級最高的那個任務(wù)先運(yùn)行。每個任務(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-Ⅱ的另一特點(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-Ⅱ增加了一些有用的新功能,如互斥型信號量,事件標(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編譯器不同引起的。而對于高校正在就讀的研究生說來,困難還在于幾乎所有單片機(jī)用的C編譯器都是商業(yè)軟件,有些還相當(dāng)貴。我們遇到的問題是,某正版商業(yè)軟件用得好好的,忽然這個公司沒有了,新推出的單片機(jī)不支持了。
使用自由軟件Linux 下的 GNU gcc 交叉 C 編譯器作為開發(fā)工具來編譯、移植?C/OS-Ⅱ是一個不錯的選擇。其意義決不僅限于節(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)境建立起來了,會用了,從長遠(yuǎn)看還是很值得的?;谕痪幾g器,移植?C/OS-Ⅱ?qū)⒆兊脹]有什么可討論的。
?C/OS-Ⅱ下的應(yīng)用程序,問得最多的是關(guān)于TCP/IP 協(xié)議棧。雖然有相關(guān)商業(yè)軟件可以買到,但對于確定的嵌入式應(yīng)用,只用到CP/IP 協(xié)議棧其中一小部分時,我們?nèi)灾鲝堊约簩憽eremy Bentham 著,“TC/PIP Lean Web Servers for bbbbbded System” (詳見www.cmpbooks.com) 給出了使用8位單片機(jī)撥號上網(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)站上找到。對于8位單片機(jī)68HC08,TCP/IP 部分目標(biāo)代碼只有7kb左右。對于68HC11/12、CPU32、ColdFire等16、32位單片機(jī),寫這一類程序時你就會發(fā)現(xiàn),在RTOS ?C/OS-Ⅱ 支持下來做這件事是多么舒服。CPU要完成原來在控制系統(tǒng)中應(yīng)該完成的任務(wù),又要同時管理網(wǎng)絡(luò)的發(fā)送和接受,沒有實(shí)時操作系統(tǒng)支持簡直不可想向。
RTOS是計算機(jī)專家們多年潛心研究的成果,使用RTOS不僅增加了嵌入式應(yīng)用系統(tǒng)的可靠性,而且對關(guān)鍵事件的處理在延遲時間上有保證,即系統(tǒng)的實(shí)時性可以達(dá)到理論上可以達(dá)到的最優(yōu)值。 RTOS支持多任務(wù),應(yīng)用程序被分解成多個任務(wù),程序開發(fā)變得更加容易,便于維護(hù),易讀易懂,提高了開發(fā)效率,縮短了開發(fā)周期。而說到使用RTOS的缺點(diǎn)主要表現(xiàn)于RTOS本身要占用一定的資源,需要額外的ROM/RAM空間來運(yùn)行RTOS本身。這對于一些內(nèi)存十分有限、且只能工作在單片方式的單片機(jī)來說會受到限制。無論使用還是不使用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(jī)嵌入式應(yīng)用技術(shù)水平將會邁上一個新的臺階。










