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

UML建模在嵌入式系統開發中的應用

2013-04-12 00:00:00曹雷薛平貞
現代電子技術 2013年16期

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

關鍵詞: 系統建模; UML; Rhapsody; VxWorks

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

0 引 言

VxWorks操作系統[1]作為高性能嵌入式實時操作系統,具有進程管理、存儲管理、設備管理、文件系統管理、網絡協議及系統應用等多種功能,并可以實現實時多任務調度、多中斷管理、實時的系統資源分配以及實時的任務間通信。在開發基于VxWorks系統的應用程序時如果僅僅依靠程序員進行傳統的代碼編程調試,則很難發揮出其的強大功能進而設計出可靠、高效的嵌入式應用系統,因此必須要有與之相配套的開發工具。

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

1 系統建模

1.1 項目需求分析

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

1.2 系統建模

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

2 系統設計

系統運行于基于X86架構的硬件體系中,系統程序的開發采用上位機?目標機(Host?Target)交叉開發模式[6]。在上位機中進行應用程序的開發,通過局域網將應用程序下載到運行Vxworks操作系統的目標機中進行在線調試。系統開發模式如圖6所示。

運行于上位機中的開發環境為Tornado 2.2和Rhapsody 6.1。具體為:在Tornado 2.2中完成對運行于目標機上的VxWorks操作系統組件的裁剪配置及編譯生成映像文件;Rhapsody 6.1則進行系統建模和軟件設計實現。項目采用面向對象的設計方法替代了傳統的結構化設計,共由8個任務組成,并按優先級從高到低的順序排列。

2.1 嵌入式系統生成

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

2.2 應用程序開發

2.2.1 Rhapsody 6.1環境配置

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

2.2.2 建立狀態圖

接下來依據1.2節中系統的建模結果,對模型中各對象的基類屬性和操作進行具體實現。在實現各對象功能的基類中采用了事件觸發有限狀態機之間自動進行轉移來管理對象生命周期中的所有活動,這樣各對象之間以及對象內部之間的動態交互流程更為清晰,增強了程序的可讀性[7]。頂層設計中對象模塊itsGUIPro和itsHWPro的功能實現狀態圖如圖8,圖9所示,接口模塊itsIface對象中的屬性和操作僅供對象itsGUIPro和itsHWPro在各自的功能實現中調用,故沒有獨立的狀態圖。

2.2.3 程序實現

限于篇幅,僅就對itsHWPro對象從創建到銷毀整個生命周期的關鍵代碼進行說明。

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

{

cl_HWPro* me = (cl_HWPro *) malloc(sizeof(cl_HWPro));//為對象動態分配內存

if(me!=NULL)

{

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

}

DYNAMICALLY_ALLOCATED(me);//指定對象可動態調用

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”的任務

/*變量初始化*/

me?>can2sendflag = FALSE;

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

initRelations(me);

// itsHWPro對象的內部對象調用關系初始化

initStatechart(me);

//itsHWPro對象的活動狀態圖初始化

}

void cl_HWPro_ProCAN2Send(cl_HWPro* const me)/* itsHWPro對象狀態圖中狀態can2sendpro中調用函數*/

{

int index=?1,icount=0;

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

//引號

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

{

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

sizeof(UnAllCanData)); //從數據接口中取需發送數據

}

while(index!=?1)

{

if(cl_CANPro_CAN2WrtMsgPro(me?>itsCANPro,

me?>itsInterface_SI?>CAN2SendEv[index]));// 處理發送數據

...

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

//事件索引號

}

cl_CAN_CAN2Write(me?>itsCAN);

//將數據發送到CAN總線

}

void cl_HWPro_Destroy(cl_HWPro* const me)

// itsHWPro對象的銷毀

{

if(me!=NULL)

{

cl_HWPro_Cleanup(me); //結束狀態圖活動并釋放其占用內存

}

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

}

2.2.4 系統調試

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

3 結 語

通過在嵌入式系統開發中使用UML對系統進行功能需求分析,建立迭代式模型,進而最終根據模型進行了代碼實現。經項目開發實踐證明,這種面向對象的開發模式可有效提高軟件重用率,縮短系統開發時間,加快項目的研發速度,代表了軟件開發自動化的發展方向。

參考文獻

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

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

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

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

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

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

[7] [美]BRUEGGE Bernd,[美]DUTOIT AllenH.面向對象的軟件工程[M].吳丹,譯.北京:清華大學出版社,2002.

主站蜘蛛池模板: 国产在线一区视频| 国产97视频在线观看| 国产av无码日韩av无码网站| 午夜一级做a爰片久久毛片| 久久9966精品国产免费| 亚洲欧美不卡| 国产成人亚洲精品色欲AV| 久草视频一区| 五月天天天色| 一本色道久久88综合日韩精品| 精品伊人久久久大香线蕉欧美| 欧美日韩国产精品综合| 婷婷六月色| 亚洲男女天堂| 免费又黄又爽又猛大片午夜| h网址在线观看| 欧美高清日韩| 996免费视频国产在线播放| 欧美曰批视频免费播放免费| 亚洲成a人在线观看| 人妻无码中文字幕一区二区三区| 无码粉嫩虎白一线天在线观看| 免费观看国产小粉嫩喷水| 欧美综合在线观看| 99视频有精品视频免费观看| AV不卡国产在线观看| 国产成人精品亚洲日本对白优播| 强奷白丝美女在线观看| 中文字幕在线一区二区在线| 99国产在线视频| 伊人蕉久影院| 好吊日免费视频| 欧美一区日韩一区中文字幕页| 久久久久九九精品影院| 丁香五月婷婷激情基地| 欧洲极品无码一区二区三区| 中文字幕在线观| 美女裸体18禁网站| 91久久大香线蕉| 97在线免费| 婷婷激情五月网| 拍国产真实乱人偷精品| 91欧美在线| 亚洲天堂网在线播放| www.狠狠| 亚洲综合久久成人AV| аv天堂最新中文在线| 57pao国产成视频免费播放| 国产成人高清精品免费5388| 国产97区一区二区三区无码| 国产一区二区网站| 秋霞午夜国产精品成人片| 手机在线看片不卡中文字幕| 亚洲国产欧洲精品路线久久| 国产精品吹潮在线观看中文| 91久久国产综合精品女同我| 国产成人调教在线视频| 十八禁美女裸体网站| 亚洲香蕉在线| 国产免费福利网站| 2020最新国产精品视频| 性视频一区| 欧美一区二区三区香蕉视| 亚洲成在线观看| 欧美特级AAAAAA视频免费观看| 国产成人毛片| 天天综合网站| 国产第一页屁屁影院| 国产精品亚洲专区一区| 欧美丝袜高跟鞋一区二区 | 亚洲第一国产综合| 91国内外精品自在线播放| 日韩人妻精品一区| 2021国产v亚洲v天堂无码| 丁香五月婷婷激情基地| 91亚瑟视频| 自拍偷拍欧美| av色爱 天堂网| 国产一级在线观看www色| 四虎影视国产精品| 欧美成人综合视频| av手机版在线播放|