基于UC/OS-II的嵌入式構件系統(tǒng)設計
近些年來,隨著嵌入式產(chǎn)品需求的不斷增加,嵌入式軟件正變得越來越復雜,而產(chǎn)品的開發(fā)周期也越來越短。嵌入式軟件開發(fā)迫切需要更高效的軟件重用手段。
隨著軟件復用研究成為熱點,其核心技術——構件化軟件開發(fā)方法(CBD)引起了軟件工程領域的高度關注,并且在工程應用領域獲得了極大的成功。這種開發(fā)方法已在辦公應用、電子商務、因特網(wǎng)及分布式網(wǎng)絡應用中廣泛使用;但在嵌入式領域,構件技術仍處于起步階段,目前沒有一個統(tǒng)一通用的構件規(guī)范。盡管如此,由于基于構件的軟件設計方法能夠極好地滿足嵌入式軟件幾乎所有的特性(如定制、裁剪、動態(tài)演變等),有效縮短產(chǎn)品開發(fā)周期,這種設計方法無疑將給嵌入式系統(tǒng)的開發(fā)帶來巨大的好處。
本文嘗試將構件化軟件設計思想引入嵌入式軟件設計中,提出了一種適用于嵌入式軟件的基于構件的軟件體系結構,并且在常用輸入設備鍵盤的應用實踐中,驗證了此體系結構的可行性。
1 嵌入式構件技術
1.1 構 件
構件可以視為一個通過接口對外界提供服務或向外界請求服務的黑盒,多個構件可以組成一個更高層次的構件,構件比對象提供了更高的設計抽象。構件是二進制可替換的,這個特點使它們與“類”有著顯著的不同。當創(chuàng)建了一個構件的修訂版本時,它可以替代同一構件的原先版本,而不必重新編譯其他構件。通常,只要一個構件滿足相同的接口,就可替換另一個構件,而不必對其他構件做任何修改。因此,構件能夠很好地解決更新、維護、分布和復用等諸多問題。
構件具備以下幾個基本特征:可復用性、可封裝性、組裝性、可定制性、自治性、粗粒度、集成特征、接口連接機制。目前,構建模型大致可分為2類:在面向對象的程序設計中,構件即對象,例如JavaBean;在軟件體系結構中,構件即結構單元,例如結構描述語言ADL。這些構件模型適合更高層的應用軟件,但不適合在嵌入式軟件開發(fā)中占主導地位的底層系統(tǒng)軟件的開發(fā)。
1.2 嵌入式構件
1.2.1 嵌入式構件模型
嵌入式構件為實現(xiàn)一定嵌入式系統(tǒng)功能的一組封裝的、規(guī)范的、可重用的、具有嵌入特性的軟件單元,是組成嵌入式系統(tǒng)的功能單位。它是被標準化的、具有重用性、支持QoS的、能夠提供實時應用的軟件資源。
這里,從嵌入式構件的定義出發(fā),將參考文獻中通用軟件構件模型作適當?shù)臄U展,使其成為適用于嵌入式系統(tǒng)的基本構件模型。
每個嵌入式構件由4部分構成:構件體、屬性、接口、依賴關系。圖1為基本構件的示意圖。構件體實現(xiàn)構件的基本功能,即對外提供的服務;屬性描述了構件的基本信息;接口將構件與外界連接,在得到自己需要的服務后,為外界提供服務,每一種接口對應一個不同的服務;依賴關系標識構件間的所有關系,用于實現(xiàn)構件間的拼接。
屬性是描述構件某個方面特征的元數(shù)據(jù)。屬性定義了構件查找的方法,可以根據(jù)任意一條屬性記錄快速找到符合條件的構件。由于嵌入式構件的特殊性,可以將嵌入式軟件構件的屬性分為3 種:描述屬性、約束屬性和服務質量(QoS)屬性。
(1)描述屬性
描述屬性指的是一般構件都具有的公共屬性。常見的描述屬性有以下幾種。
名稱:構件以名稱作為標識。
標識:每個構件都對應唯一的ID號,區(qū)別于其他構件。
類型:將構件歸類,便于檢索與管理。
版本號:用于構件的更新。
編程語言:表示構件的實現(xiàn)語言。
構件描述信息:簡述構件功能。
表示形式:一個構件可以是源代碼、動態(tài)鏈接庫、靜態(tài)鏈接庫,以及文檔、圖表等形式。
(2)約束屬性
約束屬性描述構件所依賴的環(huán)境。約束屬性可分為2類:描述絕大多數(shù)構件都具有的公有約束屬性和描述單獨構件特殊需求的專有約束屬性。公有約束屬性包括 CPU類型、操作系統(tǒng)、依賴的類庫等。專有約束屬性包括特殊硬件需求、時間約束和內(nèi)存需求等。
(3)QoS屬性
QoS屬性是嵌入式軟件構件最重要的要素。為了選取合適的構件來開發(fā)嵌入式系統(tǒng),必須考慮構件的QoS屬性,以評估它所提供的性能指標。常見的QoS屬性包括平均執(zhí)行時間、最差執(zhí)行時間、最優(yōu)執(zhí)行時間、內(nèi)存消耗、功耗、健壯性、可靠性和安全性等。
2 嵌入式軟件構件設計
2.1 μC/OS—II嵌入式實時操作系統(tǒng)
μC/0S—II是一個可移植、占先式、實時的多任務內(nèi)核,以任務為基本處理單位,能同時管理高達63個任務。它實時性強,可靠性高,對處理器以及 ROM、RAM資源的要求不高;另外,它的代碼大部分用ANSI C語言編寫,只有少部分微處理器專用的代碼用匯編語言編寫,有利于程序的移植。
2.2 基于構件的嵌入式軟件體系結構
一個構件系統(tǒng)的體系結構由一系列定義的構件框架和針對該框架設計的構件間的相互作用關系組成。體系結構是所要實現(xiàn)系統(tǒng)的整體規(guī)劃,它為構件的組裝提供基礎框架和接口規(guī)范。
目前,嵌入式構件技術研究的核心之一是構件模型和軟件體系結構(軟件構架)這兩個相互關聯(lián)的問題。不同的構件只能在相應的軟件構架中使用,因此基于構件的應用軟件設計也可認為是基于體系結構(構架)的軟件設計,也稱之為基于“構件一構架”的應用軟件設計。
根據(jù)上述的嵌入式基本構件模型,本文提出了一適用于嵌入式系統(tǒng)的軟件體系結構。其中,定義“構件系統(tǒng)”為一特定應用,實現(xiàn)某一具體功能。例如,鍵盤為一構件系統(tǒng),顯示器也為一構件系統(tǒng)。另外,定義“構件子系統(tǒng)”。它類似于UML中的包概念,代表元素的邏輯分組,將具體的應用從實際問題中抽象出來,同時對各個關注區(qū)域進行相對分離,這樣做可以獨立地分析各個關注點,從而可以更好地分析系統(tǒng)的結構。一個構件子系統(tǒng)可以包含一個構件或者是多個構件的集合。
我們把構件系統(tǒng)構造成抽象層次中的不同部分,最抽象(最接近應用領域)的位于“頂部”,最具體(最接近硬件)的位于“底部”。這樣,可以將構件系統(tǒng)從結構上構造為6個獨立的層次:應用層、用戶接口層、通信層、OS層、硬件抽象層和配置描述層。
每個層次為一個構件子系統(tǒng),每個構件子系統(tǒng)內(nèi)包含有一個或多個構件。通過構件間的依賴關系來定位和拼接構件,組裝構件子系統(tǒng),最終生成所需要的構件系統(tǒng)。其中,配置描述層記錄構件系統(tǒng)屬性、結構說明、相關參數(shù)設置與系統(tǒng)類型定義,以及構件系統(tǒng)中各構件的依賴關系。配置描述層作用于其他各個層次,記錄了構件系統(tǒng)所需的一切信息,使得構件系統(tǒng)的移植更為方便,同時也易于構件的查詢、檢索、維護及出入庫管理。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論