999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RTSJ的嵌入式系統API的研究與應用

2011-06-22 08:18:42滕海坤陸二慶
單片機與嵌入式系統應用 2011年9期
關鍵詞:嵌入式電梯環境

滕海坤,陸二慶

(1.桂林理工大學信息科學與工程學院,桂林541004;2.黑河學院)

滕海坤(碩士研究生),研究方向為嵌入式系統;陸二慶(高級工程師),研究方向為嵌入式系統、計算機網絡技術。

引 言

隨著計算機技術、網絡通信技術和微電子技術的迅猛發展和廣泛應用,實時嵌入式系統(RTES)已經深入到科學研究和社會生活的各個領域。傳統的觀念認為,實時嵌入式系統一般采用過時或者晦澀的語言,如C/C++、匯編語言等。這些開發手段編程過于復雜、開發效率低、容易出錯和安全性差等缺點已經成為嵌入式系統發展的阻礙。新一代的實時嵌入式系統期盼增加更多的新功能,這大大提高了嵌入式系統的復雜度,因此需要新的開發語言和手段促進實時嵌入式系統的開發應用。幸運的是,Java技術的特點彌補了上述缺點,并且越來越受嵌入式編程人員的青睞。Java實時規范[1-2]RTSJ(也稱為Java規范申請JSR-001)的出現就是最好的例證。實時Java為實時程序員提供了一種為生產率而設計的現代主流語言。

Java實時規范(RTSJ)是實時Java專家組(RTJEG)制定的Java在實時性方面的擴展規范,彌補了Java語言在實時應用程序中的缺陷。它提供了創建、驗證、分析、執行和管理實時Java線程的應用程序接口(API)。目前,國內外已經存在許多支持RTSJ的Java平臺,并且已有相應成熟的商業產品。如TimeSys公司推出了第一個符合RTSJ的工業版嵌入式Java平臺JTime[3],以及基于RTSJ擴展GCJ(GNU Compiler for Java)的jRate[4]運行時系統。jRate與其他實時Java平臺有些不同,因為它將Java應用程序源代碼提前編譯(AOT)生成本地代碼,這就意味著不需要Java虛擬機,節省了很多不必要的開銷。然而,這些實現并不是針對實時嵌入式領域的,因為在嵌入式系統中開銷足跡(footprint)要求與實時要求同樣重要。本文的宗旨是利用可配置的嵌入式Java處理器FemtoJava[5]執行Java字節碼,并且最優化地執行應用程序所需的有效操作碼。定制的Java應用程序可以通過Sashimi開發環境編譯,以VHDL形式實現處理器核心。Sashimi可以自動改裝FemtoJava處理器的體系結構。FemtoJava是根據特定應用并基于FPGA技術設計的精簡指令的哈佛結構處理器,它含有多個多路復用器和寄存器,以及一個唯一的ALU,較適合用于頻繁變化的應用領域。

然而,Sashimi環境缺少一個表示并發的和實時約束條件的編程模型。本文的主要目標是通過提供基于RTSJ的支持并發任務規范的API彌補Sashimi環境的不足,這些API支持并發任務規范和時間限制規范。為了克服Sashimi環境這一限制,本文對 RTSJ規范進行了一些修改。在Sashimi環境上使用提供的API,程序員能夠開發并發的實時應用程序,并且將它們部署到FemtoJava處理器,實現基于RTSJ的API在實際嵌入式系統中的應用。

1 Sashimi環境

Sashimi開發環境[5]是一個免費有效的嵌入式系統JVM 優化工具,開發人員可以用Java模擬、仿真和直接實現嵌入式系統。Sashimi環境可以通過擴展API支持并發任務,實現RTSJ標準。根據Sashimi環境的定義,設計人員可以直接使用Java語言開發他們的應用程序。為了滿足Sashimi環境的約束條件,必須遵循一些編程限制。例如,程序員只可以使用Sashimi環境提供的API而不是標準的Java應用程序接口。此外,設計者們只可以使用靜態方法和屬性,因為目前Sashimi環境不支持對象的動態分配,也不支持類層次結構的繼承和方法的多態性以及面向對象開發的基本概念。在Sashimi環境中,Java源代碼使用標準Java編譯器編譯生成Java字節碼。這些生成類可以在主機平臺上使用仿真Sashimi環境的API類庫進行測試。接下來的工作是,基于生成的Java字節碼,綜合應用程序和FemtoJava處理器生成一個定制的Femto-Java處理器控制單元。該控制單元僅支持應用程序使用的操作碼。控制單元的大小與應用程序軟件利用的不同操作碼數量成正比,使其適合嵌入式系統應用。

另外,需要擴展Sashimi環境的API允許并發編程,增加一個動態任務調度的操作系統層,從而使Sashimi環境支持不同的調度算法。在開銷足跡、能量消耗和實時性能方面,這些算法的影響評估在參考文獻[6]中有詳細描述。Sashimi環境的缺點是缺少高級的實時架構,導致設計師們只能使用低級系統調用生成并發進程,與調度器相互作用。此外,Sashimi環境沒有任何機制清楚地表達任務時間限制。這些問題在下一小節通過提供的API進行處理。

2 基于RTSJ的APⅠ設計

正如前面所述,開發 API的主要目的是為基于FemtoJava微控制器的可配置的嵌入式系統的硬件/軟件結構提供高級的實時編程架構支持。這些API是基于Java實時規范[1]制定的。它允許使用調度對象,該對象是實現Schedulable(調度)接口類的實例,和 RealtimeThread(實時線程)類一樣。同時,它也提供了一組類的存儲參數,這些參數表示一個或更多調度對象的特殊資源要求。例如,RaleaseParameters類(釋放參數類,是AperiodicParameters和PeriodicParameters的父類)包含了一些滿足實時需求規范的有用參數。此外,基于RTSJ的API還支持以下概念:時間值(絕對時間和相對時間)、定時器、周期性/零星、非周期性任務和調度策略。術語“任務”表示系統上下文的調度成員,也可以稱為調度對象。以下是主要類的簡單描述。

RealtimeThread:實時線程類擴展了默認的 java.lang.thread類。在實時嵌入式系統中RealtimeThread類表示一個實時任務,該任務是周期性的還是非周期性的,取決于給出的釋放參數對象。如果任務使用PeriodicParameters類型的釋放參數,那么任務是周期性的;如果任務使用的是AperiodicParameters或者SporadicParameters類的實例,那么任務是零星的、非周期性的。

ReleaseParameters:釋放參數類是實時任務的所有釋放參數的基類。ReleaseParameters類的實例包括發布的成本、啟動時間、以及錯過最后期限的處理器或者成本超支。它的子類PeriodicParameters和AperiodicParameters分別表示周期性和非周期性任務的釋放參數。PeriodicParameters必須包含一個周期值和開始/結束的時間值。作為一個非周期性任務的類型,SporadicParameters類繼承了AperiodicParameters類,偶發性任務的運行周期等于它的兩次到達間隔的最小值。

SchedulingParameters:調度參數類是調度器對象使用的所有調度參數的基類。PriorityParamters類表示任務的優先級,它的實例分配給Schedulable對象,它們的執行資格是由優先級決定的。設計者們只需創建一個新的實例或共享現有的實例,提供一個整型值給構造函數作為優先級,并且分配給現有的Schedulable。

Scheduler:調度器本身是一個抽象類。它的子類“PriorityScheduler”、“RateM onotonicScheduler”和“EDFScheduler”分別表示固定優先、速率單調(Rate Monotonic)和最早期限優先調度算法。

HighResolutionTime:與 java.util.Date類相比,RTSJ對時間概念提供有力的支持。高解析度時間類是一個抽象類,不能實例化。不過它為所有其他高解析度時間類存儲ms和 ns字段,并為它的子類 AbsoluteTime(絕對時間)、RelativeTime(相對時間)提供方法。絕對時間是以一個偏移量給出的,參考值是格林威治時間;相對時間總是一段持續的期限,它可以取整數、負數或零。另外,RationalTime(有理時間)類通過增加頻率擴展了 RelativeTime類,它表達的是每段時間間隔內某事物發生的頻率。

Clock:RTSJ支持多個時鐘概念,基于RTSJ的Clock API定義了實時時鐘表達全球性的時鐘參考。該時鐘類返回一個絕對時間對象表示系統的當前日期和時間。

Timer:定時器類是一個表示系統定時器的抽象類。它的子類OneShotTimer和PerodicTimer分別表示一次性定時器和周期性定時器。

本文一些API類的實現方式與RTSJ推薦的方式比較,有些微的差異,這是由于FemtoJava處理器結構的限制。在RealtimeThread類中就存在著這種差異。實時線程類中有兩個抽象方法必須在它的子類中實現——mainTask()和exceptionTask()。它們分別表示任務主體(相當于普通Java線程的 run()方法)和錯過最后期限的異常處理代碼。后者代替了一個AsyncEventHandler(異步事件處理器)對象,在RTSJ中異步事件處理程序是設計用來處理實時應用程序可能需要處理的不同的系統和編程定義的事件,并且異步事件處理器對象應該傳遞給釋放參數對象。如果任務錯過了最后期限,則會拋出異常并且執行exceptionTask()函數。異常處理代碼執行以后,任務執行流程可能會跳轉到run()方法或者終止,這取決于實時任務的特征。如果任務是周期的,那么 run()方法應該重新啟動。這種差異建議使用在任務對(taskpairs)概念的調度算法。

在第1小節中提到Sashimi環境的傳統版本不支持對象創建。因此,為了給在FemtoJava平臺上制定的API提供全面支持,需要擴展一些新屬性到Sashimi環境。首先,需要擴展Sashimi環境支持對象的綜合。根據相關修改,應用程序對象在合成時間進行靜態分配。換言之,在系統中所有對象都定義了一個優先級,并且為了方便將對象存儲到RAM中允許檢測整個內存。雖然這種做法可能涉及到較高的內存用法,但是在實時系統開發中這種做法是非常適當的,因為它避免了垃圾收集器(GC)的使用。垃圾收集器算法沒有時間限制,不可中斷,使得Java運行程序相當缺乏確定性。在實時嵌入式系統中這種不確定性是不能容忍的。

FemtoJava微處理器引入了4個新的操作碼以支持提供的 API:getfiel、putfield、invokevirtual和 invokespecial。前面兩個操作碼與對象區域的訪問相關,它們的功能分別是獲取和設定值。另外兩個操作碼與方法調用相關,invokevirtual操作碼用來調用公共的或者受保護的方法,invokespecial操作碼用來調用構造函數和私有方法。FemtoJava微處理器的另一個擴展是增加一個實時時鐘,用來提供嵌入式系統的時間概念。基于RTSJ的API成員和調度層都可以使用這個時鐘。

3 APⅠ在實際嵌入式系統中的應用

本文選用電梯控制系統[7]作為驗證Sashimi環境擴展的案例。該系統是一種多臺電梯優化調度的系統,包含了并發任務和硬實時限制條件。由于電梯控制系統任務的多樣性,傳統的開發手段將很難解決在線調度及資源配置的組合優化問題。本文使用實時Java多線程技術改變了這些現狀。圖1表示電梯控制系統的類協作圖,從圖中可以觀察出,Timer類實現了Sashimi環境的任務時間限制條件。其通過getRealtimeClock()方法調用實時時鐘對象,獲得單一實時時鐘的引用。

圖1 電梯控制系統的類協作圖

雖然電梯控制系統中包含了很多類,但是本文將主要討論LiftInitializer和LiftDoor類,因為筆者認為這兩個類在API的使用中具有足夠的代表性。LiftInitializer類是電梯控制系統實現的主要類。這個類的功能是負責對象分配、初始化和啟動(實時任務應用)。從電梯控制系統代碼中能夠看到,只有靜態對象被分配。initSystem()方法表示應用程序執行流程的起始點,并且提供對象初始化和實時任務啟動的功能。實時任務啟動可以通過調用start()方法實現。代碼的最后調用了 sleep()方法,這就意味著這個初始化類不再使用并被鎖定。這種做法僅在系統初始化方法中使用。電梯控制系統的LiftInitializer類代碼如下:

LiftDoor類在系統中關聯模式表示一個并發實時任務,與系統時鐘有著密切的關系。本文使用一個自定義異步事件和一個一次性定時器分別實現電梯門打開和關閉的任務。在電梯門應用中,FloorSensor類是一個事件處理程序,等待聽到請求的樓層已經到達。當它到達時,它停止電梯并打開門。這個舉動觸發了關閉定時器(One-ShotTimer類),其處理類是DoorTimer。當它觸發時,在等待10 s后,closeDoors方法被調用,電梯按設定將開始再次移動。作為一次性定時器,門定時器不會再次觸發,除非用戶再次調用它的enable和start方法。電梯門類部分代碼:

本文最后的工作是整合API、Sashimi環境和Femto-Java處理器生成完整的嵌入式系統。Sashimi環境把Java編譯器生成的 Java類文件作為輸入,生成FemtoJava處理器的硬件單元(以VHDL文件形式)和嵌入式系統的應用軟件。由優化的Sashimi環境生成的FemtoJava處理器是非常重要的,因為它只支持嵌入式系統軟件使用的Java操作碼。另一個值得注意的是:一旦應用程序對象在整合時間內分配,就沒有必要使用垃圾收集器。雖然這會導致較高的內存消耗,但是它提供了實時嵌入式系統的確定性要求。

結 語

本文的目標是使用基于RTSJ的API,優化實時嵌入式系統開發。該API是以專門執行Java字節碼的FemtoJava處理器為目標平臺。這些API為程序員提供了必要的工具來解決虛擬機和應用程序中的易變性,并且程序員可以在實時應用程序中使用高級機制表示并發和時間性的約束條件。為了保證API盡可能地接近RTSJ規范,對RTSJ規范進行了較小的修改,進一步提高了嵌入式實時性的服務質量。同時,實時Java所具備的優勢將極大地改變嵌入式控制軟件的設計難度。相信在未來的幾年里,實時Java技術將會給嵌入式控制領域帶來巨大的影響。

[1]Greg Bollella,James Gosling.The Real-Time Specification for Java[OL].[2011-04].http://www.rtj.org/rtsj-V1.0.pdf.

[2]Bruno Eric J,Bollella Greg.Java實時編程[M].田思源,譯.北京:機械工業出版社,2010.

[4]Corsaro Angelo,Schmidt Douglas C.The Design and Performance of the jRate Real-time Java Implementation[C]//the 4th International Symposium on Distributed Objects and Applications.Irvine,CA,October-November,2002.

[5]S A Ito,L Carro,R P Jacobi.M aking Java Work for Microcontroller Applications[J].IEEE Design&Test of Computers,2001,18(5).

[6]L B Becker,M A Wehrmeister,L Carro,et al.Evaluating High-level Models for Real-Time Embedded Systems Design[C]//29thWorkshop on Real-Time Programming.Istanbul,2004.

[7]曹建忠,羅飛,等.新型電梯群控系統的建模和控制策略研究[J].微計算機信息,2006,22(13).

猜你喜歡
嵌入式電梯環境
長期鍛煉創造體內抑癌環境
一種用于自主學習的虛擬仿真環境
孕期遠離容易致畸的環境
環境
搭建基于Qt的嵌入式開發平臺
被困電梯以后
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
電梯不吃人
乘電梯
小說月刊(2015年4期)2015-04-18 13:55:18
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 成人亚洲国产| 中国精品久久| 看av免费毛片手机播放| 国产成人艳妇AA视频在线| 午夜精品久久久久久久2023| 亚洲天堂区| 亚洲精品无码久久毛片波多野吉| 福利在线一区| 日韩在线永久免费播放| 亚洲热线99精品视频| 欧美全免费aaaaaa特黄在线| 亚洲第一黄片大全| 91精品国产一区自在线拍| 精品国产香蕉在线播出| 国产精品久久精品| 9丨情侣偷在线精品国产| 波多野结衣一区二区三区四区视频 | 91美女在线| 欧美a级完整在线观看| 97久久免费视频| 九色91在线视频| 亚洲欧美日韩中文字幕在线一区| 五月婷婷精品| 精品国产Av电影无码久久久| 中国一级特黄视频| 国产一级片网址| 亚洲一区二区三区麻豆| 国内毛片视频| 国产www网站| 天天做天天爱夜夜爽毛片毛片| 新SSS无码手机在线观看| 国产传媒一区二区三区四区五区| 午夜激情婷婷| 国产不卡网| 亚洲一区国色天香| 日韩久草视频| 国产女人18毛片水真多1| 国产激情无码一区二区APP | 日韩一二三区视频精品| 亚洲精品视频网| 成人欧美日韩| 99久久无色码中文字幕| 日本伊人色综合网| 久久国语对白| 天天操精品| 中文字幕亚洲电影| 69av在线| 天堂av综合网| 一本大道视频精品人妻 | 99热这里只有免费国产精品 | 欧美日韩精品一区二区在线线| 91美女在线| 久久超级碰| 国产xxxxx免费视频| 中国一级特黄视频| 中文字幕有乳无码| 欧美日本中文| 国产日韩欧美视频| 中文字幕无码中文字幕有码在线 | 亚洲欧美天堂网| 国产成人夜色91| 精品亚洲麻豆1区2区3区| 精品综合久久久久久97超人| 五月激情综合网| 欧美日韩一区二区三区在线视频| 国产在线精品网址你懂的| 午夜高清国产拍精品| 丁香婷婷激情综合激情| 成人亚洲视频| 亚洲成人在线免费观看| 亚洲无线视频| 青草视频在线观看国产| 亚洲AⅤ综合在线欧美一区| 在线观看视频99| 国产素人在线| 欧美天堂久久| 九九久久精品国产av片囯产区| 亚洲中文字幕久久精品无码一区 | 精品无码国产自产野外拍在线| 免费无码在线观看| 国产又爽又黄无遮挡免费观看| 成人综合在线观看|