基于嵌入式實(shí)時(shí)系統設計模式的研究與應用

發(fā)布時(shí)間:2010-8-19 17:34    發(fā)布者:lavida
關(guān)鍵詞: 嵌入式 , 實(shí)時(shí)系統
1 引言  

從系統的觀(guān)點(diǎn)來(lái)看,嵌入式實(shí)時(shí)系統也是系統,特別是硬件技術(shù)的快速發(fā)展,嵌入式實(shí)時(shí)軟件也有快速適應硬件型號升級問(wèn)題,也有業(yè)務(wù)快速變更要求以及可伸縮、可修改、可復用等方面的問(wèn)題。但面向對象技術(shù)對于實(shí)時(shí)性、可靠性的描述并不適合,在嵌入式實(shí)時(shí)應用中依然不是主流設計方法,從而引入了模式的概念。  

最早也是最基礎的設計模式是Liskov提出的七種基本模式,并提出對象構成模式的五條基本準則[1-4],為面向對象設計模式奠定了理論基礎。Gamma等四人提出了常用的25種設計模式,為用模式設計軟件體系結構提供了工程實(shí)踐的基礎。不過(guò)Gamma的模式作用域是局部的,只在單個(gè)的協(xié)作內。Bruce Douglas將兩個(gè)重要的軟件工程進(jìn)展--模式和UML相結合,成功地應用在主流實(shí)時(shí)軟件傳統使用的概念和技術(shù)中。  

本文討論的模式ERTSDP是基于Bruce Douglass的實(shí)時(shí)設計模式基礎之上,對典型嵌入式實(shí)時(shí)系統的設計解決方案加以總結抽象,提出的一套完整的設計思路。這一模式的提出可以促使本領(lǐng)域軟件開(kāi)發(fā)速度成倍的提高,更為重要的是軟件質(zhì)量也可以得到保證。  

2嵌入式實(shí)時(shí)系統設計模式(ERTSDP)研究  

2.1 設計模式的定義  

設計模式[7-9]是對經(jīng)常出現問(wèn)題的泛解。模式由三個(gè)重要的方面組成:第一是問(wèn)題(problem),這是要以模式來(lái)處理的設計的某個(gè)方面的陳述,也就是要用模式解決的某些優(yōu)化和QoS的側面。第二是解決方案(solution),也就是模式本身,模式用指明了角色的結構圖表示。最后是結果(consequences)。  

2.2 ERTSDP (Embedded Real-Time Systems Design Pattern)  

1.目的  

針對嵌入式實(shí)時(shí)系統分析和設計過(guò)程中的問(wèn)題進(jìn)行抽象并建立模型,使得新系統可以通過(guò)模式匹配、實(shí)例化等手段快速建立,從而達到縮短嵌入式實(shí)時(shí)產(chǎn)品開(kāi)發(fā)周期的目的。  

2.解  

解即模式本身,2.3小節將詳細討論。  

3.結果  

結果是使用模式后的一組利弊,將在本文最后討論。  

2.3 模式的解  

2.3.1 系統分析  

分析的目的是定義待開(kāi)發(fā)系統的基本性質(zhì)。一般來(lái)說(shuō),分析是一個(gè)黑箱視圖,而設計則按某個(gè)服務(wù)質(zhì)量QoS的要求提供充分的功能。對系統的分析又可分為兩個(gè)階段:需求分析階段和系統工程階段。  

(1)需求分析階段  

在需求階段盡可能詳細地標識和捕獲當前原型的需求,可用順序圖、狀態(tài)圖、活動(dòng)圖、正文描述以及約束等的組合對需求加以描述。  

(2)系統工程階段  

系統工程階段實(shí)際是做高層的體系結構設計。系統工程階段主要定義子系統的體系結構、子系統的接口及交互協(xié)議、將系統的用例和需求分解為子系統的用例和需求以及對系統的算法分析和控制法則規范說(shuō)明。  

2.3.2 系統設計  

設計就是該問(wèn)題的具體解決方案,是對分析模型的優(yōu)化。優(yōu)化準則的集合就是要求的系統服務(wù)質(zhì)量QoS。如果把每個(gè)QoS方面看作是獨立的特征并具有相對重要性的加權因子,那么一個(gè)好的設計就是找出下面公式的最小值。  

Min [ΣQoSFeaturej * Weightj ]  

其中Weightj指的是與第j個(gè)QoSFeature相關(guān)的相對重要性。對系統的設計也分為兩個(gè)階段:體系結構設計階段和詳細設計階段。  

(1)體系結構設計階段  

體系結構包括邏輯體系結構和物理體系結構。邏輯體系結構只涉及模型本身如何組織,這種組織可簡(jiǎn)可繁,取決于小組需要用它構造什么;物理體系結構指的是組織存在于運行時(shí)的事物。這一階段用五層體系結構視圖、子系統視圖和資源并發(fā)視圖等來(lái)描述。  

五層體系結構視圖是一個(gè)特定的體系結構,作用于許多嵌入式和實(shí)時(shí)系統的通用結構。它包含五個(gè)域:應用域(application domain)、用戶(hù)界面域(user interface domain)、通信域(communication domain)、抽象操作系統域(abstract OS domain)和抽象硬件域(abstract hardware domain)。  

子系統視圖是表示重要子系統的類(lèi)圖,多用于對系統進(jìn)行細化時(shí)。  

資源并發(fā)視圖是實(shí)時(shí)和嵌入式系統一個(gè)最突出的特點(diǎn)。一個(gè)有資源服務(wù)的元素,它的有效性由一個(gè)或多個(gè)服務(wù)質(zhì)量(QoS)特性來(lái)定義。QoS是資源的量化性質(zhì),如容量、執行速度、可靠性等等。  

(2)詳細設計階段  

詳細設計階段是對對象和類(lèi)的內部精細加工,它只限制在單個(gè)對象和類(lèi)之中。詳細設計時(shí),多數優(yōu)化都集中在數據構造、算法分解、對象狀態(tài)機的優(yōu)化、對象實(shí)現策略、關(guān)聯(lián)的實(shí)現以及可見(jiàn)性和封裝問(wèn)題等方面。  

模式是對設計中一般問(wèn)題的抽象,所以針對具體應用的模式匹配以及實(shí)例化是可根據需要對ERTSDP變動(dòng)的。譬如,需求分析階段可以根據問(wèn)題的復雜性對描述手段任意組合;系統工程階段也是微周期中的可選部分;如果系統非常復雜,可以遞歸調用子系統視圖對系統分解、分級細化;還可在體系結構設計時(shí)增加Activity圖實(shí)現對任務(wù)的劃分,增加sequence圖對系統運行流程描述。  

總之,在具體應用中可以靈活的應用模式來(lái)輔助設計。下面通過(guò)對常見(jiàn)的嵌入式實(shí)時(shí)系統--遠程監控系統應用ERTSDP模式進(jìn)行分析和設計,闡述了實(shí)例化模式的方法,同時(shí)也是對這一模式的討論和驗證。  

3 基于ERTSDP的遠程監控系統  

3.1 系統需求分析  

遠程監控系統現在已經(jīng)深透到社會(huì )的各個(gè)方面,簡(jiǎn)而言之,遠程監控系統就是將現場(chǎng)設備的運行數據發(fā)送至遠端加以監測和控制。本系統投入運行后預期的用戶(hù)有三類(lèi):普通用戶(hù)、系統管理員、故障專(zhuān)家。他們具有不同的職責,因而賦予了不同的權限。圖1的Use Case框圖可以清晰地反映出他們各自的權限職責。  


  
圖1 遠程監控系統的Use Case框圖  

3.2 系統體系結構設計  

本系統包含三個(gè)子系統--NetWeb、NetIO和RemoteClient(見(jiàn)圖2)。NetWeb是整個(gè)系統的核心,承擔著(zhù)實(shí)時(shí)/歷史數據管理、報警條件檢測,存貯用戶(hù)組態(tài)信息等功能;NetIO用于實(shí)現現場(chǎng)數據的采集(輸入)和裝置的控制(輸出);RemoteClient則實(shí)現了客戶(hù)端圖形用戶(hù)界面的功能。其中NetWeb和NetIO通過(guò)RS485總線(xiàn)進(jìn)行通訊,NetWeb 和RemoteClient則通過(guò)socket進(jìn)行信息交換。  

NetWeb運行在嵌入式開(kāi)發(fā)板上,操作系統是自主研發(fā)的嵌入式實(shí)時(shí)Linux,采用的方案設計是uClinux+RTAI。  


  
圖2 遠程監控系統的五層體系結構視圖  

3.3 子系統視圖  

子系統視圖是表示重要子系統的類(lèi)圖,多用于對系統進(jìn)行細化時(shí)。圖3是細化后的NetWeb子系統,從圖中可以看到,特殊的雙內核OS--uClinx+RTAI決定了NetWeb模塊分為實(shí)時(shí)應用和非實(shí)時(shí)應用。下面將從初始化和運行兩方面對圖3詳細解釋。  


  
圖3 NetWeb模塊的子系統視圖  

3.3.1 NetWeb子系統初始化  

NetWeb子系統初始化過(guò)程主要由KernelInit模塊和UserInit模塊(圖中灰色的模塊)實(shí)現。首先KernelInit模塊執行,完成內核空間的初始化任務(wù);然后啟動(dòng)UserInit模塊,這個(gè)過(guò)程比較復雜,首先Store模塊將系統存儲的配置信息和數據信息傳給UserInit模塊(標注{1}所示),然后KernelInit模塊驅動(dòng)485Driver模塊實(shí)時(shí)采集當前模塊的信息,傳送給UserInit模塊(標注{3}、{2}所示),UserInit模塊經(jīng)過(guò)兩者信息的比較,確定采集的對象,以及模塊信息的變更、系統狀態(tài)的變更等,最終完成初始化工作。  

3.3.2 NetWeb子系統運行流程  

當系統完成初始化開(kāi)始運行后,Gather模塊調用485Driver模塊相關(guān)接口A(yíng)PI對底層32個(gè)NetIO模塊進(jìn)行輪詢(xún)式采集,采集上來(lái)的數據經(jīng)過(guò)過(guò)濾整合后,正常的數據傳送至Transfer模塊,這時(shí)調用RTAI內核中的RT_SHM模塊實(shí)現內核和用戶(hù)空間大規模數據的共享(見(jiàn)標注{4})。Receive模塊從RT_SHM接受到數據,送到Store模塊存儲,然后根據用戶(hù)要求送到Socket模塊傳到遠程客戶(hù)端。如果過(guò)濾整合時(shí)發(fā)現數據異常,就驅動(dòng)AlarmKernel模塊,這個(gè)模塊啟動(dòng)RTAI的RT_FIFO模塊,將需報警數據通過(guò)管道(見(jiàn)標注{5})傳送至用戶(hù)空間的AlarmUser模塊。AlarmUser模塊再驅動(dòng)Email模塊以郵件的形式完成報警。  

3.4 資源并發(fā)視圖  

本系統中任務(wù)間資源共享的方式主要有兩種:共享內存和消息隊列。圖4和圖5分別對這兩種資源共享方式采用并發(fā)視圖進(jìn)行了分析。  


  
圖4 共享內存訪(fǎng)問(wèn)并發(fā)視圖  

共享內存對于大規模的數據共享非常適用,這里討論的是RTAI提供的實(shí)時(shí)SHM。RT_SHM并沒(méi)有提供任何互斥機制來(lái)控制實(shí)時(shí)進(jìn)程和非實(shí)時(shí)進(jìn)程訪(fǎng)問(wèn)同步性(對于實(shí)時(shí)任務(wù)或非實(shí)時(shí)任務(wù)之間的共享有保護措施,故不再考慮),雖然可以自己實(shí)現一些lock機制來(lái)控制,但是考慮到內核任務(wù)的優(yōu)先級遠高于用戶(hù)任務(wù),即實(shí)時(shí)任務(wù)從來(lái)不會(huì )被非實(shí)時(shí)任務(wù)中斷,所以實(shí)時(shí)任務(wù)對共享區寫(xiě)數據時(shí)永遠是一次性寫(xiě)完所有模塊信息,而且這些數據的時(shí)間戳是一致的,可以保證數據的正確性(如圖4);而非實(shí)時(shí)任務(wù)讀共享數據時(shí)是可能發(fā)生過(guò)程中被中斷的情況,導致可能一次讀取的模塊數據的時(shí)間戳不一致。但實(shí)際中寫(xiě)進(jìn)程的速度遠遠大于讀進(jìn)程的速度,同時(shí)考慮到實(shí)際運行時(shí)模塊數據變化是連續的,同一模塊不同時(shí)間戳采集的數據變化率不會(huì )很大,而現階段讀進(jìn)程只要滿(mǎn)足用戶(hù)需要的刷新頻率(QoS)就足夠了,所以對于數據部分丟失現階段并不可惜。  


  
圖5 消息隊列訪(fǎng)問(wèn)并發(fā)視圖  

消息隊列提供了一種傳輸多條消息的機制。如圖5所示,Sender線(xiàn)程因響應evRun事件而運行。Sender類(lèi)調用rQueue::insert()操作,并鎖定信號燈。在rQueue::insert()操作過(guò)程中,該線(xiàn)程被更高優(yōu)先級的Receiver線(xiàn)程中斷。Receiver試圖檢查在其隊列中新加入的消息。它調用rQueue::remove(),同時(shí)試圖鎖定信號燈。如果失敗,Receiver自動(dòng)掛起或被阻塞,因為信號燈已經(jīng)被鎖定到Sender線(xiàn)程,這使得Sender線(xiàn)程繼續工作,完成store()操作。一旦完成,rQueue類(lèi)釋放它的信號燈。它將解除對Receiver線(xiàn)程的阻塞,Receiver線(xiàn)程這時(shí)可以鎖定信號燈,讀取等待在隊列中的消息,解除信號燈的鎖定,處理收到的消息。  

4 系統仿真平臺  

通過(guò)應用ERTSDP模式對遠程監控系統分析、設計以及實(shí)現,滿(mǎn)足了用戶(hù)預期的需求。為了對系統功能、性能進(jìn)一步驗證,搭建了系統仿真實(shí)驗平臺(如圖6)。圖中標注為NetWeb的模塊就是系統的嵌入式裝置,這一模塊內部是net-start開(kāi)發(fā)板,操作系統是嵌入式實(shí)時(shí)Linux,子系統NetWeb的所有功能就運行其上。并排的五個(gè)模塊都是NetIO模塊,分別連接有不同的輸入/輸出信號,可以看到它們是通過(guò)RS-485與NetWeb相連。AI模塊通過(guò)傳感器采集到燈泡(圖中$圓圈)的溫度值,根據溫度的高低決定是否啟動(dòng)DO模塊輸出控制風(fēng)扇的轉動(dòng)。同時(shí)AO模塊可以根據用戶(hù)需求,經(jīng)由可控硅的控制可變電壓,進(jìn)而調節燈泡的亮暗程度。  


  
圖6 實(shí)驗系統平臺結構  

5 結論  

本文提出的設計模式ERTSDP是一種構建系統的完整解決方案,旨在為典型的嵌入式實(shí)時(shí)應用提供分析設計的模型。實(shí)踐證明這一模式非常適用于實(shí)時(shí)性、可靠性的描述,可以有效地提高嵌入式實(shí)時(shí)領(lǐng)域軟件的開(kāi)發(fā)速度,并使軟件的質(zhì)量得以保證。
本文地址:http://selenalain.com/thread-22596-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页