天天看點

嵌入式作業系統風雲錄:曆史演進與物聯網未來第2章 Chapter2

<b>第2章 chapter2</b>

嵌入式作業系統的曆史

20世紀70年代末,嵌入式作業系統商業産品開始在北美出現,20世紀90年代末嵌入式os的數量呈井噴式增加,最鼎盛的時候有數百種之多,即使經過30多年的發展和淘汰,現在嵌入式os依然有數十種之多。最早的嵌入式作業系統是實時多任務作業系統(rtos)核心,支援8位和16位微處理器,它初期使用彙編和plm語言程式設計,後來支援c和ada。本章講述了rtos發展曆史中幾個重要産品背後的故事。

vrtx:嵌入式作業系統的開拓者

最早出現的商業嵌入式作業系統當屬vrtx,因其技術上的創新性,vrtx很快就得到了使用者和嵌入式系統公司的廣泛支援。vrtx可稱為商業嵌入式作業系統的開拓者和上司者。

vrtx的曆史

起初vrtx是hunter &amp;

ready公司的産品,該公司是由james(jim)ready和colin hunter在1980年創立的。vrtx是英文versatile

real-time executive的縮寫。vrtx最初支援z8002、8086、8088和68000這些16位微處理器,原理上講,vrtx可以運作在任何微處理器晶片上。vrtx并不要求客戶一定購買源代碼,使用c語言作為核心api接口,這在當時是頗具遠見的。jim提供給我的資料顯示,hunter &amp; ready最初的大客戶是amd公司和amd生産的amz8000/8002(zilog z8000/8002)。vrtx/8002是一個多任務實時核心,使用事件驅動的調動方式,代碼尺寸很小,而且可以擴充,這些特征奠定了之後很長一段時間實時多任務作業系統的技術基礎。有關vrtx/8002,海外媒體在1981年12月21日以“基于prom的os為z8002微處理器帶來了實時控制功能”為題撰寫了專文,詳見“延伸閱讀”。

hunter &amp;

ready後來更名為ready systems。在曆史上vrtx有這樣一些重要的貢獻:在1987年成為最先實作了具有确定性核心機制的rtos;在1989年發表了第一個rtos仿真器vrtxdesigner;在1990年應用vrtx的md-11 honeywell飛行控制系統通過了美國聯邦航空航天局的faa認證。

1991年,ready system開發了vrtx velocity産品,它将vrtx與unix os開發環境完美地整合在一起。vrtx velocity支援以太網下載下傳和調試,velocity rtscope支援vrtx核心互動調用的源代碼調試器,velocity支援unix标準的i/o和網絡。unix os在20世紀80~90年代是使用最廣泛和最标準的通用作業系統。

1993年,ready system與矽谷著名的嵌入式軟體公司microtec research合并,在已經是工業界廣泛認可的rtos标準-vrtx32基礎上開發了vrtxmc和vrtxsa兩個新的rtos核心,并結合microtec著名的調試軟體xray,開發了vrtx內建開發環境spectra。1995年,eda公司mentor graphic收購了microtec research,在收購之後的7、8年間,vrtx得到了持續發展,比如前面提到的借助menotor在eda方面的優勢,vrtx支援soc晶片的內建和軟硬體協調開發,這在當時是頗具前瞻性的投資。2002年,mentor graphic 收購了另外一個嵌入式os公司(accelerated

technology)之後,轉向開放源代碼的嵌入式os(nucleus),vrtx就逐漸被放棄了。因為不斷被收購,vrtx市場在20世紀90年代末被psos和vxworks等産品替代。vrtx的創始人jim ready也在1999年離開mentor graphic,創立了專注于嵌入式linux的montavista

software公司,這在後面有關開源嵌入式os的章節中會有更多叙述。

vrtx的産品家族

vrtx 1.0版本是在1981年釋出的,經曆2.0、3.0版本之後,于1987年發表了世界上首個具有确定性排程機制的rtos—vrtx32。vrtx32最初是針對68k和80x86 cpu設計的,這也是工業界rtos之中最早應用在機載電子裝置中,并通過faa認證的産品。它是錯誤報告最少、應用最廣泛的rtos核心之一。1992年新産品spectra內建開發環境和vrtxsa 問世,vrtxsa是基于超微核心(nanokernal)的新一代rtos,sa意味着具備可以伸縮的rtos架構,可以支援更大規模的嵌入式系統應用。1994年vrtxmc釋出,mc是micro-controller(微控制器)的縮寫,也有支援soc晶片的含義,它占用最少的ram和rom空間。vrtxmc除了繼續支援68k 系列cpu外,還支援motorola m "core和arm soc。不同于vrtx32和vrtxsa,vrtxmc采用按産品系列一次性授權的模式,更加适合産量大的消費電子産品使用。

vrtx的應用

作為最早的商業嵌入式os,vrtx有大量引以為傲的成功應用,比如f14、md-11、a320、a330、a340飛機、法國tgv火車、motorola手機、三星通信交換裝置、醫療生命保障系統、心髒監視系統、機頂盒等。據1999年的資料記載,當時已經有超過5萬使用者在使用vrtx相關産品。

vrtx在中國

vrtx于1993年前後進入中國,與競争對手相比起步是比較早的。之後integrated systems(産品是psos和psos+)和windriver(風河公司,産品是vxworks)分别在1997年和1998年通過代理商進入中國市場。vrtx對中國高校的嵌入式os研究和教學發展有一定的貢獻,1996年與成都電子科大合作建立嵌入式軟體設計中心(cesd),為中國使用者提供學習課程和教育訓練。為此microtec免費提供了可以支援4種嵌入式微處理器的嵌入式os開發工具,intel公司也為實驗室提供了嵌入式386ex開發系統。microtec之後還在清華大學與motorola合作建立了嵌入式軟體設計中心。vrtx在航空和工業控制領域憑借國外的市場優勢及産品技術優勢,較早得到了中國使用者的認可,其使用者有華為技術(通信電源)、三菱電梯、南瑞、許繼、華控等公司。成都、上海、西安等地的航空電子裝置研究所都使用過vrtx。在通信領域,vrtx與psos競争激烈,但vrtx還是獲得了包括上海貝爾(現在的上海阿爾卡特)、華光科技、巨龍、金鵬、大唐、重慶郵電裝置廠和北郵泰康等著名的通信公司的青睐,它們使用vrtx開發了數字程控交換機、sdh傳輸裝置和新一代寬帶接入等通信産品。2013年我在深圳遇到過長園深瑞(原深圳南瑞)的羅工程師,與他交流都江堰嵌入式os的時候,他還回憶起當年在華為技術使用vrtx開發通信電源産品的情景,可見vrtx對中國老一代工程師的巨大影響力。如今vrtx作為rtos開發平台已經消失,但它或許還會長期嵌入在某些電子裝置之中。所幸,它的技術和思想已經深深影響了一批嵌入式軟體開發者,比如國外的vxworks和國内由成都電子科大參與開發的delta os。

延伸閱讀

vrtx/8002作業系統為z8002 16位微處理器帶來了完整的多任務和實時控制功能,通過将“核心”功能轉移到晶片上,作業系統可以在不損失可定制性的基礎上簡化嵌入式微處理器的開發,這是嵌入式實時作業系統最初的形态。

vrtx/8002嵌入式微處理器多任務實時執行系統

vrtx/8002(versatile real-time executive of embedded

microprocessor,嵌入式微處理器多任務實時執行系統)由專注于8/16位微處理器軟體開發的hunter

and ready公司提供,其硬體固化在一對型号為2716的eprom中。當時的hunter and ready公司市場營銷副總裁jim ready解釋說,和一般的使用者端可程式設計計算機不同,嵌入式計算機在接受大量任務時需要同時滿足實時響應和并行處理兩種需求。

vrtx将這些機制整合到了晶片上,讓開發者不必在新的計算機設計上重新實作和修改這些機制。

vrtx隻使用一個元件

vrtx相當于用一個簡單的元件代替了軟體的随機邏輯單元,就像用微處理器取代了随機邏輯硬體一樣。vrtx位于系統記憶體空間中。

接下來,ram或者prom中會加入一個配置表,将vrtx和除cpu、記憶體以外的系統硬體連接配接起來。然後使用者就可以使用vrtx的系統調用編寫任務了。

設計者可以專注于為應用程式添加價值,而不是和系統軟體打交道,這樣費時費力,而且有風險。“vrtx隻是系統的一個元件。”

雙晶片設計提供基于中斷的任務排程、任務間通信和同步、動态記憶體配置設定、實時時鐘支援、字元i/o和快速響應。如此廣泛的基礎機制隻需要一個cpu和記憶體的最小配置即可使用。

控制最多256個任務

盡管vrtx可以控制最多256個任務,支援至多256個優先級,但它是獨立于開發系統和配置語言的,不需要時鐘,而且不對中斷的結構做出任何假設。

vrtx通過使用者提供的配置表(rom或者prom中14個兩位元組記憶體字)和環境相連接配接。因為作業系統并不是一個需要系統生成軟體或者配置語言的子產品的集合,ready認為使用者在配置表中完全可以指定需要的全部參數。

當設計者增加系統調用時,可能會需要更多記憶體字。vrtx中一個新的程式狀态區域為增加中斷處理程式提供了方法。

vrtx/8002隻需要任意4kb記憶體,它的重要功能如下(見圖2-1):

1)提供任務通信和同步機制,不需要郵箱、信号量、資訊頭和交換。

2)支援256個任務和優先級。

3)基于優先級的排程,可以支援在同一個優先級下,按時間片進行排程。

4)128個使用者定義的系統調用。

5)提供邏輯上高于中斷–服務例程的位置服務。

6)支援實時時鐘和至少一個基于字元的i/o裝置。

7)同時支援靜态和動态記憶體塊分塊。

8)支援将記憶體分為最多4個65kb的位址空間,或者完全不進行位址空間分割。

圖2-1 基于prom的vrtx

hunter和ready同時提供c語言編寫的庫與vrtx進行互動,以及z8002晶片級别的支援軟體包。vrtx/8002價格是200美元(100個級别批量購買)和2000美元(非批量購買),以上包括授權和支援。

嵌入式作業系統的“摩托”系

摩托羅拉在嵌入式系統的地位舉足輕重,其微處理器、單片機和計算機系統是當時行業的标準,很多開發嵌入式作業系統的公司都是借助摩托羅拉的市場而起家的。

這裡說的“摩托”是指摩托羅拉公司(motorola),它是美國著名的通信和晶片設計制造公司,成立于1928年。作為一家老牌通信巨頭,摩托羅拉在通信業的地位毋庸置疑。從摩托羅拉發明第一款手機開始,摩托羅拉見證了迄今為止整個手機的發展史。許多人很熟悉摩托羅拉手機,但對于摩托羅拉公司晶片和計算機部(簡稱mcg)的業務了解不多。2003年,摩托羅拉将半導體業務分離出來成立了飛思卡爾(freescale)公司,并獨立上市,繼續摩托羅拉以前的通信、汽車電子和通用嵌入式處理器和mcu晶片設計業務。2007年,摩托羅拉的另外一部分與嵌入式相關的業務—mcg則以3.5億美元出售給艾默生公司。2011年,摩托羅拉自己的核心業務—手機也被網際網路巨頭谷歌公司以125億美元收購。2015年3月2日,恩智浦(nxp)半導體斥資112億美元收購了飛思卡爾,繼承了摩托羅拉半導體技術和産品的飛思卡爾公司在2015年12月完全與nxp 合并了,飛思卡爾公司的名字從此消失。這裡将講述與摩托羅拉嵌入式晶片和計算機密切相關的嵌入式作業系統發展中的一些有趣的事情。

靠摩托羅拉起家的os-9

摩托羅拉自1974年釋出第一款mc6800–8位微處理器到1979年釋出mc68000(簡稱68k)16/32位cpu之後,其晶片因為既可以使用在計算機系統中,也可以使用在嵌入式系統中,很快成為當時行業的标準。最早開發嵌入式os的公司,許多都是借助摩托羅拉的市場起家的,比如vrtx(reday system公司的産品,後被microtec research公司收購)、psos(isi公司産品,後被windriver公司收購)、lynxos等。其中os-9(microware公司的産品)的經曆值得特别說一說。

os-9是一個實時的、基于程序的、多任務和多使用者的作業系統,它很像unix的一個實時版本(使用類似技術的嵌入式os還有lynxos和qnx等)。os-9的開發始于20世紀80年代初,最初是支援mc6809微處理器一個稱為basic09的項目,後來随着mc6809支援64kb存儲器擴充到2mb,os-9元件逐漸豐富起來,比如gui,這使得它不僅可以使用在摩托羅拉的尋呼機上(見圖2-2),還可以應用在早期的個人電腦上,比如trs-80 color computer(俗稱coco),如圖2-3所示。這樣的os和圖形技術在當時還是非常領先的。

                 圖2-2 摩托羅拉尋呼機                                圖2-3 coco計算機

os-9在20世紀80年代初開始支援68k,20世紀80年代後期重新改寫成友善移植的核心(基于c代碼),該核心可以廣泛支援x86、ppc、68k、mips和arm。

os-9核心在結構上很有特色,非常類似微核心模式,但效率卻很高,也不是單片結構,架構更加安全可靠。os-9的核心、檔案、驅動和應用都是一個單獨的邏輯存儲子產品。每個子產品有自己單獨的頭、資料/代碼和crc。這樣,這些邏輯子產品很容易在保證高可靠性基礎上動态地建立和維護。

os-9支援posix的線程和api,因為具備實時性和unix應用相容性這兩個特點,os-9在支援摩托羅拉vme和cpci總線的工業計算機方面更具有特色。

2001年,北美的一家工業計算機公司radisys 收購了microware,radisys希望提供一站式的解決方案,比如提供與intel合作的網絡處理器ixp1200的解決方案等。但是因為沒有長期的發展政策和資金支援,os-9的發展和技術服務在後期基本處于停滞狀态。2013年,3家microware經銷商從radisys手裡購買了os-9的資産,成立了microware

lp,繼續為os-9使用者提供技術支援和服務。

提供完整方案的飛思卡爾

2003年,飛思卡爾從摩托羅拉獨立出來之後,一直緻力于提供一站式解決方案。飛思卡爾不僅繼續加大力量與著名的嵌入式os公司合作,比如montavista的嵌入式linux和風河公司的vxworks rtos,還自己投入人力、物力成立軟體研發中心,專門負責開源linux在powerpc晶片上的移植和優化工作。2004年,飛思卡爾在通信基站上大量使用的starcore dsp晶片上推出了免費smartdsp os軟體套件,套件内包含了codewarrior ide(該工具産品在若幹年後也被飛思卡爾收購)。今天,許多使用者都會在使用飛思卡爾mcu的時候,看到或者用到一個mqx的rtos,它原來是precise軟體技術公司1989年開發的一款rtos。與os-9的技術路線不同,它是一款微核心的rtos,具備多任務可搶占特性,經過裁剪可配置為低至6kb的rom,除了核心外還有檔案、tcp/ip和usb子產品等元件,支援68k、coldfire、ppc、arm等cpu。mqx以率先采用開放源代碼和免版稅商業模式在業内著名。2000年,mqx被arc公司收購(arc是一家銷售可配置處理器核的公司)。2009年,飛思卡爾收購了mqx,并在官方網站上提供、開放了其源代碼,使其成為開源rtos,允許使用者可以在基于飛思卡爾的晶片上免費使用這個軟體。mqx的應用主要是面向智能電子系統。今天,使用者在購買飛思卡爾半導體的mcu開發闆的時候,将可以免費獲得包括已經優化好的mqx rtos和codeworrios的ide開發工具。這不僅有助于降低研發和生産的成本,還加快了産品上市的時間,對使用者來說是極大的福音。

c/os的故事

μc/os也叫microc/os,它是在國内外具有廣泛影響力的rtos之一,這主要得益于作者jean labrosse 的幾本介紹μc/os原理和使用的中文版圖書在國内廣為流傳。與其他商業rtos不同的是,μc/os核心的源代碼是開源的,對于非商業客戶(比如大學老師和學生)也是免費的。至今已有數十本以μc/os命名的中文版圖書出版,數百所學校院系和專業開設的嵌入式系統相關課程使用μc/os作為嵌入式os 案例,數千篇研究μc/os相關技術的論文發表。

c/os的故事起始于1989年。那時,jean labrosse先生加入了位于美國佛羅裡達州勞德代爾堡市的dynalco控制公司,并開始為大型工業往複式發動機設計全新的、基于微控制器的點火控制系統。由于有實時核心的使用經驗,jean相信使用作業系統可以強力地推動該項目以及dynalco公司其他在研項目的進展。對于該點火控制系統而言,進入市場的時間至關重要,并且,實時核心的使用能夠幫助jean實作既定目标。jean也知道,将來還要為這款産品增加一些新的功能,而使用可搶占式的作業系統将允許在不破壞系統響應特性的情況下進行這些更新。最初jean考慮使用的核心是一個過去用過且很熟悉的核心。不過,該核心非常昂貴,而經費卻不是很充足。備選的是一個過去沒有用過的核心,其價格隻有最初選擇核心的1/5。最終,考慮節省經費的因素,jean選擇使用他不熟悉的那個作業系統。然而,他很快意識到他需要為這個看起來更便宜的作業系統付出更多的時間。在拿到核心後的兩個月,jean不停地聯系對方的技術支援人員,徒勞無益地做各種嘗試,想知道為什麼連一個最簡單的應用程式都運作不起來。這個作業系統說是用c語言寫的,卻要求用彙編語言初始化所有的核心變量。後來發現,jean是最先購買這個作業系統的那批使用者,在不知情的情況下充當了這個作業系統的試用版測試員。

實在是受夠了。jean轉而使用最初放棄的那個較昂貴的作業系統。眼看項目要延期,錢就不再是問題了。不到兩天,簡單的應用程式就運作起來了,這在之前那個便宜的作業系統上好像是不可能做到的事。核心相關的問題似乎解決了。然而,很快jean發現自己又進入了另外一個僵局。有一天,一個工程師向他彙報這個新的作業系統好像有毛病(bug),從此,一系列的問題就開始了。jean很快把這個工程師發現的問題轉發給軟體廠商,暗想他們會對此感興趣。但是,沒有收到他們修正bug的保證,取而代之的是,jean接到通知說:90天的擔保期已過,除非支付給他們一筆維護費,否則,他們不會修正這個bug。對jean來說這種要求簡直是不可理喻。按照軟體廠商的要求支付了這筆維護費用。想不到的是,軟體廠商竟然花6個月才去掉了這個bug。最終,在拿到第二個作業系統的一年以後,才利用該作業系統完成了項目的點火控制系統。很明顯,項目需要一個更好的解決方案。

經曆兩次失望之後,jean開始開發自己的核心。起初他想得很簡單,認為一個核心真正需要做的事情就是儲存和恢複cpu寄存器,寫一個核心應當不是一件很有挑戰性的事情。大約花了一年時間,果真寫完了第一個作業系統c/os。也正是由于有了新作業系統在手,開發多任務應用程式就如魚得水了。該作業系統主要由一個c檔案構成,一個應用中允許建立多達64個任務。每個任務有獨一無二的優先級。每次調用任務排程器時,cpu總是運作處于就緒态的優先級最高的任務。c/os是可搶占核心,在任意時刻都可以發生任務排程。高效的任務排程實際上隻是c/os提供的衆多服務之一。此外,該作業系統還會提供任務間通信(通過消息隊列和郵箱)及任務間同步(通過信号量)相關的服務。c/os所有元素的設計都考慮了高可靠性和簡便易用。

在jean labrosse的職業生涯中,他自始自終都很注重代碼的一緻性和文檔說明。從1984年開始,他就使用規範的代碼标準,c/os代碼的一緻性可以很好地證明這一點。在dynalco工作時,jean創造并推廣了一套嚴格的代碼編寫規範,c/os就是根據這套規範設計的。c/os源代碼的特點包括:大量的空行、字斟句酌的注釋和統一的命名。c/os核心還具有極好的可移植性,這也進一步證明了這種嚴謹的代碼編寫規範的優勢所在。雖然c/os跟它的先驅者一樣也有少量與處理器相關的函數,但是,這些函數代碼與作業系統中的其他代碼很清楚地分開了。工程師們能夠非常簡單地把c/os移植到一個新的cpu架構上。

為了把新軟體介紹給其他人,jean寫了一篇很長的文章,詳細解釋了c/os的内部工作原理。因為有太多内容要介紹,最終文章長達70頁。jean把文章投給《c語言使用者日記》(c user抯 journal),被拒了,原因有二:一是文章太長;二是文章主題不夠新。該雜志已經出版了多篇關于核心的文章,而這隻是又一篇關于實時核心的文章。但jean堅信文章是獨一無二的,他又把它投給《嵌入式系統程式設計》(embedded systems programming)。該雜志編輯的答複和《c語言使用者日記》一樣,《嵌入式系統程式設計》分兩部分連載了經過删減的jean的文章。發表的兩部分文章反響強烈,工程師們非常高興地看到,高品質核心的内部工作原理被揭露出來了,他們争相下載下傳c/os的源代碼。另一方面,核心廠商則對該文章的發表非常不安。實際上,那個廉價核心廠商尤其不安,竟聲稱jean抄襲了他們的工作。試想一下,jean怎麼可能基于一個不能運作的軟體來開發c/os呢!

很快,令rtos廠商更加不安的事情出現了。jean的文章被《嵌入式系統程式設計》雜志刊登後不久,《c語言使用者日記》的出版商r&amp;d出版社主動聯系jean,表示想出版一本關于c/os的圖書。起初,這本書隻是計劃把jean最早送出給《c語言使用者日記》的材料列印出來。如果采用這種思路,這本書也就80頁左右。為了充分利用這次機會,jean計劃寫一本深入介紹c/os的書籍。經r&amp;d出版社同意,在接下來的幾個月,jean開始寫作。到1992年的下半年,jean labrosse的第一本書《c/os:the real-time kernel》出版了(見圖2-4)。最開始,這本書的售出速度并不令人滿意,但r&amp;d出版社每個月都會在《c語言使用者日記》上給這本書做廣告。與此同時,jean labrosse漸漸被大家認可,成為一個核心專家。1993年的春天,他接受邀請,參加了在喬治亞州亞特蘭大市舉辦的嵌入式系統會議(esc),為超過70位嵌入式愛好者講述了作業系統的基本原理。在接下來的幾年中,他一直參加esc年會,每次都會給幾百個工程師講述mc/os核心。逐漸大家對書的興趣也提高了。過了最初緩慢發售階段,《c/os:the real-time kernel》最終銷量超過15 000本。

圖2-4 《c/os:the real-time kernel》和書後附的1.1版軟體

由于《c/os:the real-time

kernel》寫得很成功,在20世紀90年代,使用c/os的工程師越來越多。開發者很容易就可以把作業系統移植到新的硬體平台上,開發無數基于c/os的應用。雖然有少數c/os使用者隻是在業餘時間對c/os修修改改,但更多工程師真正把該作業系統用在了複雜的和要求苛刻的商業項目上。而來自c/os使用者的評論和建議也幫助jean不斷完善着該作業系統。在最初幾年内,他僅僅對c/os做過一些很微小的改動。然而,當r&amp;d出版社要求寫c/os的第二個版本時,他決定對作業系統和書做一次大的改進。更新後的作業系統就是c/os-ii。

如果快速浏覽c/os-ii源檔案,你可以發現該作業系統與c/os不同。在c/os中,所有與處理器無關的代碼都包含在一個c檔案中,而c/os-ii把它分成多個檔案,每個檔案對應作業系統中的一種服務。c/os-ii還提供了其前一版中沒有的許多功能,包括棧檢測功能、介入函數和安全的存儲器動态配置設定法。為了将這個全新的作業系統的新功能交代清楚,書的頁數幾乎增加了一倍。正如新作業系統要有一個新的名字一樣,這本新書也有一個新名字《microc/os-ii:the real-time kernel》。(在新的書名中,用“micro”替代了“”,這是因為書名中的這個希臘字元給很多零售商帶來了麻煩。)《microc/os-ii:the real-time kernel》一書于1998年出版。在這本新書中配有c/os-ii源代碼。這一次,很快有數千名開發人員測試了這個新的核心,并回報了很多寶貴意見。此外,對于那些不太熟悉核心的人來說,這本書全面并通俗易懂地講述了作業系統的基本原理。很多大學教授開始意識到這本書對想學習核心的新手來說有着很大的吸引力,于是,他們開始圍繞c/os-ii設計整套教學課程。很快,學習過c/os-ii核心的大學畢業生開始參加工作,并在他們的工作中繼續使用c/os-ii。

當很多學生因為他寫的書和很容易拿到的源代碼而開始學習c/os-ii時,大量的工程師則是由于其可靠性而選擇使用c/os-ii。2000年7月,一款嵌入c/os-ii的航空電子産品得到了do-178b a級認證,這意味着這個作業系統的可靠性得到了權威認證。該認證受航空電子聯合組織(faa)認可,也隻有那些被認為是足夠安全、可用于航空器的軟體才能得到該認證。直到今天,也隻有很少幾個作業系統成功地通過了該軟體認證必須經曆的苛刻測試。do-178b認證隻是c/os-ii取得的衆多認證書中的一個,其他的認證書包括美國食品和藥品管理局的上市前通知書(pre-market notification,510(k))、醫療裝置的上市前許可證(pre-market approval)和針對工業控制的iec-61508。符合這些标準對c/os-ii在工業領域中的應用是至關重要的。不過,這些認證對其他行業的工程師也有重要意義,因為這些認證表明c/os-ii具有可靠性高、文檔完備和可縮短産品上市時間等優點,這對任何設計都是很有益的。

一直到20世紀90年代末,jean labrosse仍然全職在dynalco公司工作,那時他僅用工作以外的時間做與c/os-ii有關的工作,但這很難跟上作業系統的發展要求。jean認為回答每一個c/os-ii使用者的問題是他的責任,但流入郵箱的信件卻源源不斷。既然已經不能再把作業系統作為一個業餘項目來做,jean決定建立自己的軟體公司。1999年秋,jean labrosse的公司micriμm正式成立。micrim由兩個詞構成,即“micro”(意思為微處理器或微控制器)和“ium”(意思為世界),是以,micriμm的意思是(從軟體的眼中看)微處理器世界。在成立micrim公司前不久,jean開始編寫c/os-ii一書的第2版,該書于1999年11月出版,并配有新版本的核心。該作業系統增加了兩個主要的功能:事件标志組和互斥型信号量。書中較長的描述的這些新功能深受c/os-ii使用者的歡迎。同樣,這本書本身也非常受歡迎,《microc/os-ii:the real-time kernel》的第2版很快就出現在衆多嵌入式軟體開發者的書架上。實際上,這本書是在嵌入式系統方面最暢銷的一本書。

進入2000年以後,micrim公司擴張了,一些工程師加入micriμm公司。他們不僅把c/os-ii移植到一些新的硬體平台上,而且開發了大量的範例工程,寫了很多應用筆記。2002年,jean的一個老朋友christian legare加入micrim公司,并成為公司副總裁。他有着豐富的管理和技術經驗,這進一步促進了公司的快速發展。自從christian加入micrim公司後,公司就從一個隻有一個産品的公司發展成一個有15個組合産品的公司。與此同時,為了滿足c/os-ii使用者不斷發展的需求,c/os-ii還增加了一些新的功能,包括給作業系統增加各種各樣新的api函數,以及把核心支援的最大任務數從64個擴充到255個。作為公司的總裁,jean仍然專注于編寫一流的核心代碼,最近完成的是c/os-iii。經過無數小時小心翼翼地程式設計和測試才完成的c/os-iii是一個魯棒性很好的作業系統,雖然它的根基是c/os-ii,但卻是一個全新的核心。根據使用者的回報和長時間的經驗積累,c/os-iii增加了幾個重要的功能。

編寫新軟體的時候,jean labrosse對那些流行的、沒有經過驗證的技術的使用持高度謹慎的态度。雖然他喜歡跟蹤高科技領域内的最新發展,但他認為,把關注點放在解決工程師的實際問題和提供一個可靠的、完整的核心,要比放在如何盡早跟上那些剛出現的發展趨勢更加重要。這種哲學思想已經在c/os發展中獲得了相當大的成功。到今天,micrim公司已經成為一個高度知名的嵌入式軟體提供商。工業界調查報告一緻顯示,該作業系統是嵌入式領域中最為流行的作業系統之一。jean的目标過去是、将來還會繼續是為他在dynalco公司時所面臨的、現在數以百萬計的嵌入式系統開發者還在繼續面臨的那一類問題提供有效的解決方案。

後記

我于2016年2月24日在紐倫堡嵌入式世界展與jean labrosse(圖2-5左1)和christian legare(圖2-5左3)見面和交流,jean介紹了他們最新的c/os for maker計劃,該計劃允許年銷售額少于10萬美元或者投資額少于100萬美元的商業公司可以免費使用包括c/os-iii

kernel、tcp/ip、usb device和host,以及modbus和檔案在内的系統軟體,據悉已經有幾家中國企業開始簽約該計劃,祝願他們的創業項目取得成功!

圖2-5 2016年紐倫堡嵌入式世界展

風河—嵌入式作業系統的常青樹

過去30年間,風河的vxworks在嵌入式作業系統領域一直處于領先地位,在航空航天、通信、工業控制等行業有着廣泛的應用,風河在業内被稱為嵌入式作業系統的常青樹。

風河公司(wind river system)是一家專門從事嵌入式作業系統、軟體開發工具、解決方案平台和服務的軟體公司,由jerry fiddle和david wilner于1981年在美國加州創立。vxworks是風河公司推出的實時多任務作業系統。

vxworks的曆史

vxworks最初的版本并不是一個全新的産品,而是在vrts核心上增加了一些功能之後的一個産品。vrtx原本是ready system公司的産品,它缺少一個簡單的實時作業系統的檔案系統子產品和內建開發環境。vxworks的建立幫助vrtx核心形成了一個完整的嵌入式作業系統及開發環境。風河的創始人david wilner認為vxworks的名稱“vrtx works”是一個雙關語。之前,風河已經和ready system公司達成協定,風河擁有銷售vrtx的授權。但到了1987年,風河預感到vrtx的銷售合同可能會終止,于是轉去開發了自己的wind核心。這個wind核心是由當時隻有17歲的加州大學伯克利分校的學生john fogelin編寫的,目标是替換vxworks中的vrtx。20世紀80年代初的各種rtos是用彙編語言書寫的,而wind核心是用c代碼書寫的,因為wilner堅持認為微處理器性能會按照摩爾定律發展,c語言在性能上不會輸給彙編語言。事實證明這個決策是正确的,c語言帶給wind核心很好的可移植性、标準的c庫和相容的api。1989年,風河正式釋出了自己的嵌入式os-vxworks。

風河産品的特點

現在風河産品包含兩個嵌入式os平台:linux和vxworks;基于eclips支援這兩個平台的開發工具workbench、on-chip debugging工具産品(即jtag仿真器,該工具在2015年年初已經停止開發和銷售了)、測試管理工具和工程服務。

vxworks是由支援多核、32/64位嵌入式處理器、記憶體包含和記憶體管理的vxworks 5.0和vxworks 6.0、workbench開發工具(包括多種c/c++編譯器和調試器)、連接配接元件(usb、ipv4/v6、多種檔案系統等)、先進的網絡協定和圖像多媒體等子產品組成。除了通用平台外,vxworks還包括支援工業、網絡、醫療和消費電子等的特定平台産品。風河網絡裝置平台是其中最受歡迎的産品之一。如圖2-6所示。

1995年,vxworks 5.0 釋出,風河推出一套稱為tornado的嵌入式os開發環境,如圖2-7所示。在多數使用者眼裡tornado就是vxworks,因為工程師每天的開發工作都是在tornado上完成的(就像今天mcu開發中使用的keil或者iar ew開發工具一樣),多數使用者使用以太網作為連接配接開發主機和目标機(比如powerpc、mips、arm和x86)的通信方式,這非常友善且高效,類似今天的嵌入式linux開發方式,當時tornado是嵌入式os領域最有影響力的開發環境。2004年,支援記憶體保護機制vxworks

6.0釋出之後,workbench逐漸代替tornada,成為可以支援windriver linux、vxworks和on-chip debugging的開發環境。

圖2-6 風河網絡裝置平台

圖2-7 風河tornado開發環境和vxworks

vxworks的應用

風河公司的vxworks以其高可靠性和優異的實時性被廣泛應用在通信、軍事、航空航天、工業控制等領域,比如在美國的f-16、fa-18戰鬥機、b-2 隐形轟炸機和愛國者飛彈上都使用着vxworks,最為著名的是1997年4月在火星表面登陸的火星探測器、2008年5月登陸的鳳凰号,以及2012年8月登陸火星的好奇号火星車,如圖2-8所示。

圖2-8 2012年8月登陸火星的好奇号

風河的重要并購活動

在嵌入式軟體行業,風河是一家曆史悠久、産品線完整、資源充分的公司。風河公司在2009年被intel收購之前已經在美國納斯達克獨立上市。根據風河的财報,2008年财年風河公司的銷售額已經達到3.286億美元,比2007年增加了15%。風河公司之是以能夠在競争激烈的嵌入式軟體市場脫穎而出,除了其卓越的技術、産品和服務外,并購也起到了重要的作用。根據風河公司的官方資料,在2000年~2008年期間,風河共進行了10次并購活動。筆者觀察到,其中技術和産品互補型的收購占大多數,比如2000年3月收購est公司。est(embedded support

tools)是美國馬薩諸塞州的一家嵌入式開發工具公司,以提供vision probe/ice jtag仿真器和powerpc開發闆而著名,支援vxworks和tornado開發環境。此次收購讓風河增加了硬體的低層開發能力和新的産品線,est産品線目前已經整合到風河四大産品線之一的on-chip debugger産品線之中。2008年10月,風河收購mizi research是為了在嵌入式linux智能手機os上積累技術并提升在亞洲市場的服務能力。mizi公司成立于1999年,是南韓一家專注于移動應用領域的嵌入式linux企業,在智能手機、車載汽車資訊系統和視訊電話等方面有超過20個成功應用案例。而2000年風河收購美國isi(integrated system)公司卻不是單純技術和産品的互補了,市場因素才應該是這次并購的更重要原因。isi也是一家老牌的嵌入式os企業,它們的嵌入式os-psos在行業中有着很高的知名度,市場占有率很大。風河的vxworks在市場上與psos競争非常激烈,這次收購幫助風河成為嵌入式os名副其實的嵌入式軟體巨頭。對于這次收購的目的,當時有媒體直言不諱地提出質疑,質疑風河未來很有可能因為産品政策調整的原因,而讓isi的psos作業系統半途而廢。事實上,在收購isi公司5個月之後的芝加哥嵌入式系統會議上,風河的董事長jerry fiddler就上述質疑果真給出了明确表示:“在(收購)那一天結束的時候,你擁有的平台就隻能是一個,否則你無法正常運作公司。”就這樣,曾經聲名顯赫的psos從此消失不見了。

結語

2009年,intel收購了風河,這讓風河再一次走到了風口浪尖上。現在,風河是intel全資擁有的子公司,這極大地改變了市場的結構。雖然這兩家公司都宣布,“風河公司将繼續開發支援多種硬體體系的創新商業級軟體平台,以滿足衆多嵌入式系統使用者和移動使用者的需求。”然而,對這一點不少人心存疑慮。很多人擔心風河的嵌入式os針對arm、mips或者power pc等非intel晶片,将來可能會被降低為二級版本。但是幾年過去了,回頭再看,這些曾經的顧慮顯然都是多餘的。收購風河給intel在嵌入式市場帶來了一些有利的資源,比如獲得了一支極富經驗的嵌入式os研發和服務團隊。雖然其他大的利好目前還不很明顯,但風河在嵌入式os道路上将繼續穩定發展,這一點已毋庸置疑。

風河對于市場的把握有自己的獨到之處,每次進入市場都是在最恰當的時間點。風河公司雖然進入開源的linux市場較晚,但發展迅猛并最終擊敗競争對手成為市場老大。在物聯網作業系統領域,風河也不是物聯網市場的領路者,在微軟和arm推出物聯網作業系統産品之後,風河才開始逐漸調整自己的産品政策。2015年10月,風河釋出了自己的物聯網作業系統軟體—wind river rocket,與arm mbed一樣,wind river rocket是一個免費的、支援mcu的實時作業系統,wind river

rocket包括風河helix app

cloud,形成了一整套解決方案。我們期待,作為嵌入式作業系統的常青樹的風河公司,在新一波物聯網大潮中能夠再放異彩,續寫輝煌。

嵌入式作業系統的紅花綠葉

在衆多嵌入式作業系統公司中有人盡皆知的著名企業,比如微軟和風河,而更多的則是映襯在這些“大紅花”周圍的“綠葉公司”。其中許多都是小公司,甚至隻是個人,他們大多都辛勤地默默耕耘着,為嵌入式作業系統的發展奉獻自己的才能和智慧。

20世紀70年代末,嵌入式作業系統商業産品在美國和加拿大等國家出現,20世紀90年代末嵌入式os的數量呈現井噴式增加,最鼎盛的時候有數百種之多,即使經過30多年的發展和淘汰,現在依然有數十種之多。

最早的rtos公司不在矽谷

廣為人知的嵌入式實時多任務作業系統公司比如風河(vxworks)、isi(psos)和ready system(vrtx)都是從矽谷起家的。2015年5月底,我在紐約見到一位嵌入式系統的老前輩bernard mushinsky,如圖2-9所示。通過他我才了解到,美國最早的rtos公司不在矽谷。

圖2-9 作者與bernard

mushinsky 2015年在紐約的合影

bernard建立的公司industrial programming inc(ipi)成立于1969年,位于美國紐約。1976年開發出世界上第一個來自第三方獨立軟體公司的rtos,産品是mtos-68和mtos-80。第二代産品是在1979年和1981年先後釋出的mtos-68k和mtos-86。bernard說,這些産品至今在某些裝置中仍然還在使用。20世紀80年代中期之後的10年,mtos更新支援intel 32位的處理器,包括386/860。mtos應用覆寫計算機外設、通信和工業控制等許多領域,有1000多個客戶使用了mtos産品,這在當時可謂是一件很了不起的事情。

即使在今天來看,mtos的技術還是有獨到之處的。第一代mtos産品率先實作了同構多處理器的多任務、記憶體池的i/o驅動、郵箱中的事件标準和可協調(異步)的中斷機制。

這裡詳細讨論一下mtos處理器的技術。mtos支援的是對稱多處理架構(symmetrical),沒有主從(master/slave)之分,mtos的任務不需要知道它(該任務)運作在哪個cpu上,開發者看到是一個虛拟的單cpu。30年前,半導體技術沒有今天這樣先進,還沒有多核cpu。多cpu系統一般是一塊單闆計算機上有多個cpu,或者多塊單闆計算機通過總線構成一個多cpu的系統,典型的是motorola公司的vme總線計算機系統。在外設支援方面,mtos可以做到支援另外一個cpu闆上的i/o裝置,而且可以支援最多16個cpu。mtos的任務可定義為本地任務(運作在一個cpu上)和全局任務(運作在所有的cpu上),mtos還有一個invariant

execution技術,它支援應用程式選擇以同樣的方式在一個cpu上或多個cpu上執行。mtos多處理器技術與今天linux對稱多處理器(smp)思想非常接近,可見其技術的先進性。

2015年5月我與bernard是第一次見面,當他了解到我的經曆,以及我與jim ready在20世紀90年代初就已經相識,并在之後15年間一起工作時,我們彼此之間的距離就拉近了許多。bernard對jim和他的vrtx非常尊敬,一再真誠地說vrtx市場做得好,非常成功,前一年矽谷的嵌入式系統大會上他還與jim見面并進行交流。當聽說我離開紐約後将到矽谷見到jim時,他讓我帶去他的問候。

當我表示希望更多地了解mtos技術時,bernard非常高興,他寫了郵件向我推薦他們早期出版的一本圖書《an implementation

guide to real-time programming (yourdon press computing series)》。bernard還給了這本書在美國亞馬遜網站上的連結,告訴我能買到舊書,如果不友善他可以幫我購買。我已經購買了一本,可惜的是郵寄的時間太久,沒能在離開美國的時候帶走,直到2015年9月下旬我才收到這本書。

bernard已經年逾古稀,依然堅持工作,他當時在hcc工作,和夫人長期居住在紐約。hcc公司成立于2000年,由戴夫·休斯創立,總部在波蘭的布達佩斯。hcc以提供世界上第一個經過認證的、便攜式醫療應用的嵌入式dicom協定棧而著名,主要産品是安全的檔案系統軟體和usb協定棧。臨别前,我和bernard約好,下次我再來紐約我們去一家中餐館品嘗道地的中國菜。遺憾的是,2015年8月中,也就是我回到北京兩個月後,傳來了bernard去世的消息。我們痛失了一位優秀的老前輩,我和他的中餐之約再也無法實作了。

嵌入式os的前輩—smx

micro digital公司創立于1997年,其産品smx(simple

multitasking executive)是一個嵌入式os,也是一個rtos。公司最初隻是在嵌入式系統領域做工程應用和服務。smx開發始于1987年,1989年第一版smx釋出,之後近20年,smx逐漸豐富和完善,形成了包括核心、檔案、網絡、圖形、usb和wifi子產品在内的一個比較完整的嵌入式os。

micro digital的創始人ralph moore是這個行業的前輩,他早期從事大型計算機的研究,後來自學程式設計成為微處理器的程式員,經過多年研究成功地開發出smx。之後ralph轉入公司業務開發和銷售,最近幾年他潛心于v4版本的smx多任務核心的設計和開發,最新版本的smx核心已經在2014年1月正式釋出。

我在2000年1月曾經通路過micro digital,它位于美國南加州costa mesa,距離著名的orange country(橘郡)不遠,旁邊就是uc irvine大學。我去的時候,見到了ralph和他的兒子david,還有一個行政助理betty。與ralph的見面促成了我們之後的合作。昆明一家公司購買了smx rtos,運作在工業pc上,用于生産線自動化控制系統。除了這個客戶之外,smx這個産品沒有找到更多機會在國内推廣,但是smx代理的gui子產品—peg,我們在國内找到了一些使用者。peg既可以支援smx,也可以獨立運作,甚至可以在其他的rtos上運作。我們把peg移植到vrtx和ppc823平台上,還開發了中文字庫,這樣市場就容易推廣了。

smx有20多年的曆史,上百個成功應用,最新版本smx 4.2在核心性能提高、減少存儲器使用、提高安全和可靠性、增加新的特性等方面有了很大的改變。smx不是很有名氣的rtos,既無法與功能完整的qnx和微軟windows ce相比,也無法與小巧靈活的c/os并論。smx介于二者之間,既保持着嵌入式os的實時性,又盡可能地放入更多的功能,以滿足高性能嵌入式系統的需求。最難能可貴的是,smx團隊在嵌入式os上堅持不懈的精神。

埋頭苦幹的threadx

threadx創始人edward l. lamie博士曾經是美國加州大學斯坦尼斯分校計算機科學系教授,從事計算機科學的教學和科研工作多年,有多本專著出版。其中《real-time embedded multithreading: using threadx and arm》已經被翻譯成多種文字出版。lamie的其他著作還包括《pascal programming》和《pl/1 programming:a structured,disciplined approach》。

講到threadx和lamie博士,還有一段小故事。據業界人士介紹,lamie也是nucleus rtos(accelerated technology公司)的創始人。nucleus從1.0版本發展到1.3版本後被mentor收購,mentor将nucleus的版本修改為1.11後繼續發展,而lamie另立公司express logic,重新開發了一個threadx,最初版本是3.0,現在已經發展到了5.x。threadx和nucleus雖然大體結構及大部分機制相似,但是lamie 博士還是做了很多變化。據最新的報道,threadx已經嵌入超過15億個裝置中,其中包括大量的消費電子産品,比如hp列印機、多種3g手機晶片,以及近年來日趨增加的物聯網裝置。

threadx是提供源代碼、一次性授權的嵌入式os,與小型rtos一樣,threadx在技術上并無特别的新意。除了核心以外,threadx可以提供基本的嵌入式os的中間件,包括filex、guix、netx、usbx等,提供兩種核心開發工具:tracex和stackx,其他工具則要借助第三方,比如iar和arm keil了。express logical在市場上非常低調,如果注意一下threadx的公司網站和宣傳資料可以發現,他們總是強調有多少裝置使用了threadx,2007年的數字是4.5億,到現在已經是15億了,這與學者出身的lamie博士嚴謹務實的作風不無關系。express

logical位于加州san diego,這裡彙集了美國無線通信和醫療領域的高科技公司,著名的高通(qualcom)公司總部就在san diego,德州儀器、三星、intel、摩托羅拉、松下等全球主流的高科技企業均在此地設有專門的無線通信研發機構,這使得threadx在無線通信領域有大量的應用。我在參觀美國ces2014展覽的時候,看到一款高通公司開發的智能手表toq,據現場的人員介紹,它就是使用了threadx嵌入式os,如圖2-10所示。

圖2-10 高通的智能手表toq

繼續閱讀