Ongoing work at INRIA Rennes concerns embedded system software, and addresses the problems presented in providing an easy and safe framework for estimating software‘s resource consumption, which is a difficult task when done manually by a benchmarking approach. Further, by enabling dynamic download of Java applications, a discontinuity in the embedded application development life cycle is introduced. This is a new and significant contribution towards opening up the use of embedded systems.
正在法國INRIA雷恩研究所(Institut national de recherche en informatique et en automatique)開展的工作涉及到嵌入式系統(tǒng)軟件,并著手解決在為評估軟件資源耗用量提供一個簡易并且安全的架構(gòu)時所出現(xiàn)的問題。該評估工作如果通過基準(zhǔn)方法靠人工完成,將是一件困難的任務(wù)。此外,通過實現(xiàn)Java應(yīng)用程序的動態(tài)下載,本文介紹了一種在嵌入式應(yīng)用程序開發(fā)周期中的非連續(xù)方法。對于嵌入式系統(tǒng)的應(yīng)用而而言,這是一個嶄新、具有深遠(yuǎn)意義的貢獻(xiàn)。
傳統(tǒng)上說,嵌入式軟件的開發(fā)必須考慮源自于軟件本身或者嵌入式體系結(jié)果的一些約束條件。航空電子或機(jī)器人嵌入式軟件包含有需要由后臺操作系統(tǒng)支持的固有的、實時約束條件。至于嵌入式體系,資源受限和由客戶自主定義的資源問題(如:帶有多個時鐘的共享內(nèi)存式多處理器、只有若干個內(nèi)存模型的小容量問題、有限的蓄電池容量)使得搭建一個嵌入式操作系統(tǒng)更加復(fù)雜。
為了使嵌入式系統(tǒng)開發(fā)變得更加容易,我們要解決兩個不同的、并未出現(xiàn)在現(xiàn)行嵌入式系統(tǒng)中的挑戰(zhàn)。我們首先關(guān)注的是嵌入式軟件(CPU、能量或內(nèi)存)的資源耗用量評估。我們的第二個挑戰(zhàn)是要在小型嵌入式設(shè)備(如移動電話和個人數(shù)字助理(PDA)上實現(xiàn)Java的應(yīng)用。這將支持應(yīng)用程序的動態(tài)下載,并且會極大地改變嵌入式應(yīng)用程序開發(fā)生命周期。
預(yù)測嵌入式軟件的資源耗用量:靜態(tài)最差情況執(zhí)行時間分析
為了檢驗系統(tǒng)是否能夠?qū)崿F(xiàn)它的實時和資源約束,預(yù)測嵌入式軟件需求的資源量是最重要的。在硬實時嵌入式系統(tǒng)架構(gòu)中,尤其重要的是去預(yù)測任務(wù)的最差情況執(zhí)行時間(WCET,下略),以便證明任務(wù)能夠在限時內(nèi)完成。
我們正在開展的研究涉及到自動獲得某一特定硬件上應(yīng)用程序執(zhí)行時間的上界。應(yīng)用程序源代碼的靜態(tài)分析被應(yīng)用于驗證靜態(tài)最差情況執(zhí)行的情景;靜態(tài)分析方法已經(jīng)成為執(zhí)行檢測的首選,這是因為這些方法的后者需要對某一軟件上的所有可能輸入進(jìn)行探測,進(jìn)而檢測它的最長執(zhí)行路徑。處理器的硬件模型被應(yīng)用去獲得WCET控制序列。對硬件模型的應(yīng)用(而不是對實際硬件的應(yīng)用)使得靜態(tài)WCET分析方法在早期就被應(yīng)用于應(yīng)用程序開發(fā)生命周期中。另處,為了實現(xiàn)對截止期的核查,靜態(tài)WCET分析方法可以幫助選擇或者計算應(yīng)用于實時嵌入式系統(tǒng)的硬件,并且可以服務(wù)于不同應(yīng)用程序的執(zhí)行策略對比中。我們在靜態(tài)WCET分析方法研究上的一個成果是開放源碼分析器Heptane(請看圖一),其目的在于在按次序排列執(zhí)行的、帶有高速緩沖存儲器和管道執(zhí)行的處理器上獲得WCET。Heptane的模塊性允許其接入到不同的目標(biāo)處理器和程序設(shè)計語言中。
[ALIGN=CENTER]
圖一:Heptane靜態(tài)WCET分析工具[/ALIGN]
我們認(rèn)為,對嵌入式軟件的資源耗用量的早期的一個評估使得嵌入式系統(tǒng)約束(有限的時間,內(nèi)存和能量)的匹配性得以在應(yīng)用程序開發(fā)生命周期中驗證。往后,我們正在展開的對靜態(tài)時間評估的工作將會延伸到其他嵌入式系統(tǒng)中不足的資源上,如能源耗用量。對于硬實時嵌入式系統(tǒng)來說,這是一個具有挑戰(zhàn)性的斬新難題。
將Java引入到小型內(nèi)嵌內(nèi)設(shè)備中
Java有著自身一些重要優(yōu)勢,可以為用戶擴(kuò)展無線個人數(shù)字助理(WPDA,下略)的應(yīng)用。第一,Java是便攜式的,因此它是獨立于硬件平臺的。在普遍深入的嵌入式市場中,這對于降低應(yīng)用程序開發(fā)成本十分很重要。由于Java可以在任何地方運行,所以應(yīng)用程序開發(fā)可以在一臺桌上型電腦中完成,而不需要目標(biāo)硬件平臺的支持。這是嵌入式體系應(yīng)用程序開發(fā)生命周期上的一個強(qiáng)間斷。第二,Java支持動態(tài)應(yīng)用程序下載并且可以很好地支持WPDA的應(yīng)用擴(kuò)展(請看圖二)。
[ALIGN=CENTER]
圖二:將Java引入到小型內(nèi)嵌內(nèi)設(shè)備中[/ALIGN]
基于這些理由,Java為這些嵌入式環(huán)境帶來許多好處。然而,即使Java展示出許多潛在優(yōu)勢,但是它的一個主要缺點是它對為運行程序的資源有苛刻的需求。這些資源包括記憶容量、執(zhí)行時間和能量耗用量,其都是為嵌入式系統(tǒng)折衷設(shè)想檢測的一些典型資源。因此,很明顯地,Java的成功是以能夠有效利用資源的Java執(zhí)行環(huán)境的可用性為條件的。
在過去的四年里,我們開展的研究是與Texas Instruments共同完成的,目的在于為允許在執(zhí)行時間、能量和內(nèi)存耗用量之間獲得一個折衷的WPDA體系提供一個Java執(zhí)行環(huán)境。在研究過程中,我們首先測定對能量耗用量影響極深的Java操作碼。然后,我們設(shè)計一個新方法去構(gòu)建一個基于模塊分解的Java執(zhí)行環(huán)境。通過應(yīng)用模塊性,我們便可以為一個特定的處理器特殊化Java虛擬機(jī)(JVM,下略)上的一些部分(例如去開發(fā)數(shù)字信號處理(DSP)器的低功耗特性,使能量消耗最小化)。最后,我們從最開始執(zhí)行我們的JVM,并且使其生效在一個基于Omap Texas Instruments平臺(一種共享內(nèi)存異類多處理器)的WPDA體系上。我們現(xiàn)行的工作集中于研究怎樣在有力的硬件和軟件協(xié)作上提供一個高性能的Java嵌入式平臺。
如今,嵌入式系統(tǒng)對外部世界都很封閉,并且它的開發(fā)也是困難重重。許多系統(tǒng)都使用匯編語言或者C語言。由于我們對Java的研究,特別是對Java自身性能的研究,對于構(gòu)建嵌入式系統(tǒng)的設(shè)計人員來說,Java會是一個很有價值的工具。對于用戶來說,這使得嵌入式系統(tǒng)更公開化。這些特性也使得配置和設(shè)計得到廣泛應(yīng)用的應(yīng)用程序變得更加容易。對于設(shè)計者來說,Java實現(xiàn)了一種強(qiáng)大的打字型目標(biāo)語言的應(yīng)用,而不是基本語言(如C語言或匯編語言)的應(yīng)用。