版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2.1嵌入式系統(tǒng)的層次結(jié)構(gòu)2.2嵌入式系統(tǒng)的設(shè)計流程2.3嵌入式系統(tǒng)設(shè)計流程模型2.4嵌入式系統(tǒng)的調(diào)試與測試練習(xí)題第2章嵌入式系統(tǒng)的設(shè)計方法
2.1嵌入式系統(tǒng)的層次結(jié)構(gòu)
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),并且軟/硬件可裁減,從而能夠適應(yīng)實(shí)際應(yīng)用中對功能、可靠性、成本、體積和功耗等有嚴(yán)格要求的專用計算機(jī)系統(tǒng)。嵌入式系統(tǒng)的關(guān)鍵技術(shù)包括以應(yīng)用為中心的硬件平臺設(shè)計和面向應(yīng)用的操作系統(tǒng)及軟件產(chǎn)品的開發(fā)。在各種不同的應(yīng)用場合,嵌入式系統(tǒng)的外觀和形式可以是獨(dú)特的、多樣化的,但是通過對其內(nèi)部結(jié)構(gòu)進(jìn)行分析可以知道,嵌入式系統(tǒng)一般是由嵌入式微處理器系統(tǒng)和被控對象所組成的,如圖2-1所示。嵌入式微處理器系統(tǒng)是整個嵌入式系統(tǒng)的核心部分,其總體架構(gòu)分為四層,即硬件層、中間層、軟件層和功能層。被控對象可以接受來自嵌入式微處理器系統(tǒng)發(fā)出的控制命令,以執(zhí)行規(guī)定的操作或任務(wù)。圖2-1嵌入式系統(tǒng)的分層架構(gòu)2.1.1硬件層
嵌入式系統(tǒng)的硬件層是由嵌入式微處理器、外圍電路和外設(shè)終端組成的。一個嵌入式核心控制模塊就是在一片嵌入式微處理器的基礎(chǔ)上增加電源電路、復(fù)位電路、調(diào)試接口及存儲器電路所構(gòu)成的。操作系統(tǒng)以及應(yīng)用程序均可固化在ROM或者Flash中。嵌入式硬件平臺不同于通用的PC硬件平臺,它沒有一個固定的、標(biāo)準(zhǔn)的外形,可能是圓形、方形甚至是三角形的,而且大多體積很小。其外設(shè)接口被充分利用,沒有用到的外設(shè)接口在設(shè)計硬件平臺時被完全刪除。例如,嵌入式智能控制器不需要圖形用戶界面和鍵盤,那么在設(shè)計時可去掉其LCD接口和鍵盤控制器。嵌入式系統(tǒng)硬件層的核心包括嵌入式微處理器和微存儲器,用于提供嵌入式操作系統(tǒng)和功能軟件的運(yùn)行環(huán)境;外設(shè)終端通常都是微小終端,以和嵌入式系統(tǒng)整體體積相匹配。
最初的嵌入式微處理器都是為通用目的而設(shè)計的,隨著微電子技術(shù)的發(fā)展出現(xiàn)了ASIC(ApplicationSpecificIntegratedCircuit,專用集成電路),它是一種為具體任務(wù)而特殊設(shè)計的專用集成電路。采用ASIC可以減少系統(tǒng)軟/硬件設(shè)計的復(fù)雜度,降低系統(tǒng)成本。一些嵌入式微處理器就是利用ASIC來實(shí)現(xiàn)的,但是ASIC前期設(shè)計費(fèi)用很高,而且一旦完成設(shè)計就無法升級擴(kuò)展,因此ASIC可使用在那些產(chǎn)量很大的產(chǎn)品設(shè)計中。
隨著微電子技術(shù)的不斷創(chuàng)新和發(fā)展,大規(guī)模集成電路的集成度和工藝水平不斷提高,集成電路工業(yè)已經(jīng)生產(chǎn)了大量低成本、高可靠性和高精度的微電子結(jié)構(gòu)模塊,它推動了一個全新的技術(shù)領(lǐng)域和產(chǎn)業(yè)的發(fā)展?!癈PU+PLD+模擬器件”的嵌入式硬件設(shè)計模式是目前流行的一種硬件結(jié)構(gòu)。這種結(jié)構(gòu)是由目前集成電路的發(fā)展水平和技術(shù)現(xiàn)狀決定的。嵌入式系統(tǒng)以中央處理單元(CPU)為基礎(chǔ)和中心,外加可編程邏輯器件(PLD)和模擬器件構(gòu)成(特別小型的嵌入式設(shè)計除外)。CPU主要包括嵌入式微處理器和嵌入式微控制器。各種PLD的出現(xiàn)改變了硬件設(shè)計方法,通過改寫PLD,允許在不改變硬件結(jié)構(gòu)的情況下實(shí)現(xiàn)不同的接口和功能,其主要包括PAL、GAL、EPLD、CPLD、FPGA等。這種設(shè)計模式可以大大地簡化嵌入式系統(tǒng)的硬件,設(shè)計更具有靈活性和可擴(kuò)展性,嵌入式系統(tǒng)總體設(shè)計的難度得以降低,而系統(tǒng)總體設(shè)計的水平卻得到了提高。2.1.2中間層
中間層位于嵌入式系統(tǒng)的硬件層和軟件層之間,它包含了系統(tǒng)中與硬件相關(guān)的大部分功能。通過特定的上層接口與操作系統(tǒng)進(jìn)行交互,向操作系統(tǒng)提供底層的硬件信息,并根據(jù)操作系統(tǒng)的要求完成對硬件的直接操作。嵌入式系統(tǒng)由于引入了這個中間層,屏蔽了底層硬件的多樣性,操作系統(tǒng)不再直接面對具體的硬件環(huán)境,而是面向由這個中間層所代表的、邏輯上的硬件環(huán)境。因此,通常把這個中間層叫做硬件抽象層(HardwareAbstractionLayer,HAL)。在目前的嵌入式領(lǐng)域中通常也把它叫做板級支持包(BoardSupportPackage,BSP)。BSP把系統(tǒng)軟件和硬件部分隔離開來,這樣就使得系統(tǒng)的設(shè)備驅(qū)動程序與硬件設(shè)備無關(guān),一般應(yīng)包含相關(guān)硬件的初始化、數(shù)據(jù)的輸入/輸出操作、硬件設(shè)備的配置操作等功能。它的引入大大推動了嵌入式實(shí)時操作系統(tǒng)的通用化,從而為嵌入式系統(tǒng)的廣泛應(yīng)用提供了可能。中間層的提出使通用的嵌入式操作系統(tǒng)及高層的嵌入式應(yīng)用能夠有效地運(yùn)行于特定的、應(yīng)用相關(guān)的硬件環(huán)境之上,使操作系統(tǒng)和應(yīng)用程序能夠控制與操作具體的硬件設(shè)備,完成特定的功能。因此,在絕大多數(shù)的嵌入式系統(tǒng)中,BSP是一個必不可少的層次。由于中間層在系統(tǒng)中的特殊位置,因此其具有以下主要特點(diǎn):
(1)硬件相關(guān)性。因為嵌入式實(shí)時系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,所以作為高層軟件與硬件之間的接口,BSP必須為操作系統(tǒng)提供操作和控制具體硬件的方法。
(2)操作系統(tǒng)相關(guān)性。不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此不同的操作系統(tǒng)具有特定的硬件接口形式。
在實(shí)現(xiàn)上,BSP是一個介于操作系統(tǒng)和底層硬件之間的軟件層次,包括了系統(tǒng)中大部分與硬件相關(guān)的軟件模塊;在功能上,BSP包含兩部分,即系統(tǒng)初始化及與硬件相關(guān)的設(shè)備驅(qū)動。2.1.3軟件層
嵌入式系統(tǒng)的軟件層主要是操作系統(tǒng)。為了使嵌入式系統(tǒng)更加具有生命力,需要有專門負(fù)責(zé)管理存儲器分配、中斷處理、任務(wù)調(diào)度等功能的軟件模塊,這就是嵌入式操作系統(tǒng)。嵌入式操作系統(tǒng)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺,實(shí)際為一段程序,系統(tǒng)復(fù)位后首先執(zhí)行,相當(dāng)于用戶主程序,它是嵌入式系統(tǒng)中重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動程序、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形用戶界面(GUI)等。嵌入式操作系統(tǒng)根據(jù)應(yīng)用場合可以分為兩大類:一類是面向消費(fèi)電子產(chǎn)品的非實(shí)時系統(tǒng)(如WinCE、Linux等),這類設(shè)備包括PDA、移動電話等;另一類則是面向控制、通信、測試和醫(yī)療等領(lǐng)域的實(shí)時操作系統(tǒng)(如VxWorks、RT-Linux等)。操作系統(tǒng)的引入使得嵌入式系統(tǒng)的功能大大提高,方便了應(yīng)用軟件的設(shè)計,但同時也占用了嵌入式系統(tǒng)資源。嵌入式操作系統(tǒng)具有以下特點(diǎn):
(1)可配置性。這是嵌入式系統(tǒng)資源限制的結(jié)果。為了全面支持從低容量內(nèi)存,甚至可能連內(nèi)存管理單元都沒有的低端系統(tǒng)到具有多處理機(jī)的高端系統(tǒng),嵌入式操作系統(tǒng)采用模塊化體系結(jié)構(gòu),即一個實(shí)時內(nèi)核和一堆組件或庫。這樣根據(jù)系統(tǒng)的需求,就可以對嵌入式操作系統(tǒng)進(jìn)行配置。
(2)易移植性。嵌入式操作系統(tǒng)要求適應(yīng)各種CPU體系結(jié)構(gòu),管理多樣化外設(shè),容易移植是必需的。嵌入式操作系統(tǒng)的易移植性是通過采用板級支持包技術(shù)(BSP)或硬件抽象層技術(shù)(HAL)來完成的。板級支持包內(nèi)含片級初始化和設(shè)備驅(qū)動程序,它使嵌入式操作系統(tǒng)與嵌入式系統(tǒng)硬件平臺相分離。當(dāng)微處理器和外設(shè)不同時,它保護(hù)了開發(fā)者在應(yīng)用程序上的開發(fā)投入。硬件抽象層也是類似的技術(shù),它抽象一個硬件平臺到一定程度,足以使操作系統(tǒng)內(nèi)核被移植到該平臺上。
(3)內(nèi)核支持多任務(wù),提供豐富的多線程通信機(jī)制。一般默認(rèn)情況下采用基于任務(wù)優(yōu)先級的任務(wù)可搶先調(diào)度法,確??偸亲钕葓?zhí)行具有最高優(yōu)先級的已就緒的任務(wù);在此基礎(chǔ)上增加輪轉(zhuǎn)調(diào)度法,使同等優(yōu)先級的已就緒的任務(wù)公平占有CPU。2.1.4功能層
嵌入式系統(tǒng)的功能層是由基于操作系統(tǒng)開發(fā)的應(yīng)用程序所組成的,以完成對被控對象的控制功能。為了方便用戶的操作,往往需要嵌入式系統(tǒng)具有友好的人機(jī)界面。針對特定應(yīng)用領(lǐng)域,用來達(dá)到用戶預(yù)期目標(biāo),這不僅要求準(zhǔn)確性、安全性和穩(wěn)定性等方面能夠滿足實(shí)際應(yīng)用的需要,而且還要盡可能地進(jìn)行優(yōu)化,以減少對系統(tǒng)資源的消耗,降低成本。對于復(fù)雜的系統(tǒng),在設(shè)計初期需要進(jìn)行系統(tǒng)的需求分析,確定系統(tǒng)功能,然后將這些功能映射到整個嵌入式系統(tǒng)的軟/硬件設(shè)計過程中,以完成系統(tǒng)的功能實(shí)現(xiàn)。
2.2嵌入式系統(tǒng)的設(shè)計流程
日常生活中,我們在做一件事情的時候總是要按照一定的步驟(或者流程)一步一步地進(jìn)行,直至最終完成,嵌入式系統(tǒng)的設(shè)計也是如此。一般來說,嵌入式系統(tǒng)的設(shè)計流程分為需求分析、規(guī)格說明、體系結(jié)構(gòu)設(shè)計、軟/硬件構(gòu)件設(shè)計和系統(tǒng)集成五個階段,如圖2-2所示。如果設(shè)計的流程是從需求分析開始,然后是規(guī)格說明,接著是體系結(jié)構(gòu)設(shè)計、軟/硬件構(gòu)件設(shè)計,最后是系統(tǒng)集成,那么該設(shè)計流程就叫做自上而下的設(shè)計流程(圖中實(shí)線部分);反之,就叫做自下而上的設(shè)計流程(圖中虛線部分)。下面將按照自上而下的設(shè)計流程對嵌入式系統(tǒng)的設(shè)計過程進(jìn)行討論。圖2-2嵌入式系統(tǒng)的設(shè)計流程2.2.1需求分析
需求分析是自上而下的嵌入式系統(tǒng)設(shè)計的第一個階段,該階段的任務(wù)是確定用戶的要求和目標(biāo),主要考慮的是“做什么”,而不是具體“怎么做”。
1.需求
需求通常由用戶提出,一般包括功能和非功能兩部分。設(shè)計者從用戶的描述中可以直接獲取系統(tǒng)基本功能的有關(guān)信息,但只有這些功能信息還不夠,還必須得到用戶提出的非功能信息,這些非功能信息包括性能、功耗、成本、系統(tǒng)尺寸和重量等。
(1)性能:一般就是指系統(tǒng)的處理速度,它是決定系統(tǒng)實(shí)用性與最終成本的主要因素。
(2)功耗:對于靠電池來供電的系統(tǒng)以及一些電器而言,電源是十分重要的一個部分。電源問題通常在需求階段以電池續(xù)航時間的方式提出,因為用戶通常不能以瓦為單位準(zhǔn)確描述允許的功率。
(3)成本:對于消費(fèi)者來說,產(chǎn)品的最終成本或者價格是一個敏感的問題,所以它是設(shè)計者必須考慮的一個因素。
(4)系統(tǒng)尺寸和重量:產(chǎn)品的物理特性(包括尺寸和重量)會因使用領(lǐng)域的不同而不同,對于嵌入式設(shè)備而言,尺寸和重量往往受到嚴(yán)格的限制,因此,這也是值得設(shè)計者重視的一個問題。
2.確認(rèn)需求
確認(rèn)這一系列的功能與非功能需求不僅僅需要理解什么是用戶需要的,而且還需要理解用戶是如何表達(dá)這些需求的,因此,確認(rèn)需求與其說是個技術(shù)問題,倒不如說是個心理學(xué)問題。
建模是精簡、提煉系統(tǒng)需求的一種好方法,可以有效地精簡用戶界面。建立模型之后,就可以使用已經(jīng)收集到的統(tǒng)計數(shù)據(jù)進(jìn)行功能模擬,并在個人計算機(jī)或工作站上運(yùn)行,以驗證其正確性。需要注意的是,所建立的模型應(yīng)該讓用戶了解系統(tǒng)是如何使用的,以及用戶如何與其進(jìn)行交互。至于設(shè)備的非功能模型,其主要作用是讓用戶了解系統(tǒng)的特性,比如系統(tǒng)的尺寸和重量等。
3.需求分析表格
對于設(shè)計者而言,分析一個較大規(guī)模系統(tǒng)的需求是一項復(fù)雜而又費(fèi)時的工作,因此,若能獲得相對少量的格式清晰而又簡單的信息將有助于對系統(tǒng)的理解,需求分析表格就是一種簡單的獲取系統(tǒng)需求的方法,如表2-1所示。
4.需求的內(nèi)部一致性
在需求分析的最后,還應(yīng)該檢查各個項目的內(nèi)部一致性。例如是否忘記為某個功能指定輸入/輸出;是否考慮了系統(tǒng)運(yùn)行的所有方式;是否把一些不切實(shí)際的要求放了進(jìn)來。這些都是需要檢查的內(nèi)容。2.2.2規(guī)格說明
規(guī)格說明是繼需求分析之后的第二個階段。如果說需求分析主要是給用戶看的,那么規(guī)格說明主要是給設(shè)計者看的,規(guī)格說明的作用相當(dāng)于用戶和設(shè)計者之間的合同,用以促進(jìn)設(shè)計開發(fā)方案的制定。因此,規(guī)格說明必須小心編寫,以便精確反映用戶的需求并且將其作為設(shè)計時必須遵循的要求。與需求分析相比,規(guī)格說明更加明確,它對需求分析中涉及的問題進(jìn)行了進(jìn)一步的細(xì)化,以便別人可以驗證它是否符合系統(tǒng)要求并且完全滿足用戶的期望。規(guī)格說明也不能有歧義,應(yīng)該使設(shè)計者在閱讀了規(guī)格說明之后就能明白該完成什么工作,否則可能會碰到由于規(guī)格說明不明確而引起的種種問題。例如,如果規(guī)格說明沒有明確在某個特定的狀態(tài)下有哪些特定行為,那么設(shè)計者就可能會實(shí)現(xiàn)錯誤的功能;還有,如果規(guī)格說明中某個全局特征是錯誤的或不完整的,那么按照規(guī)格說明設(shè)計的整個系統(tǒng)的體系結(jié)構(gòu)可能會不符合用戶的需求。此外,規(guī)格說明可能也是設(shè)計新手在設(shè)計時最不重視的階段,但它實(shí)際上卻可以使設(shè)計者花費(fèi)最少的精力來創(chuàng)建一個正確的工作系統(tǒng)。對于有些設(shè)計者來說,可能在工作剛開始的時候并沒有形成一個構(gòu)造系統(tǒng)的清晰思路,因而,在工作過程的早期會使用不完整的假設(shè)結(jié)果,在后期實(shí)現(xiàn)問題的重新更正,然后重新開始,這樣反而花費(fèi)了更多的時間和精力。2.2.3體系結(jié)構(gòu)設(shè)計
需求分析和規(guī)格說明都只是明確了系統(tǒng)實(shí)現(xiàn)什么功能,并不關(guān)心系統(tǒng)如何實(shí)現(xiàn),至于描述如何實(shí)現(xiàn)這些功能則是在體系結(jié)構(gòu)設(shè)計階段來完成的。體系結(jié)構(gòu)是系統(tǒng)整體結(jié)構(gòu)的一個計劃,而后用于設(shè)計搭建整個體系結(jié)構(gòu)的構(gòu)件。
體系結(jié)構(gòu)設(shè)計可以從硬件和軟件兩個方面去考慮。
硬件方面需要考慮的問題有CPU的類型、外圍電路的選擇、存儲器的配置、輸入/輸出接口的設(shè)計。軟件方面需要考慮的問題有操作系統(tǒng)的選擇、驅(qū)動程序的設(shè)計、應(yīng)用軟件的編寫。
體系結(jié)構(gòu)設(shè)計是通過對規(guī)格說明中的內(nèi)容作進(jìn)一步的分解,從而建立硬件和軟件架構(gòu),并確立各個模塊、各個子系統(tǒng)之間的關(guān)系,定義各子系統(tǒng)和各功能模塊之間的接口,規(guī)定設(shè)計約束,進(jìn)而給出每個功能模塊的功能描述。我們以一個MP3的設(shè)計為例,給出其硬件結(jié)構(gòu)(如圖2-3所示)和軟件結(jié)構(gòu)(如圖2-4所示)。圖2-3MP3硬件結(jié)構(gòu)圖2-4MP3軟件結(jié)構(gòu)2.2.4軟/硬件構(gòu)件設(shè)計
在完成了體系結(jié)構(gòu)設(shè)計之后,設(shè)計者已經(jīng)對產(chǎn)品有了一個整體的認(rèn)識,對于系統(tǒng)的主要任務(wù)也會有所了解,接下來就應(yīng)該進(jìn)入軟/硬件構(gòu)件設(shè)計階段。
軟/硬件構(gòu)件設(shè)計時遵循的傳統(tǒng)原則是硬件優(yōu)先原則,即先設(shè)計硬件,給出系統(tǒng)的硬件平臺,然后根據(jù)系統(tǒng)的硬件資源來設(shè)計軟件模塊。但是,由于在硬件設(shè)計過程中缺乏對軟件體系結(jié)構(gòu)和實(shí)現(xiàn)機(jī)制的了解,這種模式往往需要反復(fù)試驗和修改,從而導(dǎo)致設(shè)計周期延長,成本提高,難以適應(yīng)現(xiàn)代日益復(fù)雜和大規(guī)模的嵌入式系統(tǒng)的設(shè)計。由于傳統(tǒng)的硬件優(yōu)先原則存在著種種缺點(diǎn),難以滿足當(dāng)前嵌入式系統(tǒng)設(shè)計的需求,因此尋找一種合適的軟/硬件構(gòu)件設(shè)計模式已成為當(dāng)務(wù)之急,軟/硬件協(xié)同設(shè)計就是一種很好的解決辦法。軟/硬件協(xié)同設(shè)計依據(jù)系統(tǒng)目標(biāo)的要求,綜合分析軟/硬件功能及資源,挖掘系統(tǒng)軟/硬件之間的并發(fā)性,協(xié)同設(shè)計軟/硬件體系結(jié)構(gòu)。通過軟/硬件劃分、性能評估等方法,在系統(tǒng)的早期概念設(shè)計階段實(shí)現(xiàn)系統(tǒng)原型的快速開發(fā),然后對原型系統(tǒng)性能和成本估計不斷進(jìn)行反饋和修正,最終以優(yōu)化的系統(tǒng)結(jié)構(gòu)代替人工分割的軟/硬件子系統(tǒng),降低了系統(tǒng)實(shí)現(xiàn)的性能代價成本,因此該設(shè)計技術(shù)已成為嵌入式領(lǐng)域的一個研究熱點(diǎn)??傮w而言,軟/硬件協(xié)同設(shè)計過程可分為系統(tǒng)描述、軟/硬件劃分、調(diào)度和性能評估四個階段。系統(tǒng)描述是用系統(tǒng)描述語言對所要設(shè)計的系統(tǒng)的功能和性能進(jìn)行全面描述,并建立模型。軟/硬件劃分是要確定系統(tǒng)的哪些功能由硬件實(shí)現(xiàn),哪些功能由軟件實(shí)現(xiàn)。仍然以MP3為例,對于MP3解碼部分,如果在硬件設(shè)計時選擇了性能較高的通用處理器,其內(nèi)部不包含MP3解碼的固件,在系統(tǒng)的硬件架構(gòu)中也沒有使用專門的解碼芯片,那么,在軟件設(shè)計中,MP3的解碼部分必須由軟件人員進(jìn)行編寫;反之,如果在硬件設(shè)計時選擇的處理器內(nèi)部包含了解碼的固件,或者在系統(tǒng)的硬件架構(gòu)中使用了專門的解碼芯片,那么,在軟件結(jié)構(gòu)中就不需要編寫解碼部分的代碼了。調(diào)度是在軟/硬件劃分基礎(chǔ)上,將系統(tǒng)的一個或多個進(jìn)程/線程分配到不同處理器中并發(fā)執(zhí)行,并實(shí)現(xiàn)進(jìn)程/線程之間的交互和硬件資源的優(yōu)化訪問控制。性能評估采用驗證或模擬方法測試評價系統(tǒng)實(shí)現(xiàn),找到制約系統(tǒng)性能的瓶頸,進(jìn)而及時修正調(diào)度階段的偏差,實(shí)現(xiàn)系統(tǒng)的優(yōu)化設(shè)計。2.2.5系統(tǒng)集成
軟/硬件構(gòu)件建立以后就要把它們集成在一起以得到一個可以運(yùn)行的系統(tǒng),這個階段就是系統(tǒng)集成階段,當(dāng)然,系統(tǒng)集成并不僅僅是簡單地將所有的東西連接起來。在系統(tǒng)集成中通??梢园l(fā)現(xiàn)一些構(gòu)件設(shè)計時的錯誤,而合理的計劃能幫助我們快速定位并解決問題。按階段搭建系統(tǒng)并且在每個階段結(jié)束后進(jìn)行測試,就有助于定位這些錯誤。而如果每次只調(diào)試一部分模塊,很可能更容易發(fā)現(xiàn)簡單的錯誤。只有在設(shè)計的早期修正這些簡單的錯誤,才能發(fā)現(xiàn)那些在系統(tǒng)高負(fù)荷運(yùn)轉(zhuǎn)時才能確定的比較復(fù)雜的錯誤。必須在體系結(jié)構(gòu)和構(gòu)件設(shè)計階段盡可能容易地按階段組裝系統(tǒng)和相對獨(dú)立地測試系統(tǒng)。系統(tǒng)集成時通常會發(fā)現(xiàn)問題,因此它有一定的難度。足夠詳細(xì)地觀察系統(tǒng)以準(zhǔn)確地定位錯誤通常很難,因為與桌面系統(tǒng)相比,面向嵌入式系統(tǒng)的調(diào)試工具很少。因此,確定系統(tǒng)為何不能正確工作以及如何對此進(jìn)行修復(fù)是一種挑戰(zhàn)。在設(shè)計過程中小心地加入恰當(dāng)?shù)恼{(diào)試工具能簡化系統(tǒng)集成中的問題。以上是對嵌入式系統(tǒng)自上而下的設(shè)計流程的五個階段的介紹,一般來說,所有嵌入式系統(tǒng)設(shè)計方法都會不可避免地涉及到這五個階段,但最重要的還是能找到一種好的設(shè)計方法,使設(shè)計人員對工作的進(jìn)度有一個清楚的了解,從而確保不遺漏其中的任何工作。另外,一個好的設(shè)計方法還允許設(shè)計者開發(fā)計算機(jī)輔助設(shè)計工具,雖然目前還不可能開發(fā)出一個能夠完成完整嵌入式系統(tǒng)設(shè)計流程的工具,但已經(jīng)可以先將整個過程分成幾個可控的步驟,通過輔助工具每次自動或半自動地完成一個步驟。最后,一個好的設(shè)計方法還便于設(shè)計人員進(jìn)行相互交流。
2.3嵌入式系統(tǒng)設(shè)計流程模型
2.2節(jié)中,我們曾提到嵌入式系統(tǒng)的設(shè)計流程可以是自上而下的,也可以是自下而上的,但在實(shí)際設(shè)計過程中,這兩種方法往往是交叉進(jìn)行的,從而就會產(chǎn)生不同的設(shè)計流程。這些不同的設(shè)計流程就稱為流程模型。常見的流程模型有瀑布模型、逐步求精模型和螺旋模型等。2.3.1瀑布模型
1.模型概述
瀑布模型(WaterModle)的整個設(shè)計過程是自上而下的,如同瀑布一般,故而得名,其流程如圖2-5所示。圖2-5瀑布模型的流程
2.模型優(yōu)、缺點(diǎn)
瀑布模型的優(yōu)點(diǎn)是:開發(fā)流程簡單清楚,可以明確每一個階段的任務(wù)與目標(biāo),便于制定開發(fā)計劃。
瀑布模型的缺點(diǎn)是:缺乏靈活性,不能適應(yīng)用戶需求的改變;對開發(fā)初期要求比較高,特別是需求分析;返回上一級需要付出高昂的代價;隨系統(tǒng)規(guī)模和復(fù)雜性的增加,產(chǎn)品成功開發(fā)的幾率下降。
3.模型使用場合
瀑布模型比較適合如下的場合:
(1)系統(tǒng)需求比較明確。比如,系統(tǒng)的功能、功耗、體積、重量都有明確的表達(dá),同時,系統(tǒng)的需求在開發(fā)過程中不會發(fā)生太大的變化。
(2)對原有產(chǎn)品的簡單升級。
(3)采用成熟技術(shù)開發(fā)不會出現(xiàn)較難解決困難的產(chǎn)品。2.3.2逐步求精模型
1.模型概述
逐步求精模型(SuccessiveRefinementModel)的特點(diǎn)是開發(fā)人員先根據(jù)用戶的基本需求快速開發(fā)出一個原型系統(tǒng),向用戶展示系統(tǒng)的部分功能和性能,以征求用戶的意見,然后進(jìn)一步使需求精確化、完全化。同時,測試人員對這一原型系統(tǒng)進(jìn)行測試、修改,評價其性能。開發(fā)者根據(jù)用戶和測試人員的反饋意見修改原型系統(tǒng),如此迭代,不斷完善和豐富系統(tǒng)功能,直到最終完成。逐步求精模型的流程如圖2-6所示。圖2-6逐步求精模型的流程
2.模型優(yōu)、缺點(diǎn)
逐步求精模型的優(yōu)點(diǎn)如下:
(1)便于開發(fā)者和用戶之間的溝通,從而可以更好地滿足用戶的需求。
(2)與瀑布模型相比,更符合人們認(rèn)識事物的過程和規(guī)律,更為實(shí)際。
(3)開發(fā)風(fēng)險低,一般不會造成產(chǎn)品無法完成或者不符合要求的情況。
逐步求精模型的缺點(diǎn)如下:
(1)需要消耗大量資源去建立原型系統(tǒng),特別是在開發(fā)大型產(chǎn)品時。
(2)對原型系統(tǒng)性能的評估比較困難。
(3)因為采用了反復(fù)的迭代,所以產(chǎn)品的開發(fā)周期較長。
3.模型使用場合
逐步求精模型適用于那些不能預(yù)先確定需求的系統(tǒng)的開發(fā)。當(dāng)開發(fā)人員對構(gòu)建系統(tǒng)的應(yīng)用領(lǐng)域不是很熟悉時,逐步求精模型就比較適用。另外,它也適合那些項目組成人員(包括分析人員、設(shè)計人員、程序員)不能很好溝通的情況。2.3.3螺旋模型
1.模型概述
螺旋模型(SpiralModel)是綜合了瀑布模型和逐步求精模型的優(yōu)點(diǎn),并加入了兩者所忽略的風(fēng)險分析的一種開發(fā)模型。其開發(fā)流程沿螺旋順時針方向,依次經(jīng)歷需求、設(shè)計、測試三個階段。螺旋模型需要建立系統(tǒng)的多個版本,初始的版本只是一個簡單的實(shí)驗?zāi)P?,用于幫助設(shè)計者和用戶建立起對系統(tǒng)的感性認(rèn)識,隨著設(shè)計的深入,會創(chuàng)建更加復(fù)雜的系統(tǒng)。在螺旋的第一圈可以確定系統(tǒng)的需求分析、詳細(xì)設(shè)計、規(guī)格說明等;第二圈產(chǎn)生一個用于開發(fā)的原型系統(tǒng);第三圈產(chǎn)生系統(tǒng)的初始版本,即初始系統(tǒng);第四圈產(chǎn)生比較完善的新版本,即改進(jìn)系統(tǒng);依此類推,經(jīng)過不斷的迭代,產(chǎn)生最終的版本,即最終系統(tǒng)。螺旋模型的基本框架如圖2-7所示。圖2-7螺旋模型的基本框架
2.模型優(yōu)、缺點(diǎn)
螺旋模型的優(yōu)點(diǎn)如下:
(1)原型系統(tǒng)可看做可執(zhí)行形式的需求規(guī)格說明,易于開發(fā)人員和用戶共同理解,還可作為繼續(xù)開發(fā)的基礎(chǔ),并為用戶參與決策提供方便。
(2)支持用戶需求的動態(tài)變化,支持軟件系統(tǒng)的可維護(hù)性,每次維護(hù)過程只是沿螺旋模型繼續(xù)多走一兩圈。
(3)為項目管理人員及時調(diào)整管理決策提供了方便,進(jìn)而可以降低開發(fā)風(fēng)險。螺旋模型的缺點(diǎn)如下:
(1)如果每次迭代效率不高,導(dǎo)致迭代次數(shù)過多,將會造成開發(fā)時間的延長和成本的增加。
(2)對開發(fā)隊伍的水平要求較高,需要有豐富的風(fēng)險評估經(jīng)驗和專門的知識。
3.模型使用場合
螺旋模型適用于需求不明確以及大型系統(tǒng)的開發(fā),模型支持面向過程、面向?qū)ο蟮榷喾N開發(fā)方法,是一種具有廣闊前景的模型。2.3.4其他模型
1.快速原型模型
快速原型模型(RapidPrototypeModel)等價于產(chǎn)品的一個子集。瀑布模型的缺點(diǎn)是不夠直觀,而快速原型模型正好解決了這個問題。它可以在很短的時間內(nèi)滿足用戶最迫切的需要,完成一個可以演示的產(chǎn)品。這個產(chǎn)品具有實(shí)現(xiàn)部分最主要的功能。其最重要的目的就是為了確定用戶的真正需求,在得到用戶的需求之后,原型將被拋棄。
2.噴泉模型
噴泉模型(FoundationModel)又稱面向?qū)ο蟮纳嫫谀P?。它是近幾年被提出來的軟件生存周期模型。它是以面向?qū)ο蟮能浖_發(fā)方法為基礎(chǔ),以用戶需求為動力,以對象來驅(qū)動的模型。與傳統(tǒng)的結(jié)構(gòu)化生存期相比,噴泉模型具有更多的增量和迭代性質(zhì),生存期的各個階段可以相互重疊和多次反復(fù),而且在項目的整個生存期中還可以嵌入子生存期,就像水噴上去又可以落下來,可以落在中間,也可以落在底部,故而得名。
3.智能模型
智能模型使用一組工具(如數(shù)據(jù)查詢、數(shù)據(jù)處理、電子表格、代碼生成、報表生成、屏幕定義以及高層圖形功能等),每個工具都能使開發(fā)人員在該層次上定義軟件的某些特性,并把開發(fā)人員定義的這些軟件自動地生成為源代碼。這種方法需要第四代語言(4GL)的支持。4GL不同于第三代語言,其主要特征是具有非常好的用戶界面,即使是沒有經(jīng)過訓(xùn)練的非專業(yè)的程序員,也能夠使用它來編寫程序。4GL是一種交互式、聲明式和非過程性的語言,具有高效的程序代碼、智能缺省假設(shè)、完備的數(shù)據(jù)庫和應(yīng)用程序生成器。目前,市場上流行的4GL都不同程度地?fù)碛猩鲜鎏卣鳌?GL主要應(yīng)用于信息系統(tǒng)的中、小型應(yīng)用程序的開發(fā)。
4.混合模型
混合模型(HybridModel)是一種把幾種不同的開發(fā)模型混合在一起的模型,允許一個項目沿著最有效的方向發(fā)展。實(shí)際上,開發(fā)人員往往都是使用幾種不同的開發(fā)方法組成混合的模型進(jìn)行系統(tǒng)的開發(fā)。
2.4嵌入式系統(tǒng)的調(diào)試與測試
明確了系統(tǒng)的體系架構(gòu)和開發(fā)流程以后,接下來就要進(jìn)行開發(fā)、調(diào)試與測試,包括選擇適當(dāng)?shù)拈_發(fā)環(huán)境和開發(fā)工具,例如編譯器、鏈接器、定位器,或者直接使用集成開發(fā)環(huán)境(IDE),隨后將編譯好的程序轉(zhuǎn)為映像(Image),下載到目標(biāo)平臺上,與開發(fā)平臺連接后進(jìn)行調(diào)試和測試。以下將介紹嵌入式系統(tǒng)的開發(fā)輔助工具以及調(diào)試與測試時用到的一些方法。2.4.1嵌入式系統(tǒng)開發(fā)的輔助工具
1.編譯器
編譯器(Compiler)是將一種語言翻譯成另一種語言的計算機(jī)程序。它將源程序作為輸入,產(chǎn)生目標(biāo)語言。通常,源程序采用高級語言編寫,如C/C++,或者是匯編語言。而目標(biāo)語言則是目標(biāo)機(jī)器的目標(biāo)代碼(ObjectCode),有時也稱為機(jī)器代碼(MachineCode)。使用編譯器可以使我們不必直接編寫麻煩的機(jī)器代碼,而直接使用便于理解的高級語言或插入了助記符的匯編語言,提高了編程的效率。常見的編譯器有VisualC++、BorlandC++以及Linux下的GCC等。
2.鏈接器
編譯完程序后會產(chǎn)生目標(biāo)代碼,但要執(zhí)行程序還需要對目標(biāo)代碼進(jìn)行鏈接,這就要用到鏈接器。鏈接器將所有的目標(biāo)代碼文件?.o或者?.obj以及l(fā)ib中的數(shù)據(jù)段區(qū),包括text、data、bss區(qū)段的數(shù)據(jù)進(jìn)行合并,并且將尚未決定的函數(shù)和變量調(diào)用對應(yīng)起來。在嵌入式系統(tǒng)中,要鏈接出一個可以放到ROM中執(zhí)行的程序,開發(fā)人員還必須對啟動代碼進(jìn)行鏈接,并且制定鏈接關(guān)系地址。
3.定位器
一般的桌面計算機(jī)程序的開發(fā)都是以鏈接作為結(jié)束的,這樣就可以產(chǎn)生可執(zhí)行的程序,但嵌入式系統(tǒng)開發(fā)中,鏈接不是最終的動作,還需要一個重定位器,經(jīng)過重定位后,產(chǎn)生映像文件(ImageFile),下載到ROM中,才可執(zhí)行。定位器本身不知道硬件和映像文件之間的對應(yīng)關(guān)系,所以必須要制定一個地址對應(yīng)關(guān)系表。這里所有地址都會有一個相對參考地址,依據(jù)data、code、const排列方式放置。這部分的數(shù)據(jù)必須依據(jù)每個硬件的不同來做不同的修改,一般廠商都會附上一個范例作為參考,開發(fā)人員可以依此來進(jìn)行修改。另外,定位器通常還會產(chǎn)生一個定位信息的表格,告訴開發(fā)人員每個函數(shù)的地址,有時候就可以利用該表格進(jìn)行除錯。
4.集成開發(fā)環(huán)境
集成開發(fā)環(huán)境(IntergratedDevelopmentEnviroment,IDE)是用于程序開發(fā)的應(yīng)用程序,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具。該程序可以獨(dú)立運(yùn)行,也可以和其他程序并用。最典型的例子就是VisualC++,許多的開發(fā)環(huán)境都將其作為模板,并得到了廣泛的應(yīng)用。集成開發(fā)環(huán)境的好處就是可以方便地管理各種工程項目和函數(shù)庫,特別是當(dāng)整個系統(tǒng)越來越大的時候,可以省去很多管理和設(shè)置上的麻煩,減輕了開發(fā)人員的負(fù)擔(dān)。實(shí)際上,軟件開發(fā)環(huán)境正是朝著IDE的方向發(fā)展。2.4.2嵌入式系統(tǒng)的調(diào)試
嵌入式系統(tǒng)通常是一個資源受限的系統(tǒng),直接在嵌入式系統(tǒng)的目標(biāo)硬件平臺上編寫軟件是很困難甚至是不可能的,因此,在嵌入式系統(tǒng)的開發(fā)中往往用到一個交叉開發(fā)環(huán)境(CrossDevelopmentEnvironment)。所謂交叉開發(fā),就是在通用計算機(jī)(比如PC)上編輯、編譯程序,生成可以在目標(biāo)平臺上運(yùn)行的二進(jìn)制代碼指令,然后再下載到目標(biāo)平臺上進(jìn)行調(diào)試的開發(fā)方式。通用計算機(jī)一般稱為宿主機(jī),目標(biāo)平臺稱為目標(biāo)機(jī)。交叉開發(fā)環(huán)境一般由運(yùn)行于宿主機(jī)上的交叉開發(fā)軟件和系統(tǒng)仿真器組成。交叉開發(fā)軟件一般為一個集成開發(fā)環(huán)境。嵌入式系統(tǒng)的調(diào)試是開發(fā)過程中的重要環(huán)節(jié)。調(diào)試器是運(yùn)行于宿主機(jī)上的應(yīng)用程序,被調(diào)試程序是運(yùn)行在目標(biāo)機(jī)上的應(yīng)用程序,兩個程序間需要實(shí)時通信。嵌入式系統(tǒng)調(diào)試時,宿主機(jī)上運(yùn)行的調(diào)試器通過仿真器與目標(biāo)機(jī)相連。仿真器處理宿主機(jī)與目標(biāo)機(jī)之間的通信,這個通信口可以是串口、并口、網(wǎng)口及USB口(目前采用USB口較多),仿真器通過JTAG口或其他接口與目標(biāo)機(jī)相連,如圖2-8所示。
嵌入式系統(tǒng)開發(fā)過程的調(diào)試方式有很多種,以下列舉幾種常用的調(diào)試方式。圖2-8嵌入式系統(tǒng)交叉開發(fā)環(huán)境
1.在線仿真器
在線仿真器(In-CircuitEmulator,ICE)是一種模擬CPU的設(shè)備,能執(zhí)行CPU的全部動作。采用該方式調(diào)試時,利用仿真頭代替目標(biāo)板上的CPU,可以完全仿真CPU的行為,并且提供了豐富的調(diào)試功能,但缺點(diǎn)是結(jié)構(gòu)復(fù)雜、價格昂貴,通常用于硬件開發(fā)中。
2.在線調(diào)試器
在線調(diào)試器(In-CircuitDebug,ICD)是將CPU的除錯(調(diào)試)功能的引腳引出來,讓外部的硬件直接連接到這些引腳上去監(jiān)控整個CPU的動作,這樣開發(fā)人員就可以很容易地利用比較便宜的除錯(調(diào)試)工具和CPU的除錯(調(diào)試)模塊進(jìn)行溝通,一般這些CPU上的除錯模塊都提供讀出寫入內(nèi)存、讀出寫入CPU寄存器、單步執(zhí)行、中斷以及觸發(fā)等功能設(shè)置。目前,比較流行的是ARM公司開發(fā)板上使用的JTAG(JointTestActionGroup)調(diào)試端口。
簡單地說,ICD調(diào)試方式就是在硬件的早期設(shè)計時將芯片的除錯(調(diào)試)引腳先拉出來,等到整個系統(tǒng)設(shè)計發(fā)展完善后再去掉不接。ICD調(diào)試方式比ICE便宜得多,因此現(xiàn)在越來越多的開發(fā)人員開始采用這種方式。
3.軟件模擬器
軟件模擬器是一種利用宿主機(jī)的軟件模擬目標(biāo)機(jī)的環(huán)境來執(zhí)行目標(biāo)機(jī)源程序的模擬調(diào)試方法,這樣的好處是在目標(biāo)硬件環(huán)境還沒有建立的時候就可以使用模擬環(huán)境來調(diào)試程序。但值得注意的是,模擬器畢竟是以一種處理器來模擬另一種處理器,因此,在指令執(zhí)行時間、中斷響應(yīng)、定時器等方面很可能與實(shí)際處理器有很大的差別,它無法與ICE方式一樣仿真系統(tǒng)的實(shí)際執(zhí)行情況。
4.ROM監(jiān)控器
ROM監(jiān)控器是一段運(yùn)行在目標(biāo)機(jī)ROM上的可執(zhí)行程序,宿主機(jī)端調(diào)試軟件可以通過串口、并口、網(wǎng)口與之交互。使用這種調(diào)試方式時,被調(diào)試程序首先通過ROM監(jiān)控器下載到目標(biāo)機(jī)中,然后在ROM監(jiān)控器的監(jiān)控下完成調(diào)試。目前使用的絕大多數(shù)ROM監(jiān)控器能夠完成設(shè)置斷點(diǎn)、單步執(zhí)行、查看寄存器、修改內(nèi)存空間等調(diào)試功能。2.4.3嵌入式系統(tǒng)的測試
1.嵌入式系統(tǒng)測試的重要性
嵌入式系統(tǒng)由軟件和硬件兩部分組成,對這兩部分都應(yīng)該進(jìn)行測試。
一方面,硬件是嵌入式系統(tǒng)的基礎(chǔ),其好壞直接關(guān)系到系統(tǒng)能否開發(fā)成功。如果沒有選擇到最合適的硬件,甚至所選擇的硬件本身就存在著質(zhì)量問題,那么,最終組成的系統(tǒng)自然是無法正常工作的。因此,在系統(tǒng)開發(fā)的各個階段要對硬件進(jìn)行測試,及時發(fā)現(xiàn)問題,排除故障,確保硬件滿足系統(tǒng)設(shè)計的要求。另一方面,軟件也是嵌入式系統(tǒng)中的重要組成部分。隨著計算機(jī)硬件技術(shù)的進(jìn)步和元件質(zhì)量的逐步提高,嵌入式系統(tǒng)設(shè)備的硬件性能也得到了相應(yīng)的提高。同時,通過采用成熟的操作系統(tǒng),使系統(tǒng)運(yùn)行在一個高性能、可靠的軟件平臺之上,以便為實(shí)現(xiàn)各種大型的復(fù)雜應(yīng)用打下良好的基礎(chǔ)。面對系統(tǒng)復(fù)雜性的增加,自然需要功能更加強(qiáng)大、性能更加穩(wěn)定的軟件與之相匹配,隨之開發(fā)的軟件代碼量也越來越大。但是,在軟件的開發(fā)中,由于缺乏科學(xué)的管理手段,使得開發(fā)完成的軟件得不到良好的測試和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物材料編程調(diào)控腫瘤血管生成的策略
- 生物打印技術(shù)在神經(jīng)干細(xì)胞移植中的應(yīng)用
- 生物化學(xué)虛擬實(shí)驗與交叉學(xué)科融合
- 生物制品穩(wěn)定性試驗強(qiáng)制降解試驗設(shè)計
- 生物制劑聯(lián)合免疫抑制劑治療的MDT協(xié)同方案
- 生物制劑失應(yīng)答的炎癥性腸病免疫調(diào)節(jié)治療
- 生物3D打印:器官移植長期功能維持方案設(shè)計
- 數(shù)據(jù)面試題及業(yè)務(wù)理解能力含答案
- 圖書出版采購編輯面試題及答案
- 深度解析(2026)《GBT 19396-2025鋱鏑鐵磁致伸縮材料》
- 【MOOC答案】《電子線路設(shè)計、測試與實(shí)驗(二)》(華中科技大學(xué))章節(jié)作業(yè)慕課答案
- 2025年高考數(shù)學(xué)立體幾何檢測卷(立體幾何中的三角函數(shù)應(yīng)用)
- 2025年綜合類-衛(wèi)生系統(tǒng)招聘考試-護(hù)士招聘考試歷年真題摘選帶答案(5卷100題)
- 駐外銷售人員管理辦法
- 醫(yī)療反歧視培訓(xùn)
- GB/T 45701-2025校園配餐服務(wù)企業(yè)管理指南
- 2025-2030中國高效節(jié)能電機(jī)行業(yè)競爭力優(yōu)勢與發(fā)展行情監(jiān)測研究報告
- 健身房合伙協(xié)議書
- 美甲師聘用合同協(xié)議
- 《儲能電站技術(shù)監(jiān)督導(dǎo)則》2580
- 保安人員安全知識培訓(xùn)內(nèi)容
評論
0/150
提交評論