?
μC/OS也叫MicroC/OS,它是在國內(nèi)具有廣泛影響力的RTOS之一,這主要得益于作者Jean Labrosse 的幾本介紹μC/OS原理和使用的中文版圖書在國內(nèi)的廣為流傳。與其他商業(yè)RTOS不同的是,μC/OS內(nèi)核的源代碼是開源的,對于非商業(yè)客戶(比如大學(xué)老師和學(xué)生們)也是免費的,據(jù)筆者統(tǒng)計,累計至今已有數(shù)十本以μC/OS命名的中文版圖書出版,數(shù)百所學(xué)校院系和專業(yè)開設(shè)的嵌入式開發(fā)設(shè)計相關(guān)課程使用μC/OS作為嵌入式OS 案例,數(shù)千篇研究μC/OS相關(guān)技術(shù)的論文發(fā)表。本文摘自北京航空航天大學(xué)出版社出版的《嵌入式實時多任務(wù)操作系統(tǒng)μC/OS-III》一書的前言,筆者有改編和刪減。
μC/OS的故事起始于1989年。那時,我(注:即Jean Labrosse先生)加入到位于美國佛羅里達州勞德代爾堡市的Dynalco控制公司,并開始為大型工業(yè)往復(fù)式發(fā)動機設(shè)計全新的、基于微控制器的點火控制系統(tǒng)。由于有實時內(nèi)核的使用經(jīng)驗,我相信使用操作系統(tǒng)可有強力地推動該項目以及Dynalco公司其它在研項目的進展。
對于該點火控制系統(tǒng)而言,進入市場的時間至關(guān)重要。并且,我知道實時內(nèi)核的使用能夠幫助我實現(xiàn)既定目標。我也知道將來還要為這款產(chǎn)品增加一些新的功能,而使用可剝奪型(注:也稱為可搶占式)的操作系統(tǒng)將允許在不破壞系統(tǒng)響應(yīng)特性的情況下做這些升級。我最初考慮使用的內(nèi)核是一個過去我用過且很熟悉的內(nèi)核。不過,該內(nèi)核非常昂貴,而我的經(jīng)費卻不是很充足。備選的是用一個過去我沒有用過的內(nèi)核,其價格只有最初選擇內(nèi)核的五分之一。
最終,考慮到節(jié)省經(jīng)費,我選擇了使用不熟悉的那個操作系統(tǒng)。然而,我很快意識到需要為這個看起來更便宜的操作系統(tǒng)付出我更多的時間。在拿到內(nèi)核后的兩個月,我不停地聯(lián)系對方的技術(shù)支持人員,徒勞無益地做各種嘗試,想知道為什么連一個最簡單的應(yīng)用程序都跑不起來。這個操作系統(tǒng)說是用C語言寫的,卻要求用匯編語言初始化所有的內(nèi)核變量。后來發(fā)現(xiàn),我是最先購買這個操作系統(tǒng)的那批用戶之一,是在不知情的情況下充當(dāng)了這個操作系統(tǒng)的試用版測試員。
實在是受夠了,我轉(zhuǎn)而使用最初放棄的那個較昂貴的操作系統(tǒng)。眼看項目要延期,錢就再不是問題了。不到兩天,簡單的應(yīng)用程序就跑起來了,這在之前那個便宜的操作系統(tǒng)上好像是不可能做到的事。內(nèi)核相關(guān)的問題似乎解決了。然而,很快我發(fā)現(xiàn)自己又進入了另外一個僵局。有一天,我的一個工程師向我匯報這個新的操作系統(tǒng)好像有毛病(bug),從此,一系列的問題就開始了。我很快把這個工程師發(fā)現(xiàn)的問題轉(zhuǎn)發(fā)給軟件廠商,暗想他們會對此感興趣。但是,沒有收到他們修正bug的保證,取而代之的是,我接到通知說90天的擔(dān)保期已過。除非支付給他們一筆維護費,否則,他們不會修正這個bug,對我來說這種要求簡直是不可理喻。按照軟件廠商的希望,我支付了這筆維護費用。想不到的是,軟件廠商竟然花費了6個月才去掉了這個bug。最終,在拿到第二個操作系統(tǒng)的一年以后,才利用該操作系統(tǒng)完成了我的點火控制系統(tǒng)。很明顯,我需要一個更好的解決方案。
兩次失望后,我開始開發(fā)自己的內(nèi)核。我想得很簡單,認為一個內(nèi)核真正需要做的事情就是保存和恢復(fù)CPU寄存器,寫一個內(nèi)核應(yīng)當(dāng)不是一件很有挑戰(zhàn)性的事情。大約花了一年時間,我果真寫完了我的第一個操作系統(tǒng)。也正是有了新操作系統(tǒng)在手,開發(fā)多任務(wù)應(yīng)用程序就如魚得水了。該操作系統(tǒng)主要由一個C文件構(gòu)成,一個應(yīng)用中允許創(chuàng)建多達64個任務(wù)。每個任務(wù)有獨一無二的優(yōu)先級。每次調(diào)用任務(wù)調(diào)度器時,CPU總是運行處于就緒態(tài)的優(yōu)先級最高的任務(wù)。μC/OS是可剝奪型內(nèi)核,在任意時刻都可能發(fā)生任務(wù)調(diào)度。高效的任務(wù)調(diào)度實際上只是μC/OS提供的眾多服務(wù)之一。此外,該操作系統(tǒng)還會提供任務(wù)間通信(通過消息隊列和郵箱)和任務(wù)間同步(通過信號量)相關(guān)的服務(wù)。μC/OS所有元素的設(shè)計都考慮了高可靠性以及簡便易用。
在我的職業(yè)生涯中,自始自終都很注重代碼的一致性和文檔說明。從1984年開始,我就使用規(guī)范的代碼標準,μC/OS代碼的一致性可以很好地證明這一點。在Dynalco工作時,我創(chuàng)造并推廣了一套嚴格的代碼編寫規(guī)范。μC/OS就是根據(jù)這套規(guī)范設(shè)計的。μC/OS源代碼的特點包括:大量的空行、字斟句酌的注釋和統(tǒng)一的命名。μC/OS內(nèi)核還具有極好的可移植性,這也進一步證實了這種嚴謹?shù)拇a編寫規(guī)范的優(yōu)勢所在。雖然μC/OS跟它的先驅(qū)者一樣也有少量的與處理器相關(guān)的函數(shù),但是,這些函數(shù)代碼與操作系統(tǒng)中的其它代碼很清楚地分開了。工程師們能夠非常簡單地把μC/OS移植到一個新的CPU架構(gòu)上。
?
我是知道μC/OS優(yōu)點的人,為了把我的新軟件介紹給其他人,我寫了一篇很長的文章,詳細解釋了μC/OS的內(nèi)部工作原理。因為有太多東西要說,最終我的文章長達約70頁。我把文章投給《C語言用戶日記》(C User’s Journal),文章被拒載了,原因有二,一是文章太長了,二是文章主題不夠新。該雜志已經(jīng)出版了多篇關(guān)于內(nèi)核的文章,而這只是又一篇關(guān)于實時內(nèi)核的文章。但我堅信我的文章是獨一無二的,我又把它投給《嵌入式系統(tǒng)編程》(Embedded Systems Programming)。該雜志的編輯給我的答復(fù)和《C語言用戶日記》是一樣的,但我最終還是使他相信了μC/OS是一個非常值得關(guān)注的操作系統(tǒng)。我向他解釋μC/OS在質(zhì)量上可以與主流嵌入式軟件公司提供的商業(yè)RTOS媲美(并且至少比其中兩個操作系統(tǒng)要好)。我還解釋說,μC/OS的源代碼可放到該雜志的電子留言板上(BBS)?!肚度胧较到y(tǒng)編程》分兩部分連載了經(jīng)過刪減的文章。發(fā)表的兩部分文章都反響強烈。工程師們非常高興地看到,高質(zhì)量內(nèi)核的內(nèi)部工作原理被揭露出來了,他們爭相下載了μC/OS的源代碼。另一方面,內(nèi)核廠商則對該文章的發(fā)表非常不安。實際上,那個廉價內(nèi)核廠商尤其不安,竟聲稱我抄襲了他們的工作。試想一下,我怎么可能基于一個不能運行的軟件來開發(fā)μC/OS!
很快,令RTOS廠商更加不安的事情出現(xiàn)了。我的文章被《嵌入式系統(tǒng)編程》雜志刊登后不久,《C語言用戶日記》的出版商,R&D出版社,主動聯(lián)系我,表示想出版一本μC/OS的書。起初,這本書只是計劃把我最早提交給《C語言用戶日記》的材料打印出來。如果采用這種思路,這本書也就80頁左右。為了充分利用這次機會,我計劃寫一本深入介紹μC/OS的書。經(jīng)R&D出版社的同意,在接下來的幾個月,我開始寫作。到1992年的下半年,我的第一本書《μC/OS,The Real-Time Kernel》出版了(見圖1)。最開始,這本書的售出速度并不令人滿意,但R&D出版社每個月都會在《C語言用戶日記》上給這本書做廣告。與此同時,我漸漸被大家認可,成為一個內(nèi)核專家。1993年的春天,我接受邀請,參加了在喬治亞州亞特蘭大市舉辦的嵌入式系統(tǒng)會議(ESC),為超過70位嵌入式愛好者講述了操作系統(tǒng)的基本原理。在接下來的幾年中,我一直參加ESC年會,每次都會對幾百個工程師講述我的內(nèi)核。逐漸大家對我寫的書的興趣也提高了。過了最初緩慢發(fā)售階段,《μC/OS,The Real-Time Kernel》最終銷量超過15,000本。
圖1:《μC/OS,The Real-Time Kernel》和書后附的1.1版軟件
關(guān)于μ C/OS的后續(xù)發(fā)展,請大家繼續(xù)閱讀μ C/OS的故事(二)。
與非網(wǎng)原創(chuàng)內(nèi)容,未經(jīng)許可,不得轉(zhuǎn)載
?
摘要:對嵌入式操作系統(tǒng)的定義,國內(nèi)外專家學(xué)者和企業(yè)界人士的理解都不盡相同,具有代表性的意見有兩種;一種是說嵌入式系統(tǒng)就是嵌入式的計算機系統(tǒng),另外一種認為嵌入式系統(tǒng)是一種機電結(jié)合、軟硬結(jié)合執(zhí)行某種特殊功能的系統(tǒng)……
摘要:摩托羅拉自1974年發(fā)布第一款MC6800 --8位微處理器到1979發(fā)布的MC68000(簡稱68K)-16/32位CPU之后,其芯片因為即可以使用在計算機系統(tǒng)中,也可以使用在嵌入式系統(tǒng),很快成為當(dāng)時行業(yè)的標準。最早開發(fā)嵌入式OS的公司,許多都是借助摩托羅拉的市場起家的……
摘要:除了上一篇提到的OS-9以外,最早出現(xiàn)的嵌入式操作系統(tǒng)(簡稱為嵌入式OS)當(dāng)屬VRTX,因其在技術(shù)上創(chuàng)新性,得到用戶和嵌入式系統(tǒng)公司的廣泛支持,VRTX可稱為商業(yè)嵌入式OS的開拓和領(lǐng)導(dǎo)者……
摘要:在討論開源的嵌入式操作系統(tǒng)(簡稱嵌入式OS)之前,我們先把開源軟件搞清楚?!伴_源軟件”目前并沒有明確定義,也沒有標準許可證。許多公司采用開放源代碼一詞,大概有這樣兩種情況……
摘要:過去30年間,風(fēng)河和VxWorks在嵌入式OS領(lǐng)域一直處在領(lǐng)先地位,在航空航天、通信、工業(yè)控制等行業(yè)有著廣泛的應(yīng)用,在業(yè)內(nèi)被稱為嵌入式OS的常青樹……
摘要:手機屬于嵌入式設(shè)備,手機軟件平臺使用的操作系統(tǒng)屬于嵌入式OS的范疇。傳統(tǒng)的功能手機(Feature Phone)使用了實時多任務(wù)操作系統(tǒng)(RTOS)為基礎(chǔ)的手機軟件平臺。入門級的智能手機采用了半開放的嵌入式OS(比如Symbian),而今天高端的智能手機多采用Android和IOS這樣的通用型的OS……
摘要:為你介紹那些開源的操作系統(tǒng),Android以及它的競爭對手們的整個OS產(chǎn)業(yè)生態(tài)……
摘要:根據(jù)IEEE 2009年2月的報告,豪華級別的汽車的軟件代碼長度將超過1億行,如此巨大的代碼量不使用嵌入式操作系統(tǒng)(以下簡稱嵌入式OS)和軟件平臺架構(gòu)是不可想象的,以此聯(lián)動產(chǎn)生的軟件研發(fā)、測試和維護成本也是巨大的,帶給汽車的安全性和可靠性隱患更是無法預(yù)估的。由此也成為嵌入式Os逐鹿的新戰(zhàn)場……
摘要:嵌入式OS發(fā)展到今天已經(jīng)有30多年歷史了,未來的嵌入式OS 會是什么樣的?技術(shù)會有哪些變化?商業(yè)還會蓬勃發(fā)展,還是逐漸消亡呢?筆者在撰寫《嵌入式操作系統(tǒng)史話》專欄期間,恰逢美國的CES2014,我參觀了LG,三星、SONY,奧迪等大企業(yè)展位,看到Intel、恩智浦和TI等半導(dǎo)體公司最新芯片解決方案,了解到國外嵌入式OS最新發(fā)展的一些情況……