多現(xiàn)場總線融合的實時中間件的設(shè)計與實現(xiàn)_第1頁
多現(xiàn)場總線融合的實時中間件的設(shè)計與實現(xiàn)_第2頁
多現(xiàn)場總線融合的實時中間件的設(shè)計與實現(xiàn)_第3頁
多現(xiàn)場總線融合的實時中間件的設(shè)計與實現(xiàn)_第4頁
多現(xiàn)場總線融合的實時中間件的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、3242010,31(2 計算機工程與設(shè)計Computer Engineering and Design嵌入式系統(tǒng)工程0引言現(xiàn)場總線是連接智能現(xiàn)場設(shè)備和自動化系統(tǒng)的數(shù)字式、雙向傳輸、多分支結(jié)構(gòu)的通信網(wǎng)絡(luò)?,F(xiàn)場總線廣泛應(yīng)用于工業(yè)控制、樓宇自動化、航空航天領(lǐng)域,并且也逐步應(yīng)用于武器系統(tǒng)中。目前現(xiàn)場總線種類繁多,所采用的協(xié)議和標準差異性大,在很大程度上已經(jīng)成為阻礙現(xiàn)場設(shè)備互聯(lián)和信息化水平發(fā)展的瓶頸。近年來隨著中間件技術(shù)的發(fā)展,采用中間件技術(shù)解決現(xiàn)場總線設(shè)備間的互聯(lián)和互操作問題成為一種可行的解決方案1-2。在分布計算環(huán)境中,中間件技術(shù)發(fā)展日益成熟,已經(jīng)有如CORBA 、COM/DCOM等國際標準,然而

2、實時嵌入式軟件中間件的研究尚處于起步階段。為了使CORBA 更適合嵌入式系統(tǒng),OMG 組織對CORBA 做了裁剪,改進后的CORBA 就是Minimum CORBA 3。在2000年下半年,Minimum CORBA 正式收稿日期:2009-03-02;修訂日期:2009-05-25。 成為CORBA2.4規(guī)范的一部分,并在推出CORBA3.0規(guī)范時單獨列出4。Minimum CORBA 主要從運行安全性、動態(tài)分配、截取器、界面?zhèn)}庫、構(gòu)造策略、互操作等幾個方面對CORBA 作了裁減,裁減后的Minimum CORBA 具有互操作性、兼容性及可移植性強和體積小、節(jié)省資源等特點。簡化后的ORB 結(jié)

3、構(gòu)如圖1所示。Real-time CORBA v1.2是OMG 推出的最新版本的實時中間件規(guī)范,暫不支持動態(tài)調(diào)度策略。實時CORBA 將CORBA 的應(yīng)用范圍擴展到實時應(yīng)用領(lǐng)域,Real-time CORBA 通過實現(xiàn)端到端的可預測通信和有效資源控制,如:CPU 資源、通信資源和存儲資源控制,來滿足實時性要求5。Real-time CORBA 同樣為實時系統(tǒng)的開發(fā)提供了更加靈活、可移植和互操作的特性。本文借鑒Minimum CORBA 和Real-time CORBA 中間件的規(guī)范,給出一種新的基于實時操作系統(tǒng)RTLinuxPro 的嵌入式實時中間件的實現(xiàn)方案。趙花蕊,周改會,周兵,等:多現(xiàn)場

4、總線融合的實時中間件的設(shè)計與實現(xiàn)客戶對象實現(xiàn)2010,31(2 325構(gòu)(圖1 作了適當?shù)男薷?。圖2中有兩個主要的實時模塊,分別是實時現(xiàn)場總線插件管理模塊和實時現(xiàn)場總線適配器,它們運行在RTLinux 實時內(nèi)核空間。其中,實時現(xiàn)場總線插件管理模塊可完成實時中間件對現(xiàn)場總線設(shè)備的動態(tài)加載,它IDL 根程序ORB 接口靜態(tài)IDL 程序框架對象適配器能夠響應(yīng)現(xiàn)場總線設(shè)備的注冊請求,并創(chuàng)建和維護現(xiàn)場總線設(shè)備插件信息庫。實時現(xiàn)場總線適配器模塊可根據(jù)設(shè)備插件信息庫中的信息,初始化并打開已經(jīng)注冊的現(xiàn)場總線設(shè)備,提供一般用戶API 接口,為設(shè)備間通信做好準備。為了符合Linux 內(nèi)核虛擬文件系統(tǒng)(VFS 對設(shè)

5、備文件的定義和管理方法和Linux 內(nèi)核編程的需要,去除了Minimum CORBA 結(jié)構(gòu)中有關(guān)IDL 接口設(shè)計,它們的功能分別由現(xiàn)場總線設(shè)備數(shù)據(jù)結(jié)構(gòu)定義和現(xiàn)場設(shè)備插件信息庫來實現(xiàn)。此外該系統(tǒng)結(jié)構(gòu)將設(shè)備管理和應(yīng)用分離開來,不僅能充分利用Linux 內(nèi)核中各類現(xiàn)場總線原有的驅(qū)動程序模塊而且便于不同用戶(如:現(xiàn)場總線配置人員和應(yīng)用軟件開發(fā)人員 對該中間件的應(yīng)用。從總體上來看,多現(xiàn)場總線融合的中間件體系結(jié)構(gòu)的核心對象請求代理(ORB 作為實時內(nèi)核的一部分被嵌入到實時操作系統(tǒng)中,響應(yīng)來自實時用戶的請求;各類現(xiàn)場總線適配器對象適配器(OA ,它位于Linux 系統(tǒng)內(nèi)核空間,作為實時任務(wù)響應(yīng)并處理對象代理

6、分發(fā)的通信任務(wù)。ORB 核圖1Minimum CORBA 中的ORB 結(jié)構(gòu)1實時現(xiàn)場總線中間件體系結(jié)構(gòu)設(shè)計項目的實現(xiàn)目標是,設(shè)計和實現(xiàn)多現(xiàn)場總線融合的中間件體系結(jié)構(gòu)方案,滿足Minimum CORBA 和Real-time CORBA 規(guī)范的要求,可以部署在嵌入式實時系統(tǒng)環(huán)境中,提供用于現(xiàn)場總線設(shè)備操作的統(tǒng)一API 接口。另外,系統(tǒng)提供獨立的管理配置接口,使得管理人員能夠輕松完成對各個現(xiàn)場總線設(shè)備的部署和配置。1.1實時操作系統(tǒng)平臺的選擇實時操作系統(tǒng)是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分,對系統(tǒng)的可靠性和實時性的提高起著舉足輕重的作用。RTLinuxPro 是美國FSMLabs 公司開發(fā)的源代碼開放的

7、硬實時操作系統(tǒng)。如圖2所示,RTLinux 把Linux 內(nèi)核看作一個RT-Task (實時任務(wù) 來調(diào)度,這種突破性的設(shè)計方案保證了實時任務(wù)的硬實時性能,并且可以最大限度地利用Linux 系統(tǒng)平臺上眾多的資源。1設(shè)備插件注冊R t -f i f o2設(shè)備插件注冊 R t -f i f oN 設(shè)備插件注冊R t -f i f o2現(xiàn)場總線中間件設(shè)備管理模塊的實現(xiàn)RTLinuxPro 是開放C 源碼的硬實時操作系統(tǒng),并提供了可二次開發(fā)的API 接口。嵌入式實時現(xiàn)場總線中間件的軟件部分設(shè)計也采用C 語言,但是也汲取了面向?qū)ο缶幊痰乃枷?,使用一個數(shù)據(jù)結(jié)構(gòu)來代表通用設(shè)備對象,這些結(jié)構(gòu)體包含數(shù)據(jù)的同時也包

8、含操作這些數(shù)據(jù)的函數(shù)指針,其中操作函數(shù)由現(xiàn)場總線設(shè)備插件信息庫具體文件系統(tǒng)實現(xiàn)。2.1現(xiàn)場總線設(shè)備數(shù)據(jù)結(jié)構(gòu)定義沿襲操作系統(tǒng)內(nèi)核中對象數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法來設(shè)計現(xiàn)場總線設(shè)備的數(shù)據(jù)結(jié)構(gòu),這個結(jié)構(gòu)不僅包含了對對象的數(shù)據(jù)項描述(如設(shè)備ID 、設(shè)備名等 還包含了對這個設(shè)備的操作文件指針。實時驅(qū)動程序模塊正是根據(jù)這個數(shù)據(jù)結(jié)構(gòu)中的設(shè)備ID 或者設(shè)備名找到對應(yīng)的現(xiàn)場總線設(shè)備,并通過文件指針完成一系列的操作。typedef struct_device_liststruct list_headlist; int index; char name 16; mm_segment_told_fs;struct file

9、*filp;bus_dev;struct list_headstruct list_head*next;struct list_head*prev;list_head結(jié)構(gòu)體是Linux 內(nèi)核使用的一種獨一無二的環(huán)形鏈表結(jié)構(gòu),它還提供了一組函數(shù)來操作這種鏈表,把它作為一數(shù)據(jù)項嵌入到設(shè)備鏈表節(jié)點中,以便實現(xiàn)對設(shè)備鏈表的操實時現(xiàn)場總線插件管理實時現(xiàn)場總線適配器(ORB 核應(yīng)用程序接口RTLinuxPRO 實時內(nèi)核空間實時應(yīng)用各類現(xiàn)場總線適配器(OA Linux 內(nèi)核空間實時用戶空間非實時任務(wù)圖2實時現(xiàn)場總線中間件體系結(jié)構(gòu)1.2嵌入式實時總線中間件體系結(jié)構(gòu)考慮到實際應(yīng)用中使用什么種類現(xiàn)場總線設(shè)備的不確

10、定性和嵌入式實時系統(tǒng)資源受限的特點,該中間件系統(tǒng)結(jié)構(gòu)設(shè)計應(yīng)該方便動態(tài)的加載和卸載各類現(xiàn)場總線設(shè)備,以節(jié)省實時系統(tǒng)資源。依據(jù)RTLinux 硬實時操作系統(tǒng)體系結(jié)構(gòu)和Mini-mum CORBA 體系結(jié)構(gòu)特征,嵌入式實時總線中間件體系結(jié)構(gòu)設(shè)計如圖2所示。中間件的基本結(jié)構(gòu)圖,對Minimum CORBA 中的ORB 結(jié)作。目前所有鏈表用了這種鏈表實現(xiàn),并且所有新的內(nèi)核開發(fā)者都應(yīng)該使用這些已有的鏈表接口6。2.2基于rt-fifo 的通信協(xié)議設(shè)計如圖2所示實時設(shè)備注冊插件與實時現(xiàn)場總線管理模塊之間的通信是通過實時操作系統(tǒng)提供的rt-fifo 來完成。實時操作系統(tǒng)RTLinuxPro 提供了實時消息和實

11、時信號量接口函數(shù),運用它們可以實現(xiàn)進程間的異步通信和控制線程間通信7。RTLinuxPro 中使用函數(shù)int rtl_sigaction(int sig, const struct rtl_sigaction*act,struct rtl_sigaction*oact 處理可靠信號。信號機制包括核心如何向一個進程發(fā)送信號,進程如何接收一個信號,進程怎樣控制自己對信號的反應(yīng),核心在什么時機處理和怎樣處理進程收到的信號等等一系列對信號進行處理的方法。當注冊插件向rt-fifo 寫入或讀出數(shù)據(jù)時會產(chǎn)生相應(yīng)的存取信號,rtl_sigaction為消息處理函數(shù)可提供一個回調(diào)機制,對此信號做相應(yīng)處理。圖3

12、為設(shè)備注冊插件和設(shè)備管理模塊之間通信協(xié)議基本結(jié)構(gòu)圖,它展示了客戶(注冊插件 和服務(wù)器(管理模塊 之間進行連接建立、數(shù)據(jù)傳輸?shù)幕具^程。首先,服務(wù)器端實時插件管理模塊在初始化階段創(chuàng)建一個rt-fifo ,并初始化信號量和與消息處理函數(shù)相關(guān)的數(shù)據(jù)項;之后,啟動讀設(shè)備信息線程等待客戶端注冊插件程序向rt-fifo 中寫入請求注冊設(shè)備的信息;其次,客戶端實例化一個現(xiàn)場總線設(shè)備,向rt-fifo 中寫入設(shè)備信息,并發(fā)出設(shè)備注冊請求信號;最后,服務(wù)器的消息處理函數(shù)fifo_handler捕捉到客戶端的請求注冊信號,并做出相應(yīng)的處理讀出注冊設(shè)備的信息并創(chuàng)建設(shè)備節(jié)點. ,之后等待下一次設(shè)備注冊請求。設(shè)備注冊插

13、件Client 請接實例化設(shè)備結(jié)構(gòu)初始化求受注注冊冊寫 讀實例化設(shè)備節(jié)點創(chuàng)建設(shè)備管理模塊Server圖3異步通信協(xié)議基本結(jié)構(gòu)圖4顯示了設(shè)備組件信息庫的創(chuàng)建過程,描述了插件和設(shè)備管理模塊異步通信協(xié)議的詳細實現(xiàn)。在這個過程中設(shè)備注冊插件通過實時FIFO 向管理模塊提供設(shè)備注冊信息,管理模塊負責為每個請求注冊的設(shè)備在內(nèi)存里動態(tài)創(chuàng)建設(shè)備鏈表節(jié)點,并將該設(shè)備節(jié)點添加至設(shè)備鏈表,從而在程序運行期間維護一個已注冊設(shè)備的插件信息庫。2.3實時現(xiàn)場總線適配器的實現(xiàn)現(xiàn)場總線中間件通過實時現(xiàn)場總線適配器訪問系統(tǒng)中的現(xiàn)場總線設(shè)備。現(xiàn)場總線適配器響應(yīng)用戶請求并把請求任務(wù)分發(fā)到各個實現(xiàn)對象??偩€適配器將現(xiàn)場總線設(shè)備看作R

14、TLinuxPro 操作系統(tǒng)中的虛擬設(shè)備,并提供訪問該設(shè)備的接口8。實時應(yīng)用程序通過該接口訪問當前已注冊的各類現(xiàn)場總線設(shè)備,完成實時數(shù)據(jù)的傳輸。這樣從用戶角度來看就只有一種現(xiàn)場總線設(shè)備,它就是該中間件系統(tǒng)的對象請求代理(ORB 。訪問該實時現(xiàn)場總線適配器的應(yīng)用程序接口定義如下所示:static struct rtl_file_operationsrtl_bus_fops=.write =rtl_bus_write,.read =rtl_bus_read,.open =rtl_bus_open,.release =rtl_bus_release,;實時現(xiàn)場總線適配器首先根據(jù)設(shè)備插件信息庫中的現(xiàn)場

15、設(shè)備信息,用rtl_bus_open(依次打開設(shè)備鏈表中的現(xiàn)場總線設(shè)備,并完成對所有已加載的現(xiàn)場總線設(shè)備的初始化工作;在通信的過程中,可以通過分析傳輸?shù)臄?shù)據(jù)包中目的地信息來判斷訪問的具體現(xiàn)場總線設(shè)備是什么類型,并把數(shù)據(jù)交由對應(yīng)的底層設(shè)備驅(qū)動程序(圖2中現(xiàn)場總線OA 依據(jù)各自通信協(xié)議標準完成通信。此外,該實時現(xiàn)場總線適配器還能夠響應(yīng)系統(tǒng)管理人員對現(xiàn)場總線系統(tǒng)的配置管理,監(jiān)視系統(tǒng)配置文件的更新情況,及時關(guān)閉那些需要卸載的現(xiàn)場總線設(shè)備,釋放其占用的資源。3測試結(jié)果和分析測試硬件環(huán)境:M1553B 總線接口板卡和CAN 總線接口(有效性方面 。(下轉(zhuǎn)第334頁tween stop-the-world

16、and multithreaded concurrent generational garbage collection for Java C . Washington, DC, USA:IEEE Computer Society,2002. 456789斯威特曼.MIPS 處理器設(shè)計透視M . 趙俊良, 譯. 北京:北京航空航天大學出版社,2005.10Michael P Plezbert,Ron K Cytron.Does "just in time"="betterlate than never"? J .New York,NY ,USA:ACM,

17、1997.行速度較目前主流虛擬機還有一定差距。出現(xiàn)這種結(jié)果的一個可能原因是目前Kaffe 的JIT 引擎只采用單一的編譯執(zhí)行方式。根據(jù)程序的二八原則,只有20%的代碼是被經(jīng)常執(zhí)行的。同時由于面向?qū)ο蟮奶匦?,用Java 編寫的程序往往會含有很多簡單方法,比如Javabean 的get 和put 方法。因此,將程序中所有的Java 方法都編譯成本地代碼是得不償失的,一方面造成了運行效率的下降,另一方面增加了內(nèi)存的消耗10。下一步的工作將針對這一問題展開,對Kaffe 進行修改,提升Kaffe 虛擬機在龍芯平臺上的性能。參考文獻:12Tim Lindholm,Frank Yellin.The Jav

18、a virtual machine specifi-cation second edition M . California, USA:Addison-Wesley, 1999. 3Lo C-T D,Srisa-an W,Chang J M.A performance comparison be-(上接第326頁可用性證明:分別測試從A 、B 發(fā)往C 上的同類現(xiàn)場總線之間的通信和不同現(xiàn)場總線之間的通信,結(jié)果顯示發(fā)送和接收的數(shù)據(jù)一致,說明了在該系統(tǒng)下現(xiàn)場總線通信正常,更重要的是證明了該中間件實現(xiàn)了不同類型現(xiàn)場總線的互聯(lián)互操作問題。實時性證明:分別測試不經(jīng)過該中間件通信和通過實時中間件模塊時,發(fā)送100個數(shù)據(jù)包所耗費的時間。測試結(jié)果顯示:不經(jīng)過該中間件通信時的最低耗時為141.322毫秒;如圖5所示,通過實時中間件發(fā)送數(shù)據(jù)所耗費的時間隨著實時系統(tǒng)線程的執(zhí)行周期的減小,通信耗時也隨之減小,在執(zhí)行周期為0.1微秒時完成100條數(shù)據(jù)通信最快可達到99微秒。顯然由于實時任務(wù)的強制優(yōu)先執(zhí)行特點,該系統(tǒng)實時性能提高顯著。式系統(tǒng)下多現(xiàn)場總線融合的實時中間件的插件式體系結(jié)構(gòu),并詳細描述了該體系結(jié)構(gòu)的實現(xiàn)。實驗證明本系統(tǒng)不僅很好地解決了不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論