當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要:UML是軟件工程領(lǐng)域的標(biāo)準(zhǔn)模語言。本文介紹使用統(tǒng)一建模語言UML對嵌入式系統(tǒng)中占先式實時內(nèi)核的面向?qū)ο筌浖治雠c設(shè)計;詳述利用UML的各種標(biāo)準(zhǔn)符號進(jìn)行從需求分析到整

摘要:UML是軟件工程領(lǐng)域的標(biāo)準(zhǔn)模語言。本文介紹使用統(tǒng)一建模語言UML對嵌入式系統(tǒng)中占先式實時內(nèi)核面向?qū)ο?/strong>軟件分析與設(shè)計;詳述利用UML的各種標(biāo)準(zhǔn)符號進(jìn)行從需求分析到整體設(shè)計的一系列工作。 關(guān)鍵詞:統(tǒng)一建模語言(UML) 面向?qū)ο?占先式實時內(nèi)核嵌入式系統(tǒng) 引言 在過去的10多年里,嵌入式技術(shù)得到飛速發(fā)展。隨著嵌入式應(yīng)用的不斷深入,嵌入式系統(tǒng)的復(fù)雜性、不確定性在不斷提高,系統(tǒng)規(guī)模也在逐步增大;而產(chǎn)品的研發(fā)周期又在不斷地縮短,這給嵌入式應(yīng)用軟件的開發(fā)帶來了新的挑戰(zhàn)。因此,最近幾年,對占先式實時內(nèi)核的研究、開發(fā)與應(yīng)用逐漸成為嵌入式系統(tǒng)的重點研究方向。 面向?qū)ο蠹夹g(shù)由于內(nèi)在地支持了對系統(tǒng)的抽象、分層和復(fù)用技術(shù),能夠很好地控制系統(tǒng)的復(fù)雜性,可很好地減輕嵌入式軟件的開發(fā)者必然面臨 的由于芯片性能的提高、嵌入式操作系統(tǒng)平臺等技術(shù)方面不斷變化所帶來的各種壓力,因此在嵌入式領(lǐng)域得到越來越廣泛的應(yīng)用。其中,統(tǒng)一建模語言是當(dāng)今世界上面向?qū)ο笙到y(tǒng)開發(fā)領(lǐng)域中應(yīng)用最為廣泛的工具之一。

1 統(tǒng)一建模語言UML 1.1 UML簡介 UML(Unified Modeling Language)是一種標(biāo)準(zhǔn)的、用于面向?qū)ο蠛突跇?gòu)件的軟件系統(tǒng)建模工具,是一種用于對軟件系統(tǒng)模型繪制可視化描述的工具。UML以標(biāo)準(zhǔn)的、易于理解的方式建立能夠描述復(fù)雜系統(tǒng)結(jié)構(gòu)和過程的可視化模型,廣泛用于描述信息管理系統(tǒng)、具有實時要求的工業(yè)系統(tǒng)過程、嵌入式系統(tǒng)、分布式系統(tǒng)、系統(tǒng)軟件等。 UML由圖、視圖、模型元素、通用機(jī)制和擴(kuò)展機(jī)制等幾個部分組成。其中圖是UML建模的關(guān)鍵,視圖由圖來描述;而圖由模型元素結(jié)合通用機(jī)制、擴(kuò)展機(jī)制等表示和語義組成。 根據(jù)圖在系統(tǒng)開發(fā)過程中不同階段的應(yīng)用,可以分為五類:用例圖、靜態(tài)圖、行為圖、交互圖與實現(xiàn)圖。 這些圖為系統(tǒng)的分析、設(shè)計提供了多種圖形表達(dá)形式,應(yīng)用于建模的不同階段。運(yùn)用UML。我們可以分析、設(shè)計幾乎所有的軟件和非軟件系統(tǒng)。當(dāng)然,對于具體的系統(tǒng)應(yīng)該根據(jù)系統(tǒng)的類型、系統(tǒng)的規(guī)模和開發(fā)需要繪制相應(yīng)的圖,不一定在一個系統(tǒng)中畫出所有種類的圖。 1.2 UML與占先式實時內(nèi)核 開發(fā)一個占先式實時內(nèi)核與一般軟件的開發(fā)一樣,必然要經(jīng)過開發(fā)的分析、設(shè)計、編碼、測試四個階段。在嵌入式軟件開發(fā)過程中,一般采用的是一種順序開發(fā)方法。然而,由于嵌入式產(chǎn)品更新很快,研發(fā)周期要求盡可能的短,同時在開發(fā)過程中應(yīng)能動態(tài)地調(diào)整,所以,開發(fā)初斯所做的需求分析和設(shè)計,在后期的實現(xiàn)和測試中往往要做變動。這反映了在軟件開發(fā)過程中的需求分析、設(shè)計與具體實現(xiàn)之間有某種程度上的脫節(jié),對軟件實現(xiàn)后面的驗證往往會帶來很大風(fēng)險。另外,傳統(tǒng)的嵌入式系統(tǒng)軟件開發(fā)環(huán)境主要是對開發(fā)過程中軟件實現(xiàn)和測試階段的支持,是以源程序的開發(fā)和測試為核心的,缺少必要的需求分析和設(shè)計工具。 UML為占先式實時內(nèi)核的設(shè)計和實現(xiàn)提供了一套功能強(qiáng)大的建模工具。由于UML融合了面向?qū)ο蠓椒ㄖ械臄?shù)據(jù)驅(qū)動和行為驅(qū)動兩種方式,可以從各個方面描述實時系統(tǒng)的功能及反映實時系統(tǒng)的結(jié)束條件,可以為具有靜態(tài)結(jié)構(gòu)和動態(tài)結(jié)構(gòu)的系統(tǒng)以面向?qū)ο髨D形的方式建模。因此,使用面向?qū)ο?/strong>的UML可以很好地完成占先式實時內(nèi)核的建模。 圖2 占先式實時內(nèi)核的類圖 2 UML建模的具體應(yīng)用 2.1 占先式實時內(nèi)核概述 占先式實時內(nèi)核具有多任務(wù)機(jī)制。多任務(wù)機(jī)制是基于面向任務(wù)對象的,以任務(wù)為對象,以事件和時間為驅(qū)動,通過實時內(nèi)核管理時間關(guān)鍵任務(wù)和任務(wù)的優(yōu)先級,實現(xiàn)任務(wù)之間的調(diào)度、協(xié)同和仲裁。 多任務(wù)機(jī)制的具體實現(xiàn)由調(diào)度程度來完成。在系統(tǒng)程序運(yùn)行過程中,當(dāng)前任務(wù)完成之后,調(diào)度程序調(diào)出任務(wù)就緒表中優(yōu)先級最高任務(wù)的入口地址,把CPU資源分析給該任務(wù),使之執(zhí)行。如果該任務(wù)在執(zhí)行過程中引起比它優(yōu)先級高的任務(wù)進(jìn)入就緒態(tài),或者是中斷服務(wù)程序使一個更高優(yōu)先級任務(wù)進(jìn)入就緒態(tài),調(diào)度程序會把任務(wù)的當(dāng)前程序指針、寄存器壓入到該任務(wù)的任務(wù)堆棧指針指向的??臻g,保證現(xiàn)場,再把CPU資源分配給更高優(yōu)先級任務(wù),使高優(yōu)先級任務(wù)開始執(zhí)行。高優(yōu)先級任務(wù)執(zhí)行完畢后,下一個在任務(wù)就緒表中的最高級任務(wù)先從該任務(wù)的堆棧數(shù)據(jù)區(qū)恢復(fù)寄存器、程序指針、程序狀態(tài),然后切換并執(zhí)行該任務(wù)。 采用占先式實時內(nèi)核的思想設(shè)計單片機(jī)軟件,可以合理應(yīng)用單片機(jī)的有限資源并達(dá)到很高的實時響應(yīng),能降低軟件設(shè)計的難度。在本設(shè)計中,要求占先式實時內(nèi)核應(yīng)用于單片機(jī)中,任務(wù)數(shù)量最多不超過16個任務(wù)。 占先式實時內(nèi)核的功能需求是: *支持外部異步事件中斷、定時器中斷、消息傳遞及任務(wù)消息到達(dá)時的調(diào)度; *支持基于任務(wù)優(yōu)先級占先調(diào)度,多種實時調(diào)度策略; *任務(wù)的創(chuàng)建、運(yùn)行、懸掛、喚醒與撤銷; *定時器時鐘管理,任務(wù)延時處理; *共享資源管理,保證任務(wù)的同步運(yùn)行。 由于占先式實時內(nèi)核主要體現(xiàn)在軟件設(shè)計方面,所以在此省略了構(gòu)件圖和配置圖。 2.2 用例圖 圖1為用例圖,列出了該系統(tǒng)最基本的功能及功能描述,包括一系列用例和從系統(tǒng)中抽象出來的執(zhí)行者。 (1)角色說明 *任務(wù)。是嵌入式系統(tǒng)中用戶想要實現(xiàn)的具體功能,是一個線程。這些功能包括:輸入、輸出、數(shù)據(jù)處理、通信等。 *中斷。用來通知占先式實時內(nèi)核有一個事件發(fā)生,包括內(nèi)部非屏蔽中斷、定時器中斷與外部異步時間中斷。 *系統(tǒng)時鐘。用來創(chuàng)建中先式實時核所需要時候節(jié)拍。 (2)使用案例說明 *中斷響應(yīng)。占先式實時內(nèi)核通過對異步事件的處理,獲得任務(wù)運(yùn)行所需要的信號與數(shù)據(jù),使任務(wù)得以正常運(yùn)行。 *中斷級調(diào)度。中斷處理使得需要該中斷信號的任務(wù)就緒,調(diào)度程序判斷該任務(wù)是否為當(dāng)前任務(wù)就緒表中最高優(yōu)先級任務(wù),進(jìn)而決定該任務(wù)否立即進(jìn)行。

*任務(wù)就緒。這里指的不是由于中斷所引起的用戶任務(wù)就緒,有兩種方式:一個是,用戶希望應(yīng)用系統(tǒng)完成某個任務(wù)功能時,需要通知占先式實時內(nèi)核,要求它創(chuàng)建該任務(wù);另一個是,當(dāng)當(dāng)前運(yùn)行的任務(wù)喚醒另一個任務(wù)時,使后者就緒。 *任務(wù)級調(diào)度。任務(wù)完成創(chuàng)建或被別的任務(wù)喚醒之后,調(diào)度程序判斷該任務(wù)是否為當(dāng)前任務(wù)就緒表中最高優(yōu)先級任務(wù),進(jìn)而決定該任務(wù)是否立即進(jìn)行。 *任務(wù)運(yùn)行。當(dāng)任務(wù)是當(dāng)前任務(wù)就緒表中優(yōu)先級最高的任務(wù)時運(yùn)行該任務(wù)。 2.3 類圖 圖2為類圖,包括一組由所討論系統(tǒng)中抽象出的類和它們之間的關(guān)系。 類中斷的屬性中,中斷類型包括非屏蔽中斷、外部中斷與定時器中斷,以便占先式實時同核進(jìn)行相應(yīng)的中斷處理;中斷向量號與單片機(jī)的中斷向量號相匹配;中斷嵌套狀態(tài)表明當(dāng)前中斷是處于哪一層的中斷嵌套中。類中斷有一個操作:中斷處理,獲取外部事件的信號和數(shù)據(jù),并使上應(yīng)的任務(wù)就緒,然后判斷中斷嵌套數(shù)是否為 0。若不為零,執(zhí)行別的中斷響應(yīng);如果為零,選擇相應(yīng)的調(diào)度程序進(jìn)行調(diào)度。 類調(diào)度的屬性中,調(diào)度策略用于選擇一種實時調(diào)度方案;調(diào)度類型包括中斷調(diào)度與任務(wù)級調(diào)度;任務(wù)就緒表與任務(wù)懸掛表是調(diào)度時所需要數(shù)據(jù)結(jié)構(gòu)。類調(diào)度有一個操作:調(diào)度。當(dāng)當(dāng)前任務(wù)是任務(wù)就緒表中優(yōu)先級最高的任務(wù)時,當(dāng)前任務(wù)繼續(xù)運(yùn)行;如不是,將當(dāng)前任務(wù)運(yùn)行時的狀態(tài)與數(shù)據(jù)壓入該任務(wù)堆棧,掛起該任務(wù),然后調(diào)出最高級優(yōu)先權(quán)任務(wù)的任務(wù)堆棧數(shù)據(jù)與狀態(tài),使最高級任務(wù)運(yùn)行。 類任務(wù)的屬性中,任務(wù)ID表明是哪一個任務(wù);任務(wù)優(yōu)先級說明任務(wù)在所有任務(wù)中的運(yùn)行優(yōu)先權(quán);任務(wù)狀態(tài)說明該任務(wù)在占先式實時內(nèi)核中是處在何種狀態(tài);任務(wù)堆棧保存任務(wù)切換時該任務(wù)的狀態(tài)與數(shù)據(jù)。類任務(wù)有四個操作:建立任務(wù),在占先式實時內(nèi)核中確認(rèn)該任務(wù);掛起任務(wù),是任務(wù)由就緒狀態(tài)轉(zhuǎn)為掛起狀態(tài);恢復(fù)任務(wù),是任務(wù)由掛起狀態(tài)轉(zhuǎn)為就緒狀態(tài);任務(wù)延遲,是任務(wù)自我延遲若干個時鐘節(jié)拍,同時由就緒狀態(tài)轉(zhuǎn)為掛起狀態(tài)。 類消息的屬性中,消息類型包括信號量與消息隊列;消息ID表明該消息是哪一個消息;消息發(fā)送任務(wù)ID表明消息是由哪個任務(wù)發(fā)送的;消息接收任務(wù)ID表明哪些任務(wù)接收該消息。類消息的操作有兩個:發(fā)送消息,向一個或幾個任務(wù)發(fā)送信息;接收消息,消息接收到某個信息。 類任務(wù)定時器的屬性中,任務(wù)定時器ID表明該定時器是屬于哪個任務(wù)的;任務(wù)定時器時長說明該任務(wù)需要多長時鐘節(jié)后才能再次運(yùn)行。類任務(wù)定時器中有兩個操作:時鐘節(jié)拍處理,處理任務(wù)的延時時鐘節(jié)拍;任務(wù)超時處理,延時時間到的任務(wù)狀態(tài)轉(zhuǎn)為為就緒狀態(tài)。 類之間有以下聯(lián)系: *中斷與任務(wù)之間,描述中斷處理使相應(yīng)的任務(wù)就緒; *中斷與調(diào)度之間,描述由于中斷引起的中斷級調(diào)度; *中斷與消息之間,描述中斷處理時,相應(yīng)的消息得到信號或數(shù)據(jù); *調(diào)度與任務(wù)之間,描述由于調(diào)度使任務(wù)就緒表中優(yōu)先級最高的任務(wù)運(yùn)行,任務(wù)由于等待信號而自我掛起,也會請求調(diào)度; *任務(wù)與任務(wù)定時器之間,描述定時器對任務(wù)延遲時間的處理; *任務(wù)與消息之間,描述任務(wù)對消息的信息請求,消息對任務(wù)信息的接收,消息發(fā)送使接收該信息的任務(wù)就緒; *調(diào)度與消息之間,描述由于消息到而請求調(diào)度。 2.4 狀態(tài)圖 狀態(tài)圖表示對象的行為,被用來描述一個系統(tǒng)的動態(tài)視圖。由于在占先式實時內(nèi)核中系統(tǒng)的狀態(tài)轉(zhuǎn)換可以通過任務(wù)的狀態(tài)轉(zhuǎn)換顯示出來,所以這里只給出對象任務(wù)的狀態(tài)務(wù),如圖3所示。 任務(wù)在占先式實時內(nèi)核中具有就緒、運(yùn)行、掛起三種狀態(tài)。任務(wù)正在運(yùn)行時,由于等待消息、自我延時或自我掛起,可以由運(yùn)行狀態(tài)進(jìn)入掛起狀態(tài)。當(dāng)?shù)却南⒌?、等待超時或延遲到時,任務(wù)狀態(tài)就由掛起狀態(tài)進(jìn)入就緒狀態(tài),任務(wù)如果是任務(wù)就緒表中優(yōu)先級最高的任務(wù),通過調(diào)度和任務(wù)切換,進(jìn)入運(yùn)行狀態(tài)。 任務(wù)處于運(yùn)行狀態(tài)時,如中斷發(fā)生,通過中斷響應(yīng)處理使任務(wù)就緒,并進(jìn)行中斷級調(diào)度:如果是任務(wù)就緒表中優(yōu)先級最高的任務(wù),繼續(xù)運(yùn)行;如不是,進(jìn)行任務(wù)切換,任務(wù)由運(yùn)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。 處于就緒狀態(tài)時的任務(wù),也可以由于當(dāng)前運(yùn)行任務(wù)的請求從就緒狀態(tài)轉(zhuǎn)變?yōu)閽炱馉顟B(tài)。 2.5 順序圖 占先式實時內(nèi)核強(qiáng)調(diào)的是時間和事件。在UML中,順序圖是具有這種特性的動態(tài)交互模型。占先式實時內(nèi)核的順序力圖4所示。 圖4展示了中斷和任務(wù)、任務(wù)和任務(wù)之間的交互情況,這也是占先式實時內(nèi)核的基本內(nèi)容。參與流程的對象在框圖頂部的矩形中顯示,共有五個對象:中斷對象用來通知正在運(yùn)行的任務(wù)有異步事件發(fā)生,并將正在運(yùn)行任務(wù)的當(dāng)前狀態(tài)保存,暫停任務(wù)的運(yùn)行;中斷響應(yīng)對象處理任務(wù)的中斷服務(wù)代碼,并將與中斷信號相應(yīng)的任務(wù)置為就緒狀態(tài),然后調(diào)度任務(wù)運(yùn)行;低優(yōu)先級任務(wù)和高優(yōu)先級任務(wù)對象是用戶希望系統(tǒng)所能實現(xiàn)的功能,低優(yōu)先級任務(wù)只有當(dāng)所有高優(yōu)先級任務(wù)運(yùn)行完畢或處于懸掛狀態(tài)后才能運(yùn)行;消息對象處理消息的發(fā)送與接收,消息接收表明有消息到來,然后消息發(fā)送使接收消息的任務(wù)狀態(tài)轉(zhuǎn)為就緒狀態(tài),進(jìn)而進(jìn)行任務(wù)級的調(diào)度,使高優(yōu)先級的任務(wù)得以運(yùn)行。 圖4 占先式實時內(nèi)核順序圖 3 占先式實時內(nèi)核代碼實現(xiàn) 在設(shè)計建模完成后,系統(tǒng)中對象的行為和它們之間的邏輯關(guān)系都已經(jīng)清楚和確定下來,類和類的關(guān)系也得到進(jìn)一步的抽象,這時需要選擇具體的開發(fā)工具來實現(xiàn)占先式實時內(nèi)核。在設(shè)計建模完成后,系統(tǒng)中對象的行為和它們之間的邏輯關(guān)系都已經(jīng)清楚和確定下來,類和類的關(guān)系也得到進(jìn)一步的抽象,這時需要選擇具體的開發(fā)工具來實現(xiàn)占先式實時內(nèi)核。我使用Cygnal IDE(集成開發(fā)環(huán)境)作為系統(tǒng)的軟件開發(fā)平臺。IDE支持C語言和匯編語言的源程序級調(diào)試,具有豐富的開發(fā)與測試工具。本系統(tǒng)采用C語言作為開發(fā)工具,具體設(shè)計不再詳述。 結(jié)語 占先式實時內(nèi)核在嵌入式系統(tǒng)開發(fā)應(yīng)用中一直被認(rèn)為是個難點,這主要是由于其內(nèi)在關(guān)系比較復(fù)雜和繁瑣,采用以往的方法往往會陷入反復(fù)設(shè)計和調(diào)試的過程中,最后實現(xiàn)的程序也會由于種種原因存在不易覺察的隱患,這樣就會限制軟件的推廣和應(yīng)用。 通過對占先式實時內(nèi)核采用UML語言建模,可以比較清晰地認(rèn)識到占先式實時內(nèi)核在工作機(jī)制和具體實現(xiàn)過程各個階段的工作內(nèi)容,能夠有效降低開發(fā)占先式實時內(nèi)核所冒的風(fēng)險,提高占先式實時內(nèi)核編碼和測試的效率與穩(wěn)定性,縮短開發(fā)周期,這在嵌入式技術(shù)中有較好的實際意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉