日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

嵌入式系统开发设计---嵌入式系统开发设计

發布時間:2023/12/20 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式系统开发设计---嵌入式系统开发设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?嵌入式系統設計的主要任務是定義系統的功能、決定系統的架構,并將功能映射到系統實現架構上。這里,系統架構既包括軟件系統架構也包括硬件系統架構。一種架構可以映射到各種不同的物理實現,每種實現表示不同的取舍,同時還要滿足某些設計指標,并使其他的設計指標也同時達到最佳化。

? ? 嵌入式系統的設計方法跟一般的硬件設計、軟件開發的方法不同,是采用硬件和軟件協同設計的方法,開發過程不僅涉及軟件領域的知識,還涉及硬件領域的綜合知識,甚至還涉及機械等方面的知識。要求設計者必須熟悉并能自如地運用這些領域的各種技術,才能使所設計的系統達到最優。

? ? 雖然嵌入式系統應用軟件的設計方案隨應用領域的不同而不同,但是嵌入式系統的分析與設計方法也遵循軟件工程的一般原則,許多成 熟的分析和設計方法都可以在嵌入式領域得到應用。嵌入式系統的開發過程同樣也包括需求分析、系統設計、實現和測試幾個基本階段,并且每個階段都有其獨有的特征和重點。

? ? 本節主要介紹嵌入式系統開發設計的技術與方法,并從嵌入式系統應用和計算模型的角度分析應用軟件設計的方法及設計過程中面臨的主要問題。最后,討論嵌入式領域軟件移植的相關問題。

?

1?嵌入式系統設計概述

? ??進行嵌入式系統設計前,應明確嵌入式系統設計本身的特點及衡量嵌入式系統設計的一些主要的技術指標。

? ? 1.嵌入式系統設計的特點

? ? 與通常的系統設計相比,嵌入式系統設計具有以下特點:

  • 軟、硬件協同并行開發;

  • 微處理器的類型多種多樣;

  • 實時嵌入式操作系統具有多樣性;

  • 與通用系統開發相比,可利用系統資源很少;

  • 應用支持少;

  • 要求特殊的開發工具;

  • 軟、硬件都要很健壯;

  • 調試很困難。?

? ? 2.嵌入式系統的技術指標

? ? 嵌入式系統設計的常用指標有:

? ? (1)NRE?成本(非重復性工程成本):設計系統所需要支付的一次性貨幣成本,即一旦設計完畢,不需要支付額外的設計費用,就可以制造任意數目的產品。

? ? (2)單位成本:生產單個產品所需要支付的貨幣成本,不包含?NRE?成本。

? ? (3)大小:指系統所占的空間,對軟件而言,一般用字節數來衡量;對硬件而言,則用邏輯門或晶體管的數目來衡量。

? ? (4)性能:系統完成規定任務所需要的時間,是設計時最常用的設計指標,主要有兩種衡量方式,一是響應時間,即開始執行到任務結束之間的時間。二是完成量,即單位時間內所完成的任務量。

? ? (5)功率:系統所消耗的功率,它決定了電池的壽命或電路的散熱需求。

? ? (6)靈活性:在不增加?NRE?成本的前提下,改變系統功能的能力。

? ? (7)樣機建立時間:建立系統可運行版本所需的時間,系統樣機可能比最終產品更大更昂貴,但可以驗證系統的用途和正確性,改進系統的功能。

? ? (8)上市時間:從系統開發到可以上市賣給消費者的時間,最主要的影響因素包括設計時間、制造時間和檢測時間。

? ? (9)可維護性:系統推出或上市后進行修改的難易程度,特別是針對非原始開發人員進行的修改。

? ? (10)正確性:正確實現了系統的功能,可以在整個設計過程中檢查系統的功能,也可以插入測試電路檢驗是否正確。

? ? (11)安全性:系統不會造成傷害的概率。各個設計指標之間一般是互相競爭的,改良了某個指標常常會導致其他指標的惡化,

? ? 為了最好地滿足設計最佳化,設計者必須了解各種軟、硬件的實現技術,并且能夠從一種技術轉移到另一種技術,以便找到特定約束下的最佳方案。

? ? 3.嵌入式系統的設計挑戰

? ? 嵌入式系統設計所面臨的挑戰有以下幾個方面。

? ? (1)需要多少硬件:設計者對用于解決問題的計算能力有較強的控制能力,不僅可以選擇使用何種處理器,而且可以選擇存儲器的數量、所使用的外設等,因為設計不僅要滿足性能的需求,還要受到制造費用的約束,硬件的選擇十分重要,硬件太少,將達不到功能和性能的要求,硬件過多又會使產品過于昂貴。

? ? (2)如何滿足時限:使用提高處理器速度的方法使程序運行速度加快來解決時間約束的方法是不可取的,因為這樣會使系統的價格上升。同時,提高了處理器的時鐘頻率,有時并不能提高執行速度,因為程序的速度有可能受存儲系統的限制。

? ? (3)如何減少系統的功耗:對采用電池供電的系統,功耗是一個十分敏感的問題。對于非電池供電的系統,高功率意味著高散熱。降低系統功耗的一種方法是降低它的運算速度,但是單純地降低運算速度顯然會導致性能不能滿足,因此,必須認真設計在降低功耗的同時滿足性能的約束。

? ? (4)如何保證系統的可升級性:系統的硬件平臺可能使用幾代,或者使用同一代的不同級別的產品,這些僅需要一些簡單的改變,設計者必須通過改變軟件來改變系統的特性,設計一種機器使它能夠提供現在仍未開發的軟件的性能。

? ? (5)如何保證系統的可靠性:可靠性是產品銷售時一項重要的指標,產品能夠很好地工作是消費者的合理要求,可靠性在一些系統中尤為重要,如安全控制系統。

? ? (6)測試的復雜性:測試一個嵌入式系統比僅僅輸入一些數據困難得多,所以不得不運行整臺機器以產生正確的數據,數據產生的時間是十分重要的,即不能離開嵌入式系統工作的整個環境來測試嵌入式系統。

? ? (7)可視性和可控制性有限:嵌入式系統通常沒有顯示設備和鍵盤,這將導致開發者很難了解系統內部發生了什么,也不能響應系統的動作,有時候不得不通過觀察微處理器的信號來了解。在實時系統中,一般無法為了觀察而讓系統停機。

? ? (8)開發環境受限:嵌入式系統的開發環境,如開發軟件、硬件工具通常比通用計算機或工作站上的可用環境更為有限,故只能采用交叉式開發,給開發進度帶來很大影響。

?

2 ??開發模型與設計流程

? ??與通用系統的開發類似,嵌入式系統的開發也可以采用軟件工程中常見的開發模型,主要包括瀑布模型、螺旋模型、逐步求精模型及層次模型。

? ? 1.常用開發模型

? ? 設計流程是系統設計期間應遵循的一系列步驟,其中一些步驟可以由自動化工具完成,而另外一些只可用手工完成。在嵌入式系統領域,有如下幾種常用開發過程模型。

? ? (1)瀑布模型。瀑布模型由五個主要階段構成:需求分析階段確定目標系統的基本特點;系統結構設計階段將系統的功能分解為主要的構架;編碼階段主要進行程序的編寫和調試;測試階段檢測錯誤;最后一個是維護階段,主要負責修改代碼以適應環境的變化,并改正錯誤、升級。各個階段的工作和信息總是由高級的抽象到較詳細的設計步驟單向流動,是一個理想的自頂向下的設計模型。

? ? (2)螺旋模型。螺旋模型假定要建立系統的多個版本,早期的版本是一個簡單的試驗模型,用于幫助設計者建立對系統的直覺和積累開發此系統的經驗,隨著設計的進展,會創建更加復雜的系統。在每一層設計中,設計者都會經過需求分析、結構設計、測試三個階段。在后期,當構成更復雜的系統版本時,每一個階段都會有更多的工作,并需要擴大設計的螺旋,這種逐步求精的方法使設計者可以通過一系列的設計循環加深對所開發的系統的理解。螺旋的頂部第一個循環是很小很短的,而螺旋底部的最后的循環加入了對螺旋模型的早期循環的細節補充,螺旋模型比瀑布模型更加符合實際。

? ? (3)逐步求精模型。逐步求精模型是一個系統被建立多次,第一個系統被作為原型,其后逐個將系統進一步求精。當設計者對正在建造的系統的應用領域不是很熟悉時,這個方法很有意義。通過建造幾個越來越復雜的系統,從而精煉系統,使設計者能檢驗架構和設計技術。此外,各種迭代技術也可僅被局部完成,直到系統最終完成。

? ? (4)層次模型。許多嵌入式系統本身是由更多的小設計組成的,完整的系統可能需要各種軟件構件、硬件構件。這些部件可能由尚需設計的更小部件組成,因此從最初的完整系統設計到為個別部件的設計,設計的流程隨著系統的抽象層次的變化而變化,從最高抽象層次的整體設計到中間抽象層次的詳細設計,再到每個具體模塊的設計,都是逐層展開的,其中每個流程可能由單個設計人員或設計小組來承擔,每個小組依靠其他小組的結果,各個小組從上級小組獲得要求,同時上級小組依賴于各個分組設計的質量和性能。而且,流程的每個實現階段都是一個從規格說明到測試的完整流程。

? ? 2.嵌入式系統的設計方法

? ? 一個良好的嵌入式系統設計方法是十分重要的,這是因為:

? ? (1)良好的設計方法可以使設計者清楚地了解他們所做工作的進度,這樣可以確保不遺漏其中的任何一項工作。

? ? (2)允許使用計算機輔助工具幫助設計者進行工作,將整個過程分成幾個可控的步驟進行。

? ? (3)良好的設計方法方便設計團隊的成員之間相互交流,通過定義全面的設計過程,使團隊里的每個成員可以很好地理解他們所要做的工作及完成分配給他們的任務時所達到的目標。

? ? 嵌入式系統軟件的開發過程可以分為項目計劃、可行性分析、需求分析、概要設計、詳細設計、程序建立、下載、調試、固化、測試及運行等幾個階段。

? ? 項目計劃、可行性分析、需求分析、概要設計及詳細設計等幾個階段,與通用軟件的開發過程基本一致,都可按照軟件工程方法進行,如采用原型化方法、結構化方法等。

? ??由于嵌入式軟件的運行和開發環境不同,開發工作是交叉進行的,所以每一步都要考慮到這一點。

程序建立階段的工作是根據詳細設計階段產生的文檔進行的。這一階段的工作主要是源代碼編寫、編譯、鏈接等幾個子過程,這些工作都是在宿主機進行的,不需要用到目標機。

? ? 產生應用程序的可執行文件后,就要用到交叉開發環境進行調試,根據實際情況可以選用可用的幾種調試方法之一或它們的有效組合來進行。

? ? 嵌入式系統設計不同于傳統的軟件設計,如圖?12-11?所示。經常包含硬件設計和軟件設計,其中前端活動,如規格說明和系統架構,需要同時考慮硬件和軟件兩個方面。

? ? 類似的,后端設計,如系統集成和測試要考慮整個系統。在中間階段中,軟件和硬件構件的開發彼此相互獨立,并且大多數的硬件和軟件的工作能夠相對獨立地進行。最后,要將經調試后正確無誤的可執行程序固化到目標機上。根據嵌入式系統硬件上配置的不同,固化有幾種方式,可以固化在?EPROM?和?FLASH?等存儲器中,也可固化在?DOC?和?DOM?等電子盤中。通常還要借助一些專用編程器進行。

? ? 由于嵌入式系統對安全性和可靠性的要求比通用計算機系統要高,所以在對嵌入式系統進行白盒測試時,要求有更高的代碼覆蓋率。

? ? 在系統開發流程的各個階段,分別要進行系統的確認和性能評估、安全性評估及風險性評價,并對系統的實現進行測試驗證。

?

3?嵌入式系統設計的核心技術

? ??嵌入式系統的開發是軟、硬件綜合開發,與通用系統的開發存在巨大差異,一方面是因為每個嵌入式系統都是一個軟硬件的結合體;另一方面,嵌入式系統一旦研制完成,軟件便隨著硬件固化到產品中,具有很強的專用性。在這些特點的影響下,必然要有一種不同于通用軟件開發過程的工程方法學來支持嵌入式系統的開發過程,同時,這些特點也決定了嵌入式系統開發所采用的獨特的核心技術。

? ? 總體來看,在嵌入式開發領域,主要有三種核心技術:處理器技術、IC?技術、設計/?驗證技術。

? ? 1.處理器技術

? ? 處理器技術與實現系統功能的計算引擎結構有關,很多不可編程的數字系統也可以視為處理器,這些處理器的差別在于其面向特定功能的專用化程度,導致其設計指標與其他處理器不同。

? ? (1)通用處理器。這類處理器可用于不同類型的應用,一個重要的特征就是存儲程序,由于設計者不知道處理器將會運行何種運算,所以無法用數字電路建立程序。另一個特征就是通用的數據路徑,為了處理各類不同的計算,數據路徑是通用的,其數據路徑一般有大量的寄存器及一個或多個通用的算術邏輯單元。設計者只需要對處理器的存儲器編程來執行所需的功能,即設計相關的軟件。

? ? 在嵌入式系統中使用通用處理器具有設計指標上的一些優勢。上市時間和?NRE?成本較低,因為設計者只需編寫程序,而不需做任何數字設計,靈活性高,功能的改變通過修改程序進行即可。與自行設計處理器相比,數量少時單位成本較低。

? ? 當然,這種方式也有一些設計指標上的缺陷,數量大時單位成本相對較高,因為數量大時,自行設計的?NRE?成本分攤下來,可降低單位成本。同時,對于某些應用,性能可能很差。由于包含了非必要的處理器硬件,系統的體積和功耗可能變大。

? ? (2)單用途處理器。單用途處理器是設計用于執行特定程序的數字電路,也指協處理器、加速器、外設等。如?JPEG?編碼解碼器執行單一程序,壓縮或解壓視頻信息。嵌入式系統設計者可通過設計特定的數字電路來建立單用途的處理器。設計者也可以采用預先設計好的商品化的單用途處理器。

? ? 在嵌入式系統中使用單用途處理器,在指標上有一些優缺點。這些優缺點與通用處理器基本相反,性能可能更好,體積與功率可能較小,數量大時單位成本可能較低,而設計時間與?NRE?成本可能較高,靈活性較差,數量小時單位成本較高,對于某些應用,性能不如通用處理器。

? ? (3)專用處理器。專用指令集處理器是一個可編程處理器,針對某一特定類型的應用進行最優化。這類特定應用具有相同的特征,如嵌入式控制、數字信號處理等。在嵌入式系統中使用專用處理器可以在保證良好的性能、功率和大小的情況下,提供更大的靈活性,但這類處理器仍需要昂貴的成本建立處理器本身和編譯器。單片機和數字信號處理器是兩類應用廣泛的專用處理器,數字信號處理器是一種針對數字信號進行常見運算的微處理器,而單片機是一種針對嵌入式控制應用進行最佳化的微處理器。

? ? 2.IC?技術?

? ? 從系統的集成電路設計描述得到實際芯片的物理映射過程的實現技術便是?IC(Integrated Circuits,集成電路)技術,當前在半導體領域的三類實現技術,即全定制、半定制和可編程技術均可應用于嵌入式系統的硬件設計。

? ? (1)全定制/VLSI(Very Large Scale Integrated Circuites,超大規模集成電路)。在全定制?IC?技術中,需要根據特定的嵌入式系統的數字實現來優化各層設計人員從晶體管的版圖尺寸、位置、連線開始設計以達到芯片面積利用率高、速度快、功耗低的最優化性能。利用掩膜在制造廠生產實際芯片,全定制的?IC?設計也常稱為?VLSI,具有很高的?NRE?成本、很長的制造時間,適用于大量或對性能要求嚴格的應用。

? ? (2)半定制/ASIC(Application Specific Integrated Circuit,專用集成電路)。半定制ASIC是一種約束型設計方法,包括門陣列設計法和標準單元設計法。它是在芯片制作好一些具有通用性的單元元件和元件組的半成品硬件,設計者僅需要考慮電路的邏輯功能和各功能模塊之間的合理連接即可。這種設計方法靈活方便、性價比高,縮短了設計周期,提高了

成品率。

? ? (3)可編程/ASIC。可編程器件中所有各層都已經存在,設計完成后,在實驗室里即可燒制出設計的芯片,不需要?IC?廠家參與,開發周期顯著縮短。可編程?ASIC?具有較低的?NRE?成本,單位成本較高,功耗較大,速度較慢。

? ? 3.設計/驗證技術

? ? 嵌入式系統的設計技術主要包括硬件設計技術和軟件設計技術兩大類。其中,硬件設計領域的技術主要包括芯片級設計技術和電路板級設計技術兩個方面。

? ? 芯片級設計技術的核心是編譯/綜合、庫/IP(Intellectual ?Property,知識產權)、測試/?驗證。編譯/綜合技術使設計者用抽象的方式描述所需的功能,并自動分析和插入實現細節。庫/IP?技術將預先設計好的低抽象級實現用于高級抽象。測試/驗證技術確保每級功能正確,減少各級之間反復設計的成本。

? ? 軟件設計技術的核心是軟件語言。軟件語言經歷了從低級語言(機器語言、匯編語言)到高級語言(例如,結構化設計語言、面向對象設計語言)的發展歷程,推動其發展的是匯編技術、分析技術、編譯/解釋技術等諸多相關技術。軟件語言的級別也從實現級、設計級、功能級逐漸向需求級語言發展過渡。

? ? 早期,隨著通用處理器概念的逐漸形成,軟件技術迅速發展,軟件的復雜度也開始增加,軟件設計和硬件設計的技術和領域完全分開。設計技術和工具在這兩個領域同步得到發展,也使得行為描述可以在越來越抽象的級別上進行,以適應設計復雜度不斷增長的需要。這種同步發展如今又使得這兩個領域都使用同樣的時序模型來描述行為,因而這兩個領域即將可能再度統一為一個領域。

? ? 鑒于大多數嵌入式系統都是實時的反應式系統,反應式系統具有多任務并發、時間約束嚴格與可靠性高的特點,針對反應式系統的設計和描述,人們相繼提出了多種描述語言和驗證方法學。例如,采用時序邏輯用來刻畫反應式系統的性質及推理反應式系統的行為,采用模型檢驗技術驗證反應式系統設計的正確性等,這些技術已逐步在嵌入式開發過程中發揮著重要的作用。

?

4?嵌入式開發設計環境

? ??嵌入式系統的開發環境種類很多,大體可以把它們分為如下幾類:

? ? (1)與嵌入式操作系統配套的開發環境,屬于這一類的開發環境較多,如?PalmOS、THOS、VxWorks、Windows CE?等商業嵌入式操作系統都有與其配套的功能齊全的開發環境。

? ? (2)與處理器芯片配套的開發環境。這類開發環境一般由處理器廠商提供,如EPSON公司推出的一個專門為基于?S1C33?系列微控制器芯片的嵌入式系統開發的工具包便是這一類型的開發環境。

? ? (3)與具體應用平臺配套的開發環境。這類開發環境針對性較強,如高通公司的?Brew SDK?等。

? ? (4)其他類的開發環境。這類開發環境主要指一些嵌入式系統供應商在?GNU?開源工具的基礎上開發或定制的較為通用的開發環境。這類工具可以免費獲得,而且支持的處理器類型繁多,功能齊全,但在技術支持方面比專業化商業工具略遜一些。

?

5?嵌入式軟件設計模型

? ??隨著嵌入式系統的功能日益復雜,要描述這些功能復雜的系統的行為也越來越困難,實踐證明通過采用計算模型的方法來對系統進行描述和分析是一種具有工程價值的方法。

? ? 本節介紹幾種嵌入式領域常用的計算模型,并從計算模型的角度分析和闡述嵌入式應用設計和開發的相關問題。計算模型提供一組用簡單對象來組合復雜行為的方法,可以幫助設計者理解和描述系統行為。嵌入式系統常用的計算模型有如下幾種:時序計算模型、通信進程模型、狀態機模型、數據流模型、面向對象模型、并發進程模型。

? ? 這些模型分別在不同的應用領域使用,如狀態機模型特別適合描述以控制為主的系統,數據流模型可以很好地描述數據處理和轉換問題。目前使用最廣泛的是并發進程模型。

? ? 1.狀態機模型

? ??有限狀態機(Finite-State Machine,FSM)是一個基本的狀態模型,可以用一組可能的狀態來描述系統的行為,系統在任何時刻只能處于其中一個狀態,也可以描述由輸入確定的狀態轉移,最后可以描述在某個狀態下或狀態轉移期間可能發生的操作。

? ?有限狀態機?FSM?是一個六元組?F<S,I,O,F,H,S0>,其中?S?是一個狀態集合{s0,?s1,…,sl},I?是輸入集合{I0,I1,…,Im},O?是輸出集合{o0,o1,…,on},F?是次態函數或轉移函數,將狀態和輸入映射到狀態(S×I→S),H?是輸出函數,將狀態映射到輸出?(S→O),S0?是初始狀態。

? ?圖?12-12?是電梯的控制單元的狀態機描述。在初始“空閑”態,將?up?和?down?設置為?0,open?設置為?1。在所請求的樓層不同于當前樓層之前,狀態機一直停留在“空閑”狀態。如果所請求的樓層大于當前樓層,則狀態機轉移到“上升”狀態,并將?up?設置為?1。如果所請求的樓層小于當前樓層,則狀態機轉移到“下降”狀態,并將?down?設置為?1。在當前樓層等于所請求的樓層之前,狀態機一直留在“下降”或“上升”狀態,然后狀態轉移到“開門”狀態,并將?open?設置為1。通常,系統有一個計時器?timer,因此,當狀態機轉移到“開門”狀態時,還要將計時器啟動,狀態機停留在“開門”態,直到計時器超時,最后轉移到“空閑”態。

?

? ? 當?FSM?被用于嵌入式系統設計時,其輸入和輸出的數據類型都是布爾類型,而函數表示含有布爾運算的布爾函數,這種模型對于沒有數據輸入或輸出的很多純控制系統而言已經足夠。如果要處理數據,則將?FSM?擴展為帶有數據路徑的狀態機(FSM with Datapath,?FSMD)。另外,對狀態機模型可以進一步擴展以支持分級和并發,這種模型稱為分級/并發FSM(Hierarchical/Concurrent FSM,HCFSM)模型。

? ? 2.數據流模型

? ? 數據流模型是并發多任務模型派生出的一種模型,該模型將系統的行為描述為一組結點和邊,其中結點表示變換,邊表示從一個結點到另一個結點的數據流向。每個結點使用來自其輸入邊的數據,執行變換并在其輸出邊上產生數據。

? ? 每條邊可能有或沒有數據,出現在邊上的數據稱為令牌,當某個結點的所有輸入邊都至少有一個令牌時,該結點可觸發。結點觸發后,將使用來自每條輸入邊的一個令牌,對所有使用的令牌進行數據變換,并在輸出邊上產生一個令牌,結點的觸發僅決定于令牌出現的情況。

? ? 圖?12-13?所示是計算?z=(a+b)×(c-d)的數據流模型。

? ? 目前,已有若干商業化的工具支持用圖形化語言表達數據流模型,這些工具可以自動將數據流模型轉換為并發多任務模型,以便在微處理器上實現。其轉換方法為將每個結點轉換為一個任務,每條邊轉換為一個通道,其中并發多任務模型的實現方法是使用實時操作系統對并發任務進行映射。

? ? 圖?12-14?是一個同步數據流模型,這個模型中,在結點的每條輸入邊和輸出邊上分別標注每次觸發所使用和產生的令牌數。該模型的優點是,在實現時不需要將其轉換為并發多任務模型,而是用靜態方式調度結點,產生時序程序模型。該模型可以使用時序程序語言(如?C?語言)來表達,不需要實時操作系統就可以執行,因此其執行效率更高。

?

? ? 3.并發進程模型

? ?并發進程模型是由一組進程構成,每個進程是一個順序執行的過程,各進程間可以并發執行。并發進程模型提供創建、終止、暫停、恢復和連接進程的操作。進程在執行中可以相互通信,交換數據。進程間通信可以采用兩種方式:共享變量和消息傳遞。信號量、臨界區、管程和路徑表達式等用來對并發進程的操作進行同步。

? ? 通常,實時系統可以看成是由許多并發執行的進程構成的系統,其中每個進程都有時間要求。這樣,很多嵌入式系統更容易用一組并發執行的任務來描述,因為這些系統本身就是多任務系統,并發進程模型便自然地可以由實時操作系統的多任務來實現。

? ? 4.面向對象模型

? ? 傳統的并發進程模型是圍繞進程的概念進行設計的,進程是一個實現級的概念,它是對客觀世界活動的一種間接模擬,因此,采用進程模型來解決客觀世界中的并發問題就顯得極不自然,并且也使得并發程序難以設計和理解。

? ? 面向對象模型以一種更加直接的方式刻畫客觀世界中的活動,模型中存在著潛在的并發執行能力。一個對象向另一個對象發送消息后,若不需要或不立即需要消息的處理結果,前者不必等待后者處理消息,消息發送者和消息接受者可以并發執行。對象不都是處于被動的提供服務狀態,它們中的一些除了能通過接收消息向外提供服務外,還可以有自己的事務處理。一個對象往往可以同時處理多個消息。

? ?對象是數據和操作的封裝體,數據存放在對象的局部變量中,對象的狀態由對象所有的局部變量在某一時刻的取值來表示。在并發環境中,還要考慮對象并發狀態的描述問題,因為對象的并發控制是根據對象的并發狀態來進行的。

? ?把并發與面向對象相結合,歸結起來可分為兩條途徑:

? ? (1)在面向對象模型中引進并發機制,充分利用面向對象技術刻畫客觀世界的良好模型能力和面向對象的各個重要特性,同時把其潛在的并發能力描述出來,使其適合于描述并發計算。

? ? (2)在傳統并發模型中引進面向對象思想。

? ? 面向對象的并發模型可以分為兩種類型:隱式并發模型和顯式并發模型。

? ? (1)隱式并發模型。這種模型的特點是推遲并發設計,將對象建模作為建模基礎。在進入運行階段之前,將對象看成自主單元,各種對象的活動看成理想并發方式完成的特定工作。就像每個對象擁有一個自己的處理器,這個處理器可以為對象提供一個執行線程。進入系統的外部事件被看成一個處理請求,以廣播方式傳給一些對象,這些對象接著向其他對象進一步提出處理請求。理論上,對應一個請求,可以有任意多個對象執行相應的處理。在實現時,由調度程序最終決定其對象的操作順序,如圖?12-15?所示。

? ?(2)顯式并發模型。這種模型的特點是首先考慮并發,應先把并發概念和對象概念分開。在建立對象以后,用實時操作系統支持的進程概念來表示并發,形成對象和進程兩個抽象層次,即先將系統分解為準并發進程作為開始,而在每個進程的內部采用面向對象的技術。對象間交互表示成嵌套的函數調用,通過加入鎖、監視器、信號量等顯式同步機制,來保證對象的完整。該模型將進程置于對象之上,對象中不必考慮并發、對象串行化,如圖?12-16?所示。

?

?

? ? 早期,實時系統的設計方法主要是結構化設計方法,采用結構化方法的系統在復用性、可修改性等方面有很大的局限性。面向對象的實時系統設計方法顯然在這些問題上具有明顯的優勢。較實用的面向對象的設計方法是諾基亞公司的?OCTOPUS?方法,該方法以?OMT?和融合方法(Fusion Method)為基礎,提出了對實時系統響應時間、時間域及并發的處理方法,并具體提出了對并發、同步、通信、中斷處理、ASIC、硬件界面、端對端響應時間等方面的處理。OCTOPUS?方法將軟件開發的主要階段很好地合并起來,從規格說明到運行模型之間的過渡緊密自然,還支持漸進式開發。OCTOPUS?方法是當前面向對象技術和實時系統相結合的一個典型的設計方法。另外,形式化的面向對象的開發技術和建模語言也逐漸在實時系統建模的初始階段得到應用。

6?需求分析?

? ? 在設計之前,設計者必須知道要設計什么。通常人們用需求和規格說明來描述設計過程的這兩個相關而不同的步驟。需求是用戶所想要的非形式化的描述,而規格說明是可以用來創建系統架構的更詳盡、更精確、更一致的描述。當然,需求和規格說明都是指導系統的外部表示,而非內部表示。需求有兩種類型:功能性需求和非功能性需求,功能性需求說明這個系統必須做什么,而非功能性需求說明系統的其他屬性,如物理尺寸、價格、功耗、設計時間、可靠性等。

? ? 對一個大系統進行需求分析是一項復雜而費時的工作,但是,獲取少量格式清晰、簡單明了的信息是理解系統需求的一個良好開端。表 12-5 是在某項工程開始時填寫的需求表 格,在考慮系統的基本特征時可將該表格作為檢查表。

? ? 這份需求表格內容是以?GPS(Global Position System,移動地圖系統)為例編寫的。移動地圖系統是一種手持設備,針對在高速公路開車的用戶或類似的用戶而設計,該設備可從?GPS?上得到位置信息,為用戶顯示當前所在的位置及周圍的地形圖,地圖的內容隨著用戶及設備所在位置的改變而改變。

? ? 需求分析階段最重要的文檔輸出就是系統的規格說明。

? ? 規格說明是精確反映客戶需求并且作為設計時必須遵循的要求的一種技術文檔。在軟件開發的過程中,規格說明非常重要。系統分析人員接受用戶需求產生目標軟件系統的規格說明,設計與編碼人員根據規格說明,進行模塊設計并最終產生程序代碼,測試和驗收人員驗證最終軟件是否符合規格說明。規格說明應該是清晰的、無歧義的,否則由該規格說明建造系統可能不符合實際要求。

? ?目前,業界較為流行的方法是采用?UML?進行規格說明的描述。UML?是一個通用的標準建模語言,可以對任何具有靜態結構和動態行為的系統進行建模。UML?適用于系統開發過程中從需求規格描述到系統完成后測試的不同階段。

? ? 圖?12-17?是一個顯示操作的狀態機規格說明示例,開始和結束是特殊的狀態,狀態機中的狀態代表了不同的概念性操作。

? ? 在需求分析階段,通過用例來捕獲用戶需求。通過用例建模,描述對系統感興趣的外部角色及其對系統(用例)的功能要求。分析階段主要關心問題域中的主要概念(如抽象、類和對象等)和機制,需要識別這些類及它們相互間的關系,并用?UML?類圖來描述。在分析階段,只對問題域的對象(現實世界的概念)建模,而不考慮定義軟件系統中技術細節的類(如處理用戶接口、數據庫、通信和并行性等問題的類)。

7 系統設計

? ??目前,嵌入式系統的設計工具可以分為兩類:協同合成工具和協同模擬工具。

? ? (1)協同合成工具。當前,用于嵌入式開發的主要的協同合成工具有?POLIS、COSYMA和Chinook?等。

  • POLIS:POLIS?是?UC-Berkeley?開發的交互式嵌入式系統的軟、硬件協同設計框架,它適用于小型控制系統的設計,系統描述支持基于?FSM(Finite State Machine)的語言。由于軟、硬件均可透明地從同一?CFSM?描述中取得,設計空間的靈活性也相應增加,支持使用?PTOLEMY?的協同模擬,在描述及實現層均支持正式的驗證,架構的支持受限,即硬件?CFSMs?所包圍的只有一個處理器,而且不支持共享內存。

  • COSYMA:COSYMA?是由德國?IDA?公司開發的一種探索硬件與軟件協同設計合成進程的平臺,它面向軟件系統的描述較簡單,支持自動分割和協同處理器合成,在合成時期可以對設計空間進行探索,系統合成取決于硬件限制,不支持并發模塊,即一次只能有一個線程執行,架構同樣受限,不支持正式驗證,設計的成功與否取決于分割及開銷估計技術。

  • Chinook:Chinook?是為控制系統而設計的,整個系統的描述作為一個輸入提供給?Chinook,它的內部模式基于類似等級狀態的模式,它不對代碼進行分割,它為整個設計提供單一的模擬環境,Chinook?支持多種系統架構,尤其是多處理器結構。同樣支持定時限制的描述,它能合成多種接口,包括系統之間的軟、硬件接口,能直接從定時圖表中合成設備驅動器,可以控制處理器之間的通信。

? ? (2)協同模擬工具。協同模擬是嵌入式系統設計中至關重要的一個方面,在整個系統設計完成后,在統一框架下模擬不同種類的成分是必要的,協同模擬不僅提供檢驗,而且為用戶提供各系統的性能信息,這有助于在系統的早期提出變更方案,不至于造成重大損失。目前,主要的協同模擬工具有如下兩種。

  • PTOLEMY:PTOLEMY?的關鍵思想是混合使用面向對象內核的計算模型,可用于模擬多種的系統,在各種應用中被廣泛地使用,但不適合于系統合成,硬件模擬也是它的一項功能。

  • TSS:TSS(Tool for System Simulation)是模擬復雜硬件的工具,采用?C?語言編寫,單個模塊的提取可由用戶控制,可以方便地進行添加與刪除模塊。但不支持分級模塊,沒有用于同步各處理器存取共享數據結構的機制,模塊間的通信通過端口和總線進行。并且,TSS?支持多核系統的模擬。

? ? 1.系統架構設計

? ? 描述系統如何實現規格說明中定義的功能是系統架構設計的主要目的。但是在設計嵌入式系統的系統結構時,很難將軟件和硬件完全分開。通常的處理是先考慮系統的軟件架構,然后再考慮其硬件實現。系統結構的描述必須符合功能上和非功能上的需求。不僅所要求的功能要體現,而且成本、速度、功耗等非功能約束也要滿足。從系統原始框圖中的功能元素開始逐個考慮和細化,把原始框圖轉化為軟件和硬件系統結構的同時考慮非功能約束,是一個切實可行的方法。下面以?GPS?移動地圖系統的架構設計為例進行說明。

? ? (1)原始框圖。如圖?12-18?所示,這個原始框圖是移動地圖系統的主要操作和數據流。

?

?

? ? (2)軟件系統架構。如圖?12-19?所示,軟件系統主要由用戶界面、數據庫搜索引擎和數據轉換器組成。

? ? (3)硬件系統架構。如圖?12-20?所示,硬件系統采用通用微處理器、存儲器和?I/O?設備組成。本系統選用兩種存儲器:通用數據、程序存儲器和針對像素顯示的幀緩沖存儲器。

? ? 2.硬件子系統設計

? ??嵌入式系統的開發環境由?4?部分組成:目標硬件平臺、嵌入式操作系統、編程語言和開發工具,其中處理器和操作系統的選擇應當考慮更多的因素,避免錯誤的決策影響項目的進度。

? ? (1)選擇處理器技術。嵌入式系統設計的主要挑戰是如何使互相競爭的設計指標同時達到最佳化。設計者必須對各種處理器技術和?IC?技術的優缺點加以取舍。一般而言,處理器技術與?IC?技術無關,也就是說,任何處理器技術都可以使用任何?IC?技術來實現,但是最終器件的性能、NRE?成本、功耗、大小等指標會有很大的差異,如圖?12-21?所示。

? ? 更通用的可編程技術提供了較大的靈活性,降低了?NRE?成本,建立產品樣機與上市的時間較快。定制的技術能夠提供較低的功耗、較好的性能、更小的體積和大批量生產時的低成本。

? ? 通常,一個公司要推出一種產品,如機頂盒、家庭路由器或通用處理器等,可以先推出半定制產品,以盡快占領市場,然后再推出全定制的產品。也可先用較可靠的老技術實現處理器,再用新制程的技術實現下一代。同樣,嵌入式系統的設計者可以使用可編程的器件來建立樣機,以加速上市時間,批量時再采用定制器件。

? ? 根據這些原則,設計者便可以對采用的處理器技術和處理器做出合理選擇。一般,全定制商品化的“通用處理器?軟件”是大多數情況下都適用的一個選擇。

? ? (2)通用嵌入式處理器的選擇。根據用戶的需求和項目的需要選擇合適的通用嵌入式處理器,選擇時需要考慮如下指標。

  • 處理器的速度。一個處理器的性能取決于多個方面的因素:時鐘頻率,內部寄存器的大小,指令是否對等處理所有的寄存器等。對于許多需用處理器的嵌入式系統設計來說,目標不是在于挑選速度最快的處理器,而是在于選取能夠完成作業的處理器和?I/O?子系統。處理器的性能滿足系統的需求,并有一定的余量,但也不必選得太高。

  • 技術指標。當前,許多嵌入式處理器都集成了外圍設備的功能,從而減少了芯片的數量,進而降低了整個系統的開發費用。開發人員首先考慮的是,系統所要求的一些硬件能否無須過多的組合邏輯就可以連接到處理器上。其次是考慮該處理器的一些支持芯片,如?DMA?控制器、內存管理器、中斷控制器、串行設備、時鐘等的配套。

  • 開發人員對處理器的熟悉程度,即項目的開發人員需要在處理器本身的成本和開發成本之間做一個權衡。

  • 處理器的?I/O?功能是否滿足系統的需求,即許多處理器提供內置的外部設備,以減少芯片數量、降低成本,應盡量考慮這種方案。

  • 處理器的相關軟件支持工具,即該款處理器是否具有完善的嵌入式操作系統、編程語言和開發工具的支持等。

  • 處理器的調試,即處理器是否集成了調試功能,如是否支持?JTAG、BDM?等調試方式。

  • 處理器制造商的支持可信度。在產品的生命周期里選擇某種處理器時,設計者必須確認它有足夠的供貨量、技術支持等處理器的低功耗。

? ? 嵌入式微處理器最大并且增長最快的市場是手持設備、電子記事本、PDA、手機、GPS?導航器、智能家電等消費類電子產品,這些產品中選購的微處理器的典型特點是要求高性能、低功耗。許多?CPU?生產廠家已經進入了這個領域。

? ? (3)硬件設計的注意事項。首先,將硬件劃分為部件或模塊,并繪制部件或模塊連接框圖。其次,對每個模塊進行細化,把系統分成更多個可管理的小塊,可以被單獨實現。通常,系統的某些功能既可用軟件實現也可用硬件實現,沒有一個統一的方法指導設計者決定功能的軟硬件分配,但是可以根據約束清單,在性能和成本之間進行權衡。

? ? 設計軟、硬件之間的接口時,需要硬件設計者和軟件設計者協同工作才能完成,良好的接口設計可以保證硬件簡潔、易于編程。

? ?設計時需要注意以下幾點。

  • I/O?端口:列出硬件的所有端口、端口地址、端口屬性、使用的命令和序列的意義、端口的狀態及意義。

  • 硬件寄存器:對每個寄存器設計寄存器的地址、寄存器的位地址和每個位表示的意義,以及對寄存器讀寫的說明、使用該寄存器的要求和時序說明。

  • 內存映射:共享內存和內存映射?I/O?的地址,對每個內存映射,說明每個?I/O?操作的讀/寫序列、地址分配。

  • 硬件中斷:如何使用硬件中斷,列出所使用的硬件中斷號和分配的硬件事件。

  • 存儲器空間分配:列出系統中程序和數據占用的空間大小、位置,以及存儲器類型和訪問方式等。

? ? 總之,硬件設計者應該給軟件設計者更多、更詳細的信息,以便于進行軟件設計和開發。

? ? 3.軟件子系統設計

? ? 根據需求分析階段的規格說明文檔,確定系統計算模型,對軟件部分進行合理的設計即可。

? ? (1)操作系統的選擇。在選擇嵌入式操作系統時,需要做多方面的考慮:

  • 操作系統的功能。根據項目需要的操作系統功能來選擇操作系統產品,要考慮系統是否支持操作系統的全部功能或部分功能,是否支持文件系統、人機界面,是實時系統還是分時系統及系統是否可裁減等因素。

  • 配套開發工具的選擇。有些實時操作系統(rtos)只支持該系統供應商的開發工具。也就是說,還必須向操作系統供應商獲取編譯器、調試器等。有些操作系統使用廣泛且有第三方工具可用,因此,選擇的余地比較大。

  • 操作系統的移植難易程度。操作系統到硬件的移植是一個重要的問題。它是關系到整個系統能否按期完工的一個關鍵因素,因此要選擇那些可移植性程度高的操作系統,從而避免操作系統難以向硬件移植而帶來的種種困難,加速系統的開發進度。

  • 操作系統的內存需求如何。均衡考慮是否需要額外?ram?或?eeprom?來迎合操作系統對內存的較大要求。有些操作系統對內存的要求是與目標相關的。如?tornado/vxworks,開發人員能按照應用需求分配所需的資源,而不是為操作系統分配資源。從需要幾?k?字節存儲區的嵌入設計到需求更多的操作系統功能的復雜的高端實時應用,開發人員可任意選擇多達?80?種不同的配置。

  • 操作系統附加軟件包。是否包含所需的軟件部件,如網絡協議棧、文件系統、各種常用外設的驅動等。

  • 操作系統的實時性如何。實時性分為軟實時和硬實時。有些嵌入式操作系統只能提供軟實時性能,如?microsoft windows ce 2.0?是?32?位,windows?兼容,微內核,可伸縮實時操作系統,可以滿足大部分嵌入式和非嵌入式應用的需要。但實時性不夠強,屬于軟實時嵌入式操作系統。

  • 操作系統的靈活性如何。操作系統是否具有可剪裁性,即能否根據實際需要進行系統功能的剪裁。有些操作系統具有較強的可剪裁性,如嵌入式?linux?、?tornado/vxworks?等。

? ? (2)編程語言的選擇。在選擇編程語言時,也需要做多方面的考慮:

  • 通用性。隨著微處理器技術的不斷發展,其功能越來越專用,種類越來越多,但不同種類的微處理器都有自己專用的匯編語言。這就為系統開發者設置了一個巨大的障礙,使得系統編程更加困難,軟件重用無法實現,而高級語言一般和具體機器的硬件結構聯系較少,比較流行的高級語言對多數微處理器都有良好的支持,通用性較好。

  • 可移植性。由于匯編語言和具體的微處理器密切相關,為某個微處理器設計的程序不能直接移植到另一個不同種類的微處理器上使用,因此,移植性差。高級語言對所有微處理器都是通用的,因此,程序可以在不同的微處理器上運行,可移植性較好。這是實現軟件重用的基礎。

  • 執行效率。一般來說,越是高級的語言,其編譯器和開銷就越大,應用程序也就越大、越慢。但單純依靠低級語言,如匯編語言來進行應用程序的開發,帶來的問題是編程復雜、開發周期長。因此,存在一個開發時間和運行性能之間的權衡。

  • 可維護性。低級語言如匯編語言,可維護性不高。高級語言程序往往是模塊化設計,各個模塊之間的接口是固定的。因此,當系統出現問題時,可以很快地將問題定位到某個模塊內,并盡快得到解決。另外,模塊化設計也便于系統功能的擴充和升級。

  • 基本性能。在嵌入式系統開發過程中使用的語言種類很多,比較廣泛應用的高級語言有?Ada、C/C++、Modula-2?和?Java?等。Ada?語言定義嚴格,易讀易懂,有較豐富的庫程序支持,目前,在國防、航空、航天等相關領域應用比較廣泛,未來仍將在這些領域占有重要地位。C?語言具有廣泛的庫程序支持,是嵌入式系統中應用最廣泛的編程語言,在將來很長一段時間內仍將在嵌入式系統應用領域中占重要地位。?C++是一種面向對象的編程語言,在嵌入式系統設計中也得到了廣泛的應用,如?GNU C++。Visual C++是一種集成開發環境,支持可視化編程,廣泛應用于?GUI?程序開發。但?C?與?C++相比,C++的目標代碼往往比較龐大和復雜,在嵌入式系統應用中應充分考慮這一因素。

? ? (3)軟件開發過程。嵌入式軟件的開發過程不同于一般通用軟件的開發過程,主要有如下步驟:

  • 選擇開發語言,建立交叉開發環境;

  • 根據詳細設計說明編寫源代碼,進行交叉編譯、鏈接;

  • 目標代碼的重定位和下載;

  • 在宿主機或目標機調試、驗證軟件功能;

  • 進行代碼的優化。

? ? (4)軟件開發文檔。在嵌入式產品的開發設計過程中,開發階段完成系統產品的實現,這一階段同時需要完成一系列的文檔,這些文檔對完成產品設計、維護相當重要,這些文檔分別為技術文件目錄、技術任務書、技術方案報告、產品規格、技術條件、設計說明書、試驗報告、總結報告等。

?

8?系統集成與測試

? ??通常嵌入式系統測試主要包括軟件測試、硬件測試、單元測試三個部分。

? ? 一般系統的硬件測試包括可靠性測試和電磁兼容性測試,關于電磁兼容性目前已經有了強制性國內和國際標準。

? ? 嵌入式系統軟件測試方法和原理跟通用軟件的測試基本一致,軟件測試時,一般需要測試實例或測試序列,序列有兩種來源:一種是需要用戶進行設計,另一種是標準的測試序列。無論哪種測試實例,都要求實例能夠高概率發現更多的錯誤,但在測試的內容上有些差別:

? ? (1)嵌入式軟件必須長時間穩定運行。

? ? (2)嵌入式軟件一般不會頻繁地版本升級。

? ? (3)嵌入式軟件通常使用在關鍵性的應用中。

? ? (4)嵌入式軟件必須和嵌入式硬件一起對產品的故障和可靠性負責。

? ? (5)現實世界的條件是異步和不可預測的,使得模擬測試非常困難。

? ? 由于這些差別,使得嵌入式系統軟件測試主要集中在以下?4?個不同的方面:

? ? (1)因為實時性和同時性很難同時滿足,所以大多數測試集中于實時測試。

? ? (2)大多數實時系統都有資源約束,因此需要更多的性能和可用性測試。

? ? (3)可以使用專用實時跟蹤工具對代碼覆蓋率進行測試。

? ? (4)對可靠性的測試級別比通用軟件要高得多。

? ? 另外,性能測試也是設計嵌入式系統中需要完成的最主要的測試活動之一,對嵌入式系統有決定性的影響。

? ? 由于嵌入式系統的專用性特點,系統的硬件平臺和軟件平臺多種多樣,每種都針對不同的應用而專門設計,因此,應用軟件在各個平臺之間很少具有通用性,并且嵌入式系統的更新換代速度相對較快。為了保護已有的投資、充分利用現有的軟件資源和加快產品研制速度,軟件的移植在嵌入式領域變得非常頻繁。

總結

以上是生活随笔為你收集整理的嵌入式系统开发设计---嵌入式系统开发设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。