0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探究關于μC/OS—II的嵌入式構件系統(tǒng)設計

電子工程師 ? 來源:東華大學 ? 作者:徐蕓昱 唐明浩 ? 2021-03-24 14:52 ? 次閱讀

引 言

近些年來,隨著嵌入式產品需求的不斷增加,嵌入式軟件正變得越來越復雜,而產品的開發(fā)周期也越來越短。嵌入式軟件開發(fā)迫切需要更高效的軟件重用手段。

隨著軟件復用研究成為熱點,其核心技術——構件化軟件開發(fā)方法(CBD)引起了軟件工程領域的高度關注,并且在工程應用領域獲得了極大的成功。這種開發(fā)方法已在辦公應用、電子商務、因特網及分布式網絡應用中廣泛使用;但在嵌入式領域,構件技術仍處于起步階段,目前沒有一個統(tǒng)一通用的構件規(guī)范。盡管如此,由于基于構件的軟件設計方法能夠極好地滿足嵌入式軟件幾乎所有的特性(如定制、裁剪、動態(tài)演變等),有效縮短產品開發(fā)周期,這種設計方法無疑將給嵌入式系統(tǒng)的開發(fā)帶來巨大的好處。

本文嘗試將構件化軟件設計思想引入嵌入式軟件設計中,提出了一種適用于嵌入式軟件的基于構件的軟件體系結構,并且在常用輸入設備鍵盤的應用實踐中,驗證了此體系結構的可行性。

1 嵌入式構件技術

1.1 構 件

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

構件具備以下幾個基本特征:可復用性、可封裝性、組裝性、可定制性、自治性、粗粒度、集成特征、接口連接機制。目前,構建模型大致可分為2類:在面向對象的程序設計中,構件即對象,例如JavaBean;在軟件體系結構中,構件即結構單元,例如結構描述語言ADL。這些構件模型適合更高層的應用軟件,但不適合在嵌入式軟件開發(fā)中占主導地位的底層系統(tǒng)軟件的開發(fā)。

1.2 嵌入式構件

1.2.1 嵌入式構件模型

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

這里,從嵌入式構件的定義出發(fā),將參考文獻中通用軟件構件模型作適當的擴展,使其成為適用于嵌入式系統(tǒng)的基本構件模型。

每個嵌入式構件由4部分構成:構件體、屬性、接口、依賴關系。圖l為基本構件的示意圖。構件體實現構件的基本功能,即對外提供的服務;屬性描述了構件的基本信息;接口將構件與外界連接,在得到自己需要的服務后,為外界提供服務,每一種接口對應一個不同的服務;依賴關系標識構件間的所有關系,用于實現構件間的拼接。

1.2.2 嵌入式構件屬性

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

(1)描述屬性

描述屬性指的是一般構件都具有的公共屬性。常見的描述屬性有以下幾種。

名稱:構件以名稱作為標識。

標識:每個構件都對應唯一的ID號,區(qū)別于其他構件。

類型:將構件歸類,便于檢索與管理。

版本號:用于構件的更新。

編程語言:表示構件的實現語言。

構件描述信息:簡述構件功能。

表示形式:一個構件可以是源代碼、動態(tài)鏈接庫、靜態(tài)鏈接庫,以及文檔、圖表等形式。

(2)約束屬性

約束屬性描述構件所依賴的環(huán)境。約束屬性可分為2類:描述絕大多數構件都具有的公有約束屬性和描述單獨構件特殊需求的專有約束屬性。公有約束屬性包括CPU類型、操作系統(tǒng)、依賴的類庫等。專有約束屬性包括特殊硬件需求、時間約束和內存需求等。

(3)QoS屬性

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

2 嵌入式軟件構件設計

2.1 μC/OS—II嵌入式實時操作系統(tǒng)

μC/0S—II是一個可移植、占先式、實時的多任務內核,以任務為基本處理單位,能同時管理高達63個任務。它實時性強,可靠性高,對處理器以及ROM、RAM資源的要求不高;另外,它的代碼大部分用ANSI C語言編寫,只有少部分微處理器專用的代碼用匯編語言編寫,有利于程序的移植。

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

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

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

根據上述的嵌入式基本構件模型,本文提出了一適用于嵌入式系統(tǒng)的軟件體系結構。其中,定義“構件系統(tǒng)”為一特定應用,實現某一具體功能。

例如,鍵盤為一構件系統(tǒng),顯示器也為一構件系統(tǒng)。另外,定義“構件子系統(tǒng)”。它類似于UML中的包概念,代表元素的邏輯分組,將具體的應用從實際問題中抽象出來,同時對各個關注區(qū)域進行相對分離,這樣做可以獨立地分析各個關注點,從而可以更好地分析系統(tǒng)的結構。一個構件子系統(tǒng)可以包含一個構件或者是多個構件的集合。

我們把構件系統(tǒng)構造成抽象層次中的不同部分,最抽象(最接近應用領域)的位于“頂部”,最具體(最接近硬件)的位于“底部”。這樣,可以將構件系統(tǒng)從結構上構造為6個獨立的層次:應用層、用戶接口層、通信層、OS層、硬件抽象層和配置描述層。

每個層次為一個構件子系統(tǒng),每個構件子系統(tǒng)內包含有一個或多個構件。通過構件間的依賴關系來定位和拼接構件,組裝構件子系統(tǒng),最終生成所需要的構件系統(tǒng)。其中,配置描述層記錄構件系統(tǒng)屬性、結構說明、相關參數設置與系統(tǒng)類型定義,以及構件系統(tǒng)中各構件的依賴關系。配置描述層作用于其他各個層次,記錄了構件系統(tǒng)所需的一切信息,使得構件系統(tǒng)的移植更為方便,同時也易于構件的查詢、檢索、維護及出入庫管理。

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

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

層(即構件子系統(tǒng))的接口是所包含的構件接口的組合。分層接口從上層看是透明的,對下層則是不透明的。在層接口處定義的構件僅對整個層次結構中該層或者該層之上的構件可見。只要符合一定的條件,每一層都可實現相當程度的復用,只需要替換相關的構件即可。

這里,特別要提到“原型”的概念。在各個層中,每個垂直切片僅實現與切片的目的相關的部分。這種實現方案稱為“迭代式原型(iterative prototyping)”,每個切片稱為一個“原型(prototype)”。實現原型時,每個原型都在其前驅所實現的特性的基礎上進行構造。原型的序列根據邏輯上特性的優(yōu)先順序來確定。本體系結構引入原型的概念,每個原型包含來自各層的一個或者多個構件,后面的原型構造于先前原型所提供的服務的基礎上。每個原型將實現一種特定的功能,逐漸增加功能,最終實現用戶應用程序。

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

3 嵌入式構件系統(tǒng)的實現

3.1 鍵盤構件系統(tǒng)的實現

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

圖2為鍵盤構件系統(tǒng)分層體系結構。每層左邊顯示的“棒棒糖”形狀表示層的接口,接口是一組可以從外部訪問的類和對象。虛線箭頭表示的是依賴關系,每層都依賴于其下一層的包,且構件與構件之間也存在著依賴關系。上層調用位于下層具體一些的層次中的服務,這種單向依賴使得可以在不同的上下文中使用相同的服務,而無需考慮服務的實現方式。同時,由于低一些的層中提供了定義良好的接口集合,可以用不同的底層實現來替換它們,這樣,整個構件系統(tǒng)就能更方便地移植到其他的物理環(huán)境中。

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

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

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

結 語

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

編輯:ja

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5046

    文章

    18821

    瀏覽量

    298579
  • USB控制器
    +關注

    關注

    1

    文章

    35

    瀏覽量

    11837
  • QoS
    QoS
    +關注

    關注

    1

    文章

    135

    瀏覽量

    44657
收藏 人收藏

    評論

    相關推薦

    學習hypervisor嵌入式產品安全設計

    、PRTOS的配套工具等內容。第三部分(第13~15章)介紹嵌入式Hypervisor的高級應用和未來規(guī)劃,涵蓋μC/OS-II與Linux內核的虛擬化過程,以及PRTOS社區(qū)的愿景等內容。
    發(fā)表于 08-25 09:11

    嵌入式系統(tǒng)怎么學?

    操作系統(tǒng)的基本概念和原理,掌握常見的RTOS,如FreeRTOS、uC/OS等,以實現對嵌入式系統(tǒng)的任務調度和資源管理。 6、通信協(xié)議:學習常用的通信協(xié)議,如UART、SPI、I2
    發(fā)表于 07-02 10:10

    Altera SOPC 嵌入式系統(tǒng)設計(一)

    具有很大的優(yōu)勢。Altera 不僅提供了強大的HAL 系統(tǒng)庫支持,還提供了嵌入式操作系統(tǒng)和 TCP/IP 協(xié)議棧的支持。就成本而言,由于 Nios II 是由 Altera 公司直接
    發(fā)表于 06-25 20:39

    瑞薩CTSU程序在向嵌入式OS操作系統(tǒng)移植時的注意事項

    瑞薩CTSU程序在向嵌入式OS操作系統(tǒng)移植時的注意事項
    的頭像 發(fā)表于 03-29 08:05 ?216次閱讀
    瑞薩CTSU程序在向<b class='flag-5'>嵌入式</b><b class='flag-5'>OS</b>操作<b class='flag-5'>系統(tǒng)</b>移植時的注意事項

    飛凌嵌入式A40i-H核心板已適配“礦鴻OS

    飛凌嵌入式基于全志科技A40i-H打造的FETA40i-C核心板成功完成了“礦鴻OS”的系統(tǒng)適配,嵌入式核心板與“礦鴻”操作
    的頭像 發(fā)表于 01-18 08:02 ?739次閱讀
    飛凌<b class='flag-5'>嵌入式</b>A40i-H核心板已適配“礦鴻<b class='flag-5'>OS</b>”

    請問ADuC7060能否移植uCOS II嵌入式操作系統(tǒng)

    我想問一下ADuC7060能否移植uCOS II嵌入式操作系統(tǒng)?
    發(fā)表于 01-15 06:59

    什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應用

    嵌入式,一般是指嵌入式系統(tǒng)。用于控制、監(jiān)視或者輔助操作機器和設備的裝置。
    的頭像 發(fā)表于 12-20 13:33 ?2132次閱讀

    嵌入式C語言的結構特點

    嵌入式開發(fā)中既有底層硬件的開發(fā)又涉及上層應用的開發(fā),即涉及系統(tǒng)的硬件和軟件,C語言既具有匯編語言操作底層的優(yōu)勢,又具有高級語言功能性強的特點,當之無愧地成為嵌入式開發(fā)的主流語言。在 S
    的頭像 發(fā)表于 11-24 16:16 ?523次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>語言的結構特點

    嵌入式系統(tǒng)C語言

    電子發(fā)燒友網站提供《嵌入式系統(tǒng)C語言.doc》資料免費下載
    發(fā)表于 11-18 14:39 ?2次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>C</b>語言

    一種應用于智能家電嵌入式軟件的框架構件規(guī)范

    電子發(fā)燒友網站提供《一種應用于智能家電嵌入式軟件的框架構件規(guī)范.pdf》資料免費下載
    發(fā)表于 11-17 10:56 ?1次下載
    一種應用于智能家電<b class='flag-5'>嵌入式</b>軟件的框架<b class='flag-5'>構件</b>規(guī)范

    如何用C語言開發(fā)DSP嵌入式系統(tǒng)

    如何用C語言開發(fā)DSP嵌入式系統(tǒng)? DSP嵌入式系統(tǒng)開發(fā)是一個非常重要的領域,它涉及到設備的控制、數據的處理、
    的頭像 發(fā)表于 10-29 17:29 ?1039次閱讀

    基于ARM9和μC-OS-II的SD卡文件系統(tǒng)設計與實現

    電子發(fā)燒友網站提供《基于ARM9和μC-OS-II的SD卡文件系統(tǒng)設計與實現.pdf》資料免費下載
    發(fā)表于 10-24 09:56 ?0次下載
    基于ARM9和μ<b class='flag-5'>C-OS-II</b>的SD卡文件<b class='flag-5'>系統(tǒng)</b>設計與實現

    嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應用

    電子發(fā)燒友網站提供《嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應用.pdf》資料免費下載
    發(fā)表于 10-23 14:07 ?0次下載
    <b class='flag-5'>嵌入式</b>實時操作<b class='flag-5'>系統(tǒng)</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS</b>-Ⅱ在LPC1788上的移植及應用

    STM32嵌入式操作系統(tǒng)介紹

    的分配、任務調度,控制、協(xié)調并發(fā)活動。? 目前在嵌入式領域廣泛使用的操作系統(tǒng)有:嵌入式實時操作系統(tǒng)FreeRTOS、μC/
    發(fā)表于 09-28 06:59

    嵌入式系統(tǒng)構件分享

    )來使函數、變量和#iefine名稱按照層次方式組織(參見附錄C)。 圖1-1中用框圖來描述本書中涉及到的關鍵部分。盡管圖中顯示的構件絕大多數是通過硬件互相作用的,但我還是很小心地把依賴于硬件的代碼
    發(fā)表于 09-25 06:08