|
本帖最后由 一朝成名 于 2009-9-28 23:38 編輯
以下推薦的幾篇文章個人感覺非常不錯。對于行業整體的把握以及行業發展動向的分析很有深度。
作者介紹:陳渝,清華大學老師,他也是skyEye的開發者,他的書《源代碼開放的嵌入式軟件分析與實踐--基于SkyEye和ARM開發平臺》也不錯,值得看看。
紅色的標注是我寫的一些簡單的見解
很高興有機會跟大家一起交流一下關于嵌入式領域的開源軟件,先自我介紹一下,我叫陳渝,目前在清華大學計算機系當老師(博士后呵呵,人家不愿意說,還是我來說吧),主要是從事操作系統和嵌入式系統的一些教學和科研工作。其實當時何老師給我這個題目時,我覺得確實有點大,雖然有兩個限制,限制在嵌入式領域,限制在開源,即使加上這些限制,其實范圍也是相當大。所以我按照目前我了解的一些情況給大家做個介紹。不能包含到題目的方方面面,只能是個人的一些粗淺的認識。開源軟件確實是從我開始接觸,就是90年代中初期,到現在也有10多年了。但是也很難說對開源軟件了解到很透,因為確實發展日新月異,這是我了解到的情況。首先我跟大家介紹一下當前在嵌入式領域內的一些應用,這個可以看出來我們軟件有些什么樣的特點;接下來會就嵌入式系統中的軟件架構層次上介紹一下各層次在面向嵌入式相關的一些軟件;最后還有時間的話,給大家介紹一下目前在嵌入式領域做的教學科研工作,和大家分享一下。
前面已經有很多老師提到嵌入式系統的應用領域,比如說在國防、工控、消費電子等等,其實還有一個很重要的趨勢是跟網絡結合,這些事我們認為當前嵌入式領域最主要的應用,但是由于領域的差異性很大,也導致了一些軟件的區別是很大的。在早期,在軍控、航空航天里面,嵌入式系統是相當的廣泛,舉個簡單的例子,在我們國內,像航空航天,我們跟航空航天的一些機構有些聯系,我們知道在他們的系統里面,無論是登月,還是載人飛船,還有自己的大飛機,嵌入式軟件的身影是無處不在的;另一方面呢,在我們的日常生活中,比如現在比較流行的電子書,這其實也是嵌入新型的軟件在里面,還有在家庭方面,我們早期的家庭方面,可能沒有關注到太多嵌入式軟件的身影,但是現在的一些PSP、手機里面,還包括攝像機等等,軟件的作用越來越大,特別是跟Internet互聯,這一塊已經成為現在嵌入式系統里面重點關注的、軟件需要重點去支持的一個方向。說到視頻服務器,我跟大家簡單介紹一下,不知道大家有沒有體會,現在出門基本可以看到到處都有攝像頭,攝像頭就是通過類似這樣一個架構來把攝像頭所看到的場景給記錄下來,便于事后進行分析,可以這樣說目前北京攝像頭的比例在世界上都可以排到前三位的。那么怎么能夠更好地支持一些視頻的處理?這一塊也是嵌入式系統比較關注的一個領域。家庭這一塊,這個其實是目前在研究方面也是做的比較多的,整個家庭場景里面,實現一個設備級的互聯互通,剛才周立功老師也講到他們企業中設備的互聯互通,他的那個場景可能更多在工控里面,在智能家居這個領域,目前也是競爭相當激烈,也有很多的研究成果,后面會給大家介紹一下。這個嵌入式Internet代表了這幾年會比較大的發展趨勢,怎么能夠把嵌入式軟件、嵌入式應用和Internet連接起來,跟后端的兩個所謂余計算等等結合起來,更方便更有效地服務,這個其實是我們前端和后端越來越緊密地連在一起了。這個不僅是嵌入式軟件的問題,還要考慮嵌入式軟件和后端服務器軟件之間更有效的互聯互通,我們上了3G以后,這一塊的重要性也越來越突顯出來了。這個數字機頂盒,我就跳過去了,其實前幾年已經有的概念,目前來說發展的還不是特別快。汽車電子這一塊是個很重要的問題,大家都知道,我們開這個會很多都提到“核高基”,其實“核高基”在嵌入式領域重點支持兩個,一個就是汽車電子,一個是移動網絡。在這兩個里面怎么能夠發揮軟件的作用,使得它的功能可以更大化,更充分體現出來,這一塊其實國家也是相當重視,我們的企業在這方面也是做了很多工作。智能玩具和機器人,這個我給大家簡單介紹一下為什么這個也很重要,不知道大家關注沒有,微軟目前專門面向機器人領域提出了它的所謂的集成開發環境,希望把將來robot的發展方向能夠控制住,通過它的IDE、編程語言,通過它提供的一系列庫等等,這個領域現在看不出很大的前景,但其實,在國外這個方面已經有很熱的研究了。包括我們每年在學校都會組織一些國內國外都有機器人比賽,機器人足球賽等等,這都是嵌入式軟件在智能機器人領域里的發展。工控這個領域,其實大家很多企業都涉及到這一塊,我就不做詳細講解了。但是有一個需要注意的地方,現在的工控領域已經不是一個單獨的體系,它需要跟Internet互聯,這一點像微軟雖然它不做開源,但是它還是支持一些開放的標準,甚至包括開放一些源代碼,我覺得也不能一提到開源,就把微軟作為一個靶子來打。在學校來講,對微軟還算是一個中立的立場上來說話的。微軟還和其他一些企業做DPWS協議,就是希望能在工控領域使得工控設備能夠更有效地進行互聯互通,這個就類似于早期的UPnP,UPnP協議可能更側重于家電,嵌入式設備等,但目前還希望能推到設備上去。軍事偵察這個領域,大家在一些場合都看到了,在我們國家,無論是在航空航天,其實周立功老師他們更有經驗,在我們國內已經承擔了一些項目,還有朱明遠老師他在航空領域、飛機領域也有他們軟件產品的體現。可能由于國內安全或保密的要求,他們公布的信息不多。這是一個日本做的機器人,是個例子,還有火星探路者等等。
前面給大家簡單介紹了當前嵌入式系統應用的領域,我們可以看出有幾個特點,嵌入式應用場景是千差萬別的,但是也確實朝著互聯互通Internet的這么一個方向發展,基于這個趨勢,我們來看看現在的一些開源軟件。這里面資源確實有限,我也很難進行展開介紹,這是把我了解到的部分內容和大家做個簡單的交流。從這個軟件架構上來說,它確實從硬件上涉及到一系列的軟件,包括協議等等。在硬件這一層通過協議和網絡這一層的互聯互通,除了TCP/IP協議外,還有一些使用比較廣泛的協議,比如ZigBee,Bluetooth等等,這些協議都有相應的軟件協議在支持,有了最底層的協議棧支持后,上層的這些軟件就可以互聯互通了。在這之上,會有一系列的操作系統和更高層的協議,操作系統也是涉及到開源和嵌入式領域內的,有Ecos、RTEMS等,協議有UPnP、Jini、DPWS、IGRS等,那么重點提一下IGRS是我們國內設備級互聯互通的協議標準,目前它的基礎協議層已經成為國際標準,目前在進行推廣,其他的如UPnP、Jini、DPWS是國外一些大的企業自己的標準。再往上是middleware這一層,middleware本身是個比較廣義的軟件范疇,這里面會提到CORBA、OSGi、DLNA等等,它主要面向工業界和消費電子界服務層或軟件層的互聯互通。再往上是一些middlewareservice,包括GUI,還有Database、IDE等等,在底層這些支撐軟件的支持上才會產生各種各樣的應用。那么現在的應用,我覺得主要有兩個趨勢,一個是跟那個所謂的被控系統綁定,第二個是跟Internet綁定,這兩個趨勢會導致一些新的廠商、新的應用、新的技術。
我再簡單介紹一下相關的OS,由于是開源軟件,那么在嵌入式操作系統里面,開源軟件也是相當多的。但是做的能夠給產業去用的開源操作系統并不是很多,剛才邵老師已經介紹了有μC/OS等,但是要注意的是開放源代碼并不就是開源,它還和license相關,剛才邵老師也介紹了有關license的情況,如果用于商業里面,也是需要付費的。(呵呵其中的意思大家體會一下)但是這里的一些OS即使用于商業里面,也可能不需要付費的。這個層面的OS也有一些,也達到了一定的數量。第一個就是ECos,它一開始是自己獨立的一個小公司,然后被RedHat給購買了,購買后,嵌入式這一塊由于推廣不力,Ecos又自己出去了成立一個新的公司,目前也還在發展,但總的來說,發展的力度并不是特別強(感覺最近發展的還可以吧,09年4月發布的3.0版本,我最近項目拿來開發的感覺還可以,抽時間我獨體的介紹一下)。第二個是RTEMS,RTEMS主要是應用在航空航天領域,這就有點類似于Vxworks,但是它是一個不需要繳納版稅的嵌入式操作系統,是由美國的一個公司在維護。根據我的理解,當前在航天領域,有些系統是用RTEMS在做一些應用,我們跟他們有些技術上的交流與合作。開源的特點是很多人來維護,但是缺乏一個很強的商業支持,從商業上的支持維護來看,維護的熱情和做操作系統商業還是有點差距的(性能非常不錯的RT os,性能不錯跟Vxworks比過猶不及,應該關注一下)。這兩個操作系統,我理解是目前開源、無版稅、有一定市場潛力的操作系統。至于Linux大家已經講了很多了,我不會展開去講,但是Linux它的發展點是不一樣的,Linux它本來的目標是面向服務器和桌面的操作系統,但是它會有很多分支,特別是在RT-Linux會對實時有很多支持,目前它的RT能力,根據我了解到的一些資料,因為Linux還有一個很大的特點是它支持VM,虛存管理,它和windriver有虛存管理的Vxworks的性能相比,差別并不是很大,這是RT-Linux最新的發展;第二種Linux發展就是面向沒有虛存管理的CPU,更低端的CPU,有一個分支叫μCLinux,這個也在很多的嵌入式設備里面有很多體現,大家可能看不到,因為操作系統在最底下,比如說我們現在看到市場上的攝像機,就是嵌入式μCLinux,還有一些照相機等等。Linux應該是很大的一類,由于大家了解比較多,就給大家簡單介紹到這。另外還要介紹一些OS,這些OS是用在更不常用的領域,我們稱之為無限傳感器網絡,可以看到無限傳感器網絡這個小片子,它和一個硬幣的大小差不多,日本有的企業做出來的甚至比硬幣還要小很多。這些小一點的嵌入式設備,它通過ZigBee可以實現一定程度的互聯互通,在這個小設備上,也有一些OS在應用。有美國做的TinyOS,還有歐洲做的Contiki操作系統,它支持了小型或微小型深度嵌入式設備的互聯互通,這一塊目前在研究階段還是多一些,但是我們認為在將來會有一個好的應用前景,它意味著我們的嵌入式設備真是無處不在的且互聯互通。
前面講的都是面向特定領域的OS,比如工控、航空航天領域的OS,還有一類是面向我們消費電子類的OS,我這里做了個總結,差不多都是基于Linux,可以稱之為Linux系統的一個解決方案,當前有兩大類,國際上有大的公司在后面做著推動,第一個就是Intel在推動的叫做Moblin,它聯合一些軟件企業,一直想將來在以它的嵌入式CPU為核心的嵌入式設備上提供一整套軟件的解決方案。這個Moblin架構用到了QT的3D顯示,還有將來的3G網等等,wifi,與互聯網會有很好的溝通,形成一整套的架構體系,那么這個體系由Intel還有幾個Linux廠商一起來推進,這是一個值得關注的一點,我記得Moblin也是Intel收購windriver后重點要做的事情。另一個是大家可能聽的更多的Google推動的Android操作系統,其實也是一個解決方案,底層也是Linux,也提出它自己類似Java的一套系統,可以來支持它最主要的目標是手機,或者說是移動終端,希望通過控制終端的方式使得終端能夠更好地采用它后端的這些服務,剛才提到一個觀點,嵌入式終端其實將來要通過后端的服務來給人呈現一個更好的交互的手段,終端畢竟能力有限,只要有了高速的網絡,后端的服務就可以很好地呈現在我們前端了。所以說這里面也存在一個將來的趨勢,可以看出軟件將會變成一種服務,將來可能不是賣軟件,而是賣服務。(做底層硬件的可能不喜歡這些話,但是是事實)這一點大家也是有很多體會了。Google就是一個典型的例子,它沒有賣軟件,它賣的全是服務。這個我就簡單介紹看下它的類和Linux2.6內核,這是它的運行環境,包括很豐富的交互處理,上層還用了很好的開發環境,這里面做的系統都是開放源代碼的,從底層到上層都是開放源代碼的。
在middleware這一層,除了早期的CORBA,還有個很重要的趨勢,OSGi成立1999年,但是由于OSGi它推Felix集成開發環境,引起了大家的注意,當前主流的中間件都是基于OSGi開發的,也實現了一些開源的事情,我們理解就是它主要基于Java的更好的可以實現組件的一個動態替換的一個新型系統。GUI這里面,我相信魏老師會給大家講的,我就不班門弄斧了。Database這一塊,也有個趨勢,就是早前的面向關系數據庫外,面向對象的數據庫也越來越引起大家的重視了,尤其在嵌入式領域。DB4o就是一個很不錯的面向對象的數據庫,當前在我們的嵌入式領域相當廣泛。IDE除了Eclipse,NetBean、Kdevelop外,還有一些面向C和C下部MonoDevelop等一系列開源集成開發環境,大家用的最多的,或者基于它進行二次開發最多的還是Eclipse,這個我想大家也都有體會。這是IBM在維護的開源的可擴展的IDE。
最后再花點時間簡單介紹一下我們正在做的工作,其實我們做了很多教學和研究工作,都離不開我們的開源軟件,我們看一下。第一個就是我們做的嵌入式開發和教學的模擬環境,叫做Skyeye,這是一個軟件,它主要的目的是能夠模擬一個嵌入式的開發板,這樣可以使得我們軟件在這個硬件上進行調試、運行、開發,這是目前它支持一系列的CPU和一些外設,目前已應用于教學和部分科研中,有相應的網址大家可以訪問。目前也是我的學生在做進一步的開發和維護。第二個OS,OS算我的本行,其實有個很有意思的特點,也和大家介紹一下,我覺得我們國家OS的教學有比較大的問題。很大的問題在于老師的教學,我曾經參加過教育部的一個會,操作系統教學的一個會,來的老師都是教操作系統的,但是只有10%的老師會去做操作系統的研究,這確實是個問題,如果不做研究,怎么能夠更好地去教學?如果只照著書本去教學,其實是很有問題的。而目前我們國內的操作系統的教學,還是以書本為主,就是以原理為主。但是我們看國外,無論是MIT還是斯坦福,他們都是面向實踐的操作系統教學,這一塊其實邵老師應該也有相應的體會,我們現在目前就是基于MIT的freecode的操作系統,來做進一步的推修、擴展,學生花很大的時間和精力放在實踐這個環節,通過它更好地了解操作系統,目前我們做了擴展,在不到7000行代碼里面,支持x86的SMP和多核架構,可以把Linux的,Linux很重要很復雜,我們把它的調度器的框架、算法、內存管理都移植到我們的操作系統里面,代碼不超過1萬行,就可以讓學生在這上面做相應的實驗和了解。當然即使清華的學生對它依然覺得有難度,我希望通過我們進一步的擴展可以使我們的學生可以更好地去了解OS真正的怎么回事。第三個是偏科研,剛才我已經提到了,要支持互聯網,現在有個很重要的觀點,要把多個嵌入式設備隱藏在看不到的地方,通過它們的互聯互通互操作來使得可以給人提供更有效的服務,那么目前我們在做的一些無論是863還是“核高基”的一些項目,都是與之相關的。當前有個概念叫普適合計算,在清華也有專門的普適計算研究中心來做相應的工作,目前申請的項目就是希望能夠通過支持底層設備級的互聯互通協議甚至做進一步的擴展,包括和國內其他單位合作使得將來的設備能夠更有效的互聯互通,然后動態地生成一些服務,給提供一個更好的支持,使我們的生活更加方便和舒適。這是我們目前在做的一些工作。
最后簡單總結一下,就是現在我們國家確實在進一步推廣支持開源軟件,學校也在進一步推廣開源軟件的教學,產業可以通過開源軟件來降低成本,增加效益,我們理解是開源軟件在嵌入式領域將會有更大的發展。謝謝大家。 |
|