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

UML建模在嵌入式系統(tǒng)開發(fā)中的應(yīng)用

2013-04-12 00:00:00曹雷薛平貞
現(xiàn)代電子技術(shù) 2013年16期

摘 要: 以某實際項目開發(fā)為例,通過采用在嵌入式操作系統(tǒng)中基于模型設(shè)計的程序開發(fā)方式,實現(xiàn)了在VxWorks系統(tǒng)下使用UML建模的方式進(jìn)行應(yīng)用程序開發(fā)。具體包括使用UML進(jìn)行項目需求分析、系統(tǒng)建模、開發(fā)環(huán)境配置、系統(tǒng)具體設(shè)計和程序調(diào)試等內(nèi)容。目前這種自頂向下的迭代式開發(fā)模式已成功應(yīng)用于多個項目中,可提高程序開發(fā)效率、縮短項目的開發(fā)周期。

關(guān)鍵詞: 系統(tǒng)建模; UML; Rhapsody; VxWorks

中圖分類號: TN919?34; TP311.1 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2013)16?0041?04

0 引 言

VxWorks操作系統(tǒng)[1]作為高性能嵌入式實時操作系統(tǒng),具有進(jìn)程管理、存儲管理、設(shè)備管理、文件系統(tǒng)管理、網(wǎng)絡(luò)協(xié)議及系統(tǒng)應(yīng)用等多種功能,并可以實現(xiàn)實時多任務(wù)調(diào)度、多中斷管理、實時的系統(tǒng)資源分配以及實時的任務(wù)間通信。在開發(fā)基于VxWorks系統(tǒng)的應(yīng)用程序時如果僅僅依靠程序員進(jìn)行傳統(tǒng)的代碼編程調(diào)試,則很難發(fā)揮出其的強(qiáng)大功能進(jìn)而設(shè)計出可靠、高效的嵌入式應(yīng)用系統(tǒng),因此必須要有與之相配套的開發(fā)工具。

UML(統(tǒng)一建模語言)是構(gòu)建系統(tǒng)模型尤其是軟件系統(tǒng)模型的標(biāo)準(zhǔn)方法[2]。使用它進(jìn)行系統(tǒng)建模,可以使用戶專注于系統(tǒng)設(shè)計的重要部分,收集關(guān)鍵信息,編制文檔以便在各個系統(tǒng)組成部分之間建立通信。Rhapsody是一種遵循UML 2.0標(biāo)準(zhǔn)的基于模型驅(qū)動的(Model?Driven Development,MDD)軟件開發(fā)平臺[3],其專門針對嵌入式操作系統(tǒng)設(shè)計,實現(xiàn)了基于UML2.0的可視化建模。為開發(fā)嵌入式應(yīng)用系統(tǒng)提供了從軟件分析、設(shè)計一直到代碼實現(xiàn)和測試的開發(fā)環(huán)境。

1 系統(tǒng)建模

1.1 項目需求分析

以某項目開發(fā)為例,該項目是根據(jù)某裝備的實際操作流程建立一個模擬的訓(xùn)練環(huán)境。包括信息顯控和信息處理兩個子系統(tǒng),其中信息顯控子系統(tǒng)主要由主界面、參數(shù)裝定、故障診斷以及模擬訓(xùn)練界面的顯示操作處理等4個部分組成;信息處理子系統(tǒng)則包括CAN總線(CAN1,CAN2)數(shù)據(jù)、串口 (COM1,COM2)數(shù)據(jù)、同步信號數(shù)據(jù)的采集處理,以及模擬數(shù)據(jù)源的產(chǎn)生。整個項目的功能需求分析使用基于UML的用例圖(User Case Diagrams)描述如圖1所示[4]。

1.2 系統(tǒng)建模

根據(jù)項目的功能需求分析[5],將系統(tǒng)從頂層劃分為三個對象模塊,如圖2所示,分別為界面顯示與人機(jī)交互操控處理模塊(itsGUIPro)、底層通信處理模塊(itsHWPro)和GUI與底層的接口對象模塊(itsIface),其各自的對象組成模型如圖3~圖5所示。

2 系統(tǒng)設(shè)計

系統(tǒng)運(yùn)行于基于X86架構(gòu)的硬件體系中,系統(tǒng)程序的開發(fā)采用上位機(jī)?目標(biāo)機(jī)(Host?Target)交叉開發(fā)模式[6]。在上位機(jī)中進(jìn)行應(yīng)用程序的開發(fā),通過局域網(wǎng)將應(yīng)用程序下載到運(yùn)行Vxworks操作系統(tǒng)的目標(biāo)機(jī)中進(jìn)行在線調(diào)試。系統(tǒng)開發(fā)模式如圖6所示。

運(yùn)行于上位機(jī)中的開發(fā)環(huán)境為Tornado 2.2和Rhapsody 6.1。具體為:在Tornado 2.2中完成對運(yùn)行于目標(biāo)機(jī)上的VxWorks操作系統(tǒng)組件的裁剪配置及編譯生成映像文件;Rhapsody 6.1則進(jìn)行系統(tǒng)建模和軟件設(shè)計實現(xiàn)。項目采用面向?qū)ο蟮脑O(shè)計方法替代了傳統(tǒng)的結(jié)構(gòu)化設(shè)計,共由8個任務(wù)組成,并按優(yōu)先級從高到低的順序排列。

2.1 嵌入式系統(tǒng)生成

根據(jù)項目使用的X86架構(gòu)平臺制作基于PentiumIII CPU的 BSP包;在Tornado 2.2中創(chuàng)建基于該BSP包的bootable工程,并根據(jù)項目實際需要裁剪了VxWorks操作系統(tǒng)包含的組件,最終編譯生成了Bootrom文件和VxWorks映像文件,并通過局域網(wǎng)下載到目標(biāo)機(jī)上進(jìn)行在線調(diào)試,VxWorks操作系統(tǒng)可正常初始化啟動且圖形模式下測試程序運(yùn)行正常。

2.2 應(yīng)用程序開發(fā)

2.2.1 Rhapsody 6.1環(huán)境配置

首先在Rhapsody 6.1中新建工程,雙擊工程瀏覽窗口的DefaultConfig,彈出Configuration對話框,單擊Propertys選項卡,將CPP_CG\Configuration\Envirenment選項修改為VxWorks,CPP_CG\VxWorks\BSP選項修改為PENTIUM3;單擊Settings選項卡,添加工程庫文件和頭文件目錄,具體如圖7所示。

2.2.2 建立狀態(tài)圖

接下來依據(jù)1.2節(jié)中系統(tǒng)的建模結(jié)果,對模型中各對象的基類屬性和操作進(jìn)行具體實現(xiàn)。在實現(xiàn)各對象功能的基類中采用了事件觸發(fā)有限狀態(tài)機(jī)之間自動進(jìn)行轉(zhuǎn)移來管理對象生命周期中的所有活動,這樣各對象之間以及對象內(nèi)部之間的動態(tài)交互流程更為清晰,增強(qiáng)了程序的可讀性[7]。頂層設(shè)計中對象模塊itsGUIPro和itsHWPro的功能實現(xiàn)狀態(tài)圖如圖8,圖9所示,接口模塊itsIface對象中的屬性和操作僅供對象itsGUIPro和itsHWPro在各自的功能實現(xiàn)中調(diào)用,故沒有獨(dú)立的狀態(tài)圖。

2.2.3 程序?qū)崿F(xiàn)

限于篇幅,僅就對itsHWPro對象從創(chuàng)建到銷毀整個生命周期的關(guān)鍵代碼進(jìn)行說明。

cl_HWPro * cl_HWPro_Create(RiCTask * p_task) //itsHWPro對象的創(chuàng)建

{

cl_HWPro* me = (cl_HWPro *) malloc(sizeof(cl_HWPro));//為對象動態(tài)分配內(nèi)存

if(me!=NULL)

{

cl_HWPro_Init(me, p_task); //itsHWPro對象初始化

}

DYNAMICALLY_ALLOCATED(me);//指定對象可動態(tài)調(diào)用

return me;

}

void cl_HWPro_Init(cl_HWPro* const me, RiCTask * p_task) //itsHWPro對象初始化

{

RiCTask_Init((me?>ric_task), \"tHW\", 50, RiCOSDefaultStackSize, RiCOSDefaultMessageQueueSize, RiCFALSE, NULL); //開始一個名為“tHW”的任務(wù)

/*變量初始化*/

me?>can2sendflag = FALSE;

RiCReactive_setActive((me?>ric_reactive), RiCTRUE); //激活對象狀態(tài)圖

initRelations(me);

// itsHWPro對象的內(nèi)部對象調(diào)用關(guān)系初始化

initStatechart(me);

//itsHWPro對象的活動狀態(tài)圖初始化

}

void cl_HWPro_ProCAN2Send(cl_HWPro* const me)/* itsHWPro對象狀態(tài)圖中狀態(tài)can2sendpro中調(diào)用函數(shù)*/

{

int index=?1,icount=0;

index=cl_ProStack_StackPop(me?>itsInterface_SI?>itsCANevStk[2]); //彈出發(fā)送事件索

//引號

if(index!=?1) //索引號有效

{

memcpy(me?>itsCANPro.AllMsgSendtoCan,me?>itsInterface_SI?>AllSendData,

sizeof(UnAllCanData)); //從數(shù)據(jù)接口中取需發(fā)送數(shù)據(jù)

}

while(index!=?1)

{

if(cl_CANPro_CAN2WrtMsgPro(me?>itsCANPro,

me?>itsInterface_SI?>CAN2SendEv[index]));// 處理發(fā)送數(shù)據(jù)

...

index=cl_ProStack_StackPop(me?> itsInterface_SI?>itsCANevStk[2]); //彈出發(fā)送

//事件索引號

}

cl_CAN_CAN2Write(me?>itsCAN);

//將數(shù)據(jù)發(fā)送到CAN總線

}

void cl_HWPro_Destroy(cl_HWPro* const me)

// itsHWPro對象的銷毀

{

if(me!=NULL)

{

cl_HWPro_Cleanup(me); //結(jié)束狀態(tài)圖活動并釋放其占用內(nèi)存

}

free(me); //釋放對象內(nèi)存

}

2.2.4 系統(tǒng)調(diào)試

Rhapsody 6.1中通過創(chuàng)建生成順序圖來捕捉對象之間的消息映射從而進(jìn)行系統(tǒng)模型級的調(diào)試和驗證。以在Rhapsody 6.1中實現(xiàn)itsHWPro對象功能程序的調(diào)試為例,調(diào)試運(yùn)行時得到的順序圖片段如圖10所示。通過這種直觀地方式能夠盡早發(fā)現(xiàn)系統(tǒng)中存在的設(shè)計錯誤或缺陷,從而在很大程度上降低了項目風(fēng)險。

3 結(jié) 語

通過在嵌入式系統(tǒng)開發(fā)中使用UML對系統(tǒng)進(jìn)行功能需求分析,建立迭代式模型,進(jìn)而最終根據(jù)模型進(jìn)行了代碼實現(xiàn)。經(jīng)項目開發(fā)實踐證明,這種面向?qū)ο蟮拈_發(fā)模式可有效提高軟件重用率,縮短系統(tǒng)開發(fā)時間,加快項目的研發(fā)速度,代表了軟件開發(fā)自動化的發(fā)展方向。

參考文獻(xiàn)

[1] 王金剛,宮霄霖.基于VxWorks的嵌入式實時系統(tǒng)設(shè)計[M].北京:清華大學(xué)出版社,2004.

[2] [美]SCHMULLER Joseph. UML基礎(chǔ)、案例與應(yīng)用[M].李虎,趙龍剛,譯.北京:人民郵電出版社,2006.

[3] 孫強(qiáng),張振華.使用Rhapsody軟件框架和UML的實時系統(tǒng)開發(fā)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(2):63?65.

[4] [美]BOOCH Grady. UML用戶指南[M].邵維忠,譯.2版.北京:人民郵電出版社,2006.

[5] [美]LARMAN Craig.UML和模式應(yīng)用[M].姚淑珍,李虎,譯.北京:機(jī)械工業(yè)出版社,2002.

[6] 孔祥營,柏桂枝.嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)環(huán)境Tornado[M].北京:中國電力出版社,2002.

[7] [美]BRUEGGE Bernd,[美]DUTOIT AllenH.面向?qū)ο蟮能浖こ蘙M].吳丹,譯.北京:清華大學(xué)出版社,2002.

主站蜘蛛池模板: 国产精品人成在线播放| 亚洲第一天堂无码专区| jizz在线观看| 精品人妻无码区在线视频| 精品久久综合1区2区3区激情| 999国产精品永久免费视频精品久久 | 国产精品微拍| 狠狠色丁香婷婷| 91亚洲影院| 看av免费毛片手机播放| 欧美性精品| 亚洲成人精品| 国产精品私拍99pans大尺度 | 性网站在线观看| 国产精品免费露脸视频| 亚洲伊人久久精品影院| 97在线观看视频免费| 日韩精品资源| 91精品国产无线乱码在线| av无码久久精品| 国产流白浆视频| 国产精品99久久久久久董美香| 精品少妇人妻av无码久久| 97青草最新免费精品视频| 久久国产精品电影| 天天干天天色综合网| 日本精品αv中文字幕| 精品视频一区二区三区在线播 | 日韩欧美国产精品| 国产精品美女网站| 成年人国产网站| 国内丰满少妇猛烈精品播 | 日韩激情成人| 国产丝袜丝视频在线观看| 国产第一福利影院| 亚洲欧美天堂网| 国产成人精品男人的天堂| 欧美成a人片在线观看| 91啦中文字幕| a毛片在线| a级毛片免费网站| 91九色国产porny| 国产噜噜噜视频在线观看| 日韩欧美在线观看| 亚洲精品欧美重口| 欧美在线国产| 亚洲天堂高清| 亚洲色图欧美在线| 日本人妻丰满熟妇区| 特黄日韩免费一区二区三区| 97国产精品视频自在拍| 999精品在线视频| 玖玖精品在线| 国产精品第一区| 中文字幕在线观看日本| 免费毛片全部不收费的| a网站在线观看| 免费在线成人网| 国产女人在线观看| 黄色网在线免费观看| 亚洲大学生视频在线播放| 中国一级特黄视频| 欧美成人手机在线观看网址| 国产永久无码观看在线| 久久美女精品国产精品亚洲| 国产成年女人特黄特色毛片免| 在线网站18禁| 午夜国产精品视频黄| 直接黄91麻豆网站| 国内精品久久人妻无码大片高| 草逼视频国产| 91麻豆国产视频| 国产国模一区二区三区四区| 国产黄视频网站| 在线毛片网站| 五月天香蕉视频国产亚| 国模极品一区二区三区| 美女无遮挡免费视频网站| 欧美成人精品在线| 亚欧乱色视频网站大全| 欧美α片免费观看| 一级黄色欧美|