<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 分析基于μC/OS-II的嵌入式構件系統設計

分析基于μC/OS-II的嵌入式構件系統設計

作者: 時(shí)間:2012-01-04 來(lái)源:網(wǎng)絡(luò ) 收藏

μ 是一個(gè)源碼公開(kāi)、可移植、可固化、可裁剪、占先式的實(shí)時(shí)多任務(wù)操作,它適用于多種微處理器,微控制器和數字處理芯片。在所有實(shí)時(shí)操作中,μ的源代碼幾乎是最整潔、編寫(xiě)最一致的。自1992年問(wèn)世以來(lái),μ已經(jīng)被應用到數以百計的產(chǎn)品中。本文嘗試將化軟件思想引入軟件中,提出了一種適用于軟件的的軟件體系結構,并且在常用輸入設備鍵盤(pán)的應用實(shí)踐中,驗證了此體系結構的可行性。

本文引用地址:http://dyxdggzs.com/article/149906.htm

1 技術(shù)

1.1 構 件

構件可以視為一個(gè)通過(guò)接口對外界提供服務(wù)或向外界請求服務(wù)的黑盒,多個(gè)構件可以組成一個(gè)更高層次的構件,構件比對象提供了更高的抽象。構件是二進(jìn)制可替換的,這個(gè)特點(diǎn)使它們與“類(lèi)”有著(zhù)顯著(zhù)的不同。當創(chuàng )建了一個(gè)構件的修訂版本時(shí),它可以替代同一構件的原先版本,而不必重新編譯其他構件。通常,只要一個(gè)構件滿(mǎn)足相同的接口,就可替換另一個(gè)構件,而不必對其他構件做任何修改。因此,構件能夠很好地解決更新、維護、分布和復用等諸多問(wèn)題。

構件基本特征:可復用性、可封裝性、組裝性、可定制性、自治性、粗粒度、集成特征、接口連接機制。目前,構建模型大致可分為2類(lèi):在面向對象的程序設計中,構件即對象;在軟件體系結構中,構件即結構單元。

1.2 嵌入式構件

1.2.1 嵌入式構件模型

嵌入式構件為實(shí)現一定嵌入式功能的一組封裝的、規范的、可重用的、具有嵌入特性的軟件單元,是組成嵌入式系統的功能單位。它是被標準化的、具有重用性、支持QoS的、能夠提供實(shí)時(shí)應用的軟件資源。

每個(gè)嵌入式構件由4部分構成:構件體、屬性、接口、依賴(lài)關(guān)系。圖1為基本構件的示意圖。構件體實(shí)現構件的基本功能;屬性描述了構件的基本信息;接口將構件與外界連接,為外界提供服務(wù),每一種接口對應一個(gè)不同的服務(wù);依賴(lài)關(guān)系標識構件間的所有關(guān)系,用于實(shí)現構件間的拼接。

1.2.2 嵌入式構件屬性

屬性是描述構件某個(gè)方面特征的元數據。屬性定義了構件查找的方法,可以根據任意一條屬性記錄快速找到符合條件的構件。由于嵌入式構件的特殊性,可以將嵌入式軟件構件的屬性分為3種:描述屬性、約束屬性和服務(wù)質(zhì)量(QoS)屬性。

(1)描述屬性

描述屬性指的是一般構件都具有的公共屬性。

(2)約束屬性

約束屬性描述構件所依賴(lài)的環(huán)境。約束屬性分為2類(lèi):描述絕大多數構件都具有的公有約束屬性和描述單獨構件特殊需求的專(zhuān)有約束屬性。公有約束屬性包括CPU類(lèi)型、操作系統、依賴(lài)的類(lèi)庫等。

(3)QoS屬性

QoS屬性是嵌入式軟件構件最重要的要素。為了選取合適的構件來(lái)開(kāi)發(fā)嵌入式系統,必須考慮構件的QoS屬性,以*估它所提供的性能指標。常見(jiàn)的QoS屬性包括平均執行時(shí)間、最差執行時(shí)間、最優(yōu)執行時(shí)間、內存消耗、功耗、健壯性、可靠性和安全性等。

2 嵌入式軟件構件設計

2.1 μC/OS—II嵌入式實(shí)時(shí)操作系統

μC/0S—II實(shí)時(shí)性強,可靠性高,對處理器以及ROM、RAM資源的要求不高;另外,它的代碼大部分用ANSI C語(yǔ)言編寫(xiě),只有少部分微處理器專(zhuān)用的代碼用匯編語(yǔ)言編寫(xiě),有利于程序的移植。

2.2 構件的嵌入式軟件體系結構

一個(gè)構件系統的體系結構由一系列定義的構件框架和針對該框架設計的構件間的相互作用關(guān)系組成。體系結構是所要實(shí)現系統的整體規劃,它為構件的組裝提供基礎框架和接口規范。

目前,嵌入式構件技術(shù)研究的核心之一是構件模型和軟件體系結構(軟件構架)這兩個(gè)相互關(guān)聯(lián)的問(wèn)題。不同的構件只能在相應的軟件構架中使用,因此構件的應用軟件設計也可認為是基于體系結構(構架)的軟件設計,也稱(chēng)之為基于“構件一構架”的應用軟件設計。

根據上述的嵌入式基本構件模型,本文提出了一適用于嵌入式系統的軟件體系結構。其中,定義“構件系統”為一特定應用,實(shí)現某一具體功能。另外,定義“構件子系統”。它類(lèi)似于UML中的包概念,代表元素的邏輯分組,將具體的應用從實(shí)際問(wèn)題中抽象出來(lái),同時(shí)對各個(gè)關(guān)注區域進(jìn)行相對分離,這樣做可以獨立地各個(gè)關(guān)注點(diǎn),從而可以更好地系統的結構。一個(gè)構件子系統可以包含一個(gè)構件或者是多個(gè)構件的集合。

硬件抽象層實(shí)現硬件的驅動(dòng)、I/O控制,可以用于同一種硬件平臺的很多應用中。OS層主要用于與操作系統相關(guān)的操作,包括系統任務(wù)的創(chuàng )建、消息的創(chuàng )建等。通信層實(shí)現數據的傳遞、數據格式的轉換。

用戶(hù)接口層提供與底層應用相關(guān)的基本操作函數、對外接口函數,實(shí)現上下層之間的互操作。應用層位于頂層,用于實(shí)現用戶(hù)的應用程序。用戶(hù)無(wú)需關(guān)心底層的硬件結構,直接使用用戶(hù)接口層提供的基本操作函數,即可編程實(shí)現自己需要的功能。

分層的結構設計保持了頂層與低層很好的一致性,實(shí)現了橫向分離;同時(shí),原型的引用使得各層間的連接更為緊密,縱向相連,從而得到集成度更高、更可靠的系統。

3 嵌入式構件系統的實(shí)現

3.1 鍵盤(pán)構件系統的實(shí)現

嵌入式構件從本質(zhì)上來(lái)說(shuō),大部分的工作就是對輸入/輸出部分進(jìn)行處理。其構件主要有鍵盤(pán)、前向通道的處理(如A/D處理)、后向通道的處理(如D/A處理)、USB控制、網(wǎng)絡(luò )控制、液晶顯示等。輸入/輸出軟件的代碼占據了整個(gè)操作系統的相當部分,對嵌入式操作系統來(lái)說(shuō),這部分的重要性是不言而喻的。其中,鍵盤(pán)更是嵌入式應用程序最常用的器件,因此本文以鍵盤(pán)為例,依據上述體系結構構建了鍵盤(pán)應用模型,配置實(shí)現了鍵盤(pán)功能。

圖2為鍵盤(pán)構件系統分層體系結構。每層左邊顯示的“棒棒糖”形狀表示層的接口,接口是一組可以從外部訪(fǎng)問(wèn)的類(lèi)和對象。虛線(xiàn)箭頭表示的是依賴(lài)關(guān)系,每層都依賴(lài)于其下一層的包,且構件與構件之間也存在著(zhù)依賴(lài)關(guān)系。上層調用位于下層具體一些的層次中的服務(wù),這種單向依賴(lài)使得可以在不同的上下文中使用相同的服務(wù),而無(wú)需考慮服務(wù)的實(shí)現方式。

另外,圖2中的寬箭頭表明了數據的傳遞方向,數據在硬件抽象層取得后,逐級向上層傳遞,經(jīng)過(guò)層層處理、轉換,最終到達應用層,被用戶(hù)程序所用。而此處,數據的傳輸過(guò)程其實(shí)也是一個(gè)原型的形成過(guò)程,即最終實(shí)現了一鍵盤(pán)響應處理任務(wù)。

3.2 構件生成集成環(huán)境的實(shí)現

基于構件系統體系結構,本文擬開(kāi)發(fā)了一構件生成集成環(huán)境,如圖3所示。該環(huán)境可以實(shí)現構件系統的自配置、自拼接、源代碼自生成,結構清晰,使用簡(jiǎn)便。隨后在該集成環(huán)境上,配置鍵盤(pán)構件系統,自動(dòng)生成源代碼,并在博創(chuàng )ARM300實(shí)驗平臺上實(shí)現了鍵盤(pán)響應,很好地驗證了此體系結構的可行性及優(yōu)越性。

本文擴展了通用軟件構件的概念,提出了適用于嵌入式系統的構件模型;并在此基礎上設計了嵌入式軟件6層體系結構,采用了分層的結構設計,實(shí)現了橫向分離,而“原型”的引用使得各層縱向相連。此體系結構不僅實(shí)現了軟硬件分離,同時(shí)也實(shí)現了功能的分離,有利于實(shí)現穩定性好的嵌入式系統。最后,本文在鍵盤(pán)應用實(shí)例中驗證了其可行性。隨著(zhù)嵌入式系統的硬件發(fā)展,以及基于構件的軟件設計方法自身的不斷完善,基于構件的軟件設計方法必將是未來(lái)的發(fā)展方向。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>