★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識重要,素質比智力重要,覺悟比素質更重要
          posts - 110,comments - 35,trackbacks - 0

          重利用代碼

             由于嵌入式系統有特殊的需求,以及不同的專門硬件要協同工作,嵌入式軟件開發者通常使用非常原始的方法來開發,有時每一個新的項目都要從頭再來一遍。現在,隨著嵌入式技術的成熟以及系統本身變得更大更優化,很多人開始對于把一個產品的模塊甚至是全部的應用程序用到另一個產品感興趣。這種可重新利用性使得\"一次開發,多次利用\"成為了可能。
          Java環境使得一個模塊可以只要做很少的工作就可以適應多個項目和平臺。甚至包括有時客戶需要一個新的目標板,或者采用新的硬件(CPU或外設)和軟件,或者使用不同的Linux都可以進行移植。

          集成Java代碼和源代碼

            使用源代碼明顯是指應用程序的多可用性以及代碼的重利用能力。在Java應用中,一個設計很好的界面,或者虛擬機,或者是底層的硬件都可以很好的兼容到嵌入式系統中。盡管無法移植,對于很多功能和硬件界面來說,在本地環境下開發的代碼也許仍然是最好的解決方案。在C、C++或者匯編語言中,加入標準的通信、接口模塊、用戶界面、安全特性會花費很多時間與金錢。與之相比較,Java的基本庫本身就提供了這些東西甚至還更多,這樣就可以加速開發。

          開發者的興趣和技術

            很多程序員現在被培養來做Java應用開發。舉個例子,IBM有幾千個做Java程序的程序員。隨著大部份培訓機構開設了這種流行的語言和相應的開發環境的課程,大量的Java開發人員成長起來。

            下一代的嵌入式項目開發人員需要有效的配置復雜的、功能強大的、連接在網絡上的設備。既然Linux和Java技術都能滿足TCP/IP協議棧,支持通信所需要的大部分工作就已完成了,而且還是根據標準極好的完成的。

          挑選平臺-中間層的選擇

            對于中間層有大量的選擇,大多數都可作為一個獨立的模塊獲得,比如協議棧,圖形開發工具,管理工具,特殊的操作系統功能如高可用性和實時性等。單獨的使用其中的任何一種都不太難,但是隨著中間層數量以及相異性的增加,不可避免的會對開發者的工作產生影響,也會由于增加了棧的復雜度而延遲整合、測試、調試的進度。

            雖然Java最初的設計是為了滿足桌面和服務器市場,隨后它卻發現了在嵌入式項目中作為應用環境有更廣泛的認同度。Java技術的開發者早就整合了一些標準的功能,包括通訊、安全、模塊管理。這種基于面向對象的Java程序的設計,使這些完全不同的中間服務能夠有效的合作,同時可以很好的管理。其余的中間環境用同樣的方式提供底層的執行,但是目前如果沒有主板的支持,我們無法享受到Java技術帶來的好處。

            最后,可以擴展Linux以提供了開發者所必需的控制,以用來保證實時程序執行和工作的正確性。有幾種方式可以達到這個目的。MontaVista公司對標準的Linux平臺進行了擴展,而不是對其進行規范。舉個例子,為了支持實時程序的執行,MontaVista Linux使用了新的APIs來控制存儲管理、線程執行表以及進程執行。

          有效的應用程序的執行

            我們應該感謝標準的Java類庫結構的建立,它使管理應用程序的大小成為了可能。實際上,研究表明超過500KB大小的應用程序采用Java編碼的話會更復雜。這是因為字節編碼比大多數硬件結構的設置都要復雜。著名的路由程序如果以類庫的方式編寫,并以字符代碼編譯,則比建立在真實的機器并規范了存儲路徑的程序要易于重復利用。

            IBM采用了唯一的方式來完成嵌入式Java技術,實際上是從一個唯一的根類來創造了J9的所有不同目標板的版本以及所有的Java的類庫。IBM的J9和Java類庫的源代碼描述了如何構建這些模塊。一個獨立的移植層被用來描述唯一的目標處理器的特征以及實時操作系統接口。可以采用不同的技術來設計獨立的功能模塊,然后用嵌入式Linux實時操作系統商所提供的工具來編譯。

            使用即時編譯技術和采用充足的高速緩存,程序能夠以接近使用本地機器語言編譯的程序的速度執行。其實真正重要的是程序運行的要足夠快。對于很多應用程序(包括用來作為產品傳感器和控制器的服務管理的深層嵌入式設備,以及有用戶界面的設備)高速的執行不是其目的。使用者對于圖形界面速度的需求遠遠低于今天嵌入式處理器上Java編譯器的編譯速度。

          Java 開發工具

            很多的開發者和工程師發現,對于Java應用程序的開發者來說一個完整的工具包能夠提供非常大的幫助。這些開發人員中很多都是從企業項目的開發轉移到嵌入式項目的開發中來的,其中的很多都是從現在的在線服務擴展產生的。這些開發人員希望找到有效的開發工具。他們原來普遍使用集成開發環境,完善的調式工具,有幫助功能的Java語言幫助工具,以及語言分析成型工具。大部份還有集成版本控制以及發行管理功能。
          很多開發Linux下Java應用程序的程序員也希望使用Linux作為開發平臺,以便于創造一個統一的有效的開發過程,避免從Windows開發環境到Linux環境的轉換。IBM公司和MontaVista公司提供了一個基于Red Hat操作系統的名為\"VisualAge Micro Edition\"的Java集成開發環境及相應的工具。它為工程師和開發人員提供了一個完全的嵌入式交叉開發環境。

             通常,在個人的電腦上開發程序,然后通過遠程調試的方法在一個共用的實驗室中的設備上運行是一個較為有效的開發方法。\"VisualAge Micro Edition\"提供了遠程調試和程序分析工具,以及在開發主機和目標機同時使用相同的文件的技術。基于共享技術的NFS和LAN使得Java程序能夠即刻直接裝載到遠程設備上。
          一旦虛擬機上的代碼發生了改變,程序的變化能夠立刻并且毫無改變的反映到開發主機的調式界面上來。這種緊密的聯系使嵌入式開發者大大增加了效率。既然Java技術是基于虛擬機的技術,代碼的變換都可以用到相連的嵌入式設備上。這就為嵌入式項目的設計者提供了更多的伸縮性和便利性。特別的,這就使得在這些使用了OSGi管理技術上進行功能擴展和改變特性成為了可能。

          Java技術和Linux操作系統的結合


             一個完全的嵌入式實時操作系統必須是以嵌入式Linux或Java平臺為核心。嵌入式設備受到了操作系統、驅動程序和其它的功能模塊的限制和約束。使用一個與嵌入式目標平臺相統一的Linux版本是非常重要的,并不是所有的Linux都能用。

            嵌入式設備資源如RAM、ROM、Flash相對缺乏,需要特別的注意對其管理。同時處理器的性能也相對有缺少(如浮點加速器),這就需要對不同的設備提供有針對性的不同的執行程序。

            既然嵌入式Linux必須適應目標設備的特定的環境,快速有效的重組建立Linux操作系統的鏡像就是非常重要的。這樣一旦虛擬機及Java應用程序需要,就能夠讓開發人員增加、移除、修改Linux特性。在嵌入式開發中,設備和應用程序的每一方面都必須被考慮到,以便在大小、速度、資源中進行權衡。

            嵌入式平臺完全不像標準的個人計算機或是工作站。尤其是必須要做一些工作來使嵌入式目標板上的設備運行。交互端口、Flash存儲、播放設備和聲音界面的協同使用需要設定才能完成。我們要感謝在傳統的嵌入式操作系統中廣泛的開發經驗也可以用到嵌入式Linux開發中,一些基于嵌入式的標準也用到這些設備中。這些標準包括以下:

          低成本設備管理
            這種嵌入式Linux操作系統和Java技術的統一展開了一個新的世界,在液晶屏和觸摸屏上的圖性用戶界面能夠更有效的構建。這些設備是低功耗、緊湊的、通常是彩色的,這對于消費者和產品生產者來說都是非常有吸引力的。很多底層的設計能使得用戶界面使用到手持設備或機頂盒中,這樣就可以控制和顯示大量嵌入式設備如車載、通訊設備的底層嵌入式操作系統。

            圖形用戶界面同時被使用到粗糙的位圖界面和窗口界面中。基于Linux的服務器和工作站配置\"x-Window\"用戶界面以及一種可選的窗口管理器.與之不同,嵌入式Linux提供一種更有效的直接的方式。舉例來說,MontaVista的Linux操作系統就配置了一個開放源代碼的\"MicroWindows\"圖形界面包,它可以被移植運行到很多處理器平臺。它運行在Linux堆棧的頂部,提供了一個接近硬件設備的底層接口。它是為在嵌入式處理器中獲得高性能而特別設計的,能夠用來創建一個高響應速度的界面。

            MontaVista的MicroWindows采用了IBM的J9和它的Java類庫。這樣,一些嵌入式目標設備能夠獲得統一的圖形界面的支持。IBM提供了兩個基本的圖形類庫:簡單圖形工具(\"SWT\")和\"MicroView\"。AWT是為了個人Java平臺特別設計的,它運行在SWT圖形層之上,作為一些瀏覽器及相連的XML翻譯工具。SWT能夠用復雜的窗口控制創建用戶界面層。簡化的MicroView結構用來創建在低性能的嵌入式設備上較為粗糙的用戶界面。


          通訊接口
            幾乎每一個開發平臺和嵌入式處理器都包括了通訊接口。在Linux移植中,如果主板上有RS-232串口和以太網口,那么最基本的任務是寫這兩種設備的驅動。
           
            通訊是同時建立在TCP/IP協議和簡單串口之上的,其中TCP/IP協議棧是由Linux提供。TCP/IP協議棧提供了連接互聯網的權限,同時也提供了程序與程序之間基于對話通訊的socket界面。
           
            Java類庫的衍生庫能夠直接操縱通過特殊通訊總線和設備相連的串行設備。這些設備中就包括符
          合\"CAN\",\"MOST\",或IEEE J-1850標準的自控總線設備。
           
            在開發中,一些設備可以直接通過串行連接直接被訪問到。包括電話、車載收音機以及GPS單元(衛星定位系統)。這些設備能夠通過在串行連接上傳輸的專門協議被控制。但是在產品中,這些設備實際上被連接到自動通訊總線上。所以,為了控制這些設備,需要一個承接層。IBM設計了一個提供硬件模擬的軟件包,它能夠選擇傳輸技術,這樣在開發平臺上的程序可以直接被移植到最終的產品中。
          多變性

            使用Java技術和嵌入式Linux操作系統的結合現在應用到大量的嵌入式目標板上。開發者可以根據項目的需求配置和添加虛擬機以及Java類庫的成分,就像Linux的裁減一樣。設備驅動可以根據需要選擇,同時也可以保留應用程序對于很多相關設備開發和配置的權限。這種方法可以通過用戶界面以對大量設備程序重新使用其代碼。Linux操作系統和Java可以根據硬件設備從最小的到最大的進行升級。

          技術支持

            一個項目的大部分的花費是用在開發完成、產品上市之后。這種支持的花費與產品的用戶在很多方面相關。
          當考慮到嵌入式Java代碼,開發者與Linux和Java供應商的技術支持的聯系是關鍵。舉一個典型的例子,Java本身的開發工程師在做最初的虛擬機端口和用于嵌入式Linux目標平臺的Java庫時,他們是和Linux的供應商一起工作的。Linux和Java供應商的共同發展的關系是最需要被考慮的。特別是在Linux開放源代碼的環境下,能夠控制Java庫的源代碼也同樣是非常重要的,這樣就可以根據一個項目的具體情況進行不同的配置。


          結論

            嵌入式Linux操作系統和Java的結合為工程師和開發者對于不同的項目進行配置提供了新的選擇。我們要感謝專業的Linux技術支持公司的出現,他們解決了嵌入式開發者遇到的很多問題。大量的連接設備的平臺能夠支持Java應用程序的執行。

            最初,考慮得最多的也許是可以獲得源代碼以及沒有傳統的版權費。因為傳統的實時操作系統的商業模式是建立在訂購技術支持和服務的基礎之上的,這樣嵌入式平臺相對來說就較為便宜。

            在Linux平臺上進行工具的改進,主要考慮的是在嵌入式設備中,工作是在資源緊缺的環境下進行的。隨著IBM的\"VisualAge Micro Edition\"的出現,Java應用程序的開發人員能夠獲得豐富的交互開發工具的完全支持。

            由于以前很長一段時間內Linux都運行在服務器上,這就使得Linux的內核以及相關的功能在魯棒性上都得到提高。嵌入式Linux也同樣得到了這種性能的提升。今天,Linux被證明是一種非常健壯的環境,同時它也隨著時間和經驗的增加不斷的得到提高。

            今天,對嵌入式Linux所做的工作主要是提供配置性更強的、更小的系統成分,這樣就可以加速系統的初始化速度,同時提升資源的利用。當與Java強大的可變的環境相配合的時候,項目的管理者和開發者可以利用這種結合使他們成功的設計和開發下一代應用程序,而且是具有高可信賴性和高可利用性的程序。
          posted on 2006-10-02 08:14 圣域飛俠 閱讀(1017) 評論(0)  編輯  收藏 所屬分類: 轉載
          主站蜘蛛池模板: 丘北县| 天峨县| 年辖:市辖区| 莲花县| 阳东县| 南充市| 临夏市| 改则县| 五峰| 蓬安县| 武城县| 仪征市| 方正县| 米脂县| 会泽县| 肇源县| 阿尔山市| 昭通市| 虹口区| 瓮安县| 乌兰浩特市| 宝兴县| 武安市| 新巴尔虎左旗| 台南县| 女性| 巴林左旗| 个旧市| 荥经县| 沐川县| 慈利县| 云阳县| 偃师市| 德兴市| 崇仁县| 仪征市| 若羌县| 宜州市| 忻州市| 曲周县| 库车县|