嵌入式系統(tǒng)開發(fā)設(shè)計

姓名:薛紹宏? ? ?學(xué)號:19020100016? ? 學(xué)院:電子工程學(xué)院

轉(zhuǎn)自:https://blog.csdn.net/hu19930613/article/details/82778693?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162722480016780366588674%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162722480016780366588674&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-14-82778693.pc_search_result_control_group&utm_term=%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%9B%B8%E5%85%B3%E5%BC%80%E5%8F%91&spm=1018.2226.3001.4449

【嵌牛導(dǎo)讀】本文介紹了嵌入式系統(tǒng)開發(fā)設(shè)計的一些概念和方法

【嵌牛鼻子】嵌入式系統(tǒng)開發(fā)設(shè)計

【嵌牛提問】嵌入式系統(tǒng)設(shè)計有哪些概念和方法?

【嵌牛正文】

嵌入式系統(tǒng)設(shè)計的主要任務(wù)是定義系統(tǒng)的功能、決定系統(tǒng)的架構(gòu),并將功能映射到系統(tǒng)實現(xiàn)架構(gòu)上。這里,系統(tǒng)架構(gòu)既包括軟件系統(tǒng)架構(gòu)也包括硬件系統(tǒng)架構(gòu)。一種架構(gòu)可以映射到各種不同的物理實現(xiàn),每種實現(xiàn)表示不同的取舍,同時還要滿足某些設(shè)計指標(biāo),并使其他的設(shè)計指標(biāo)也同時達到最佳化。

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

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

? ? 本節(jié)主要介紹嵌入式系統(tǒng)開發(fā)設(shè)計的技術(shù)與方法,并從嵌入式系統(tǒng)應(yīng)用和計算模型的角度分析應(yīng)用軟件設(shè)計的方法及設(shè)計過程中面臨的主要問題。最后,討論嵌入式領(lǐng)域軟件移植的相關(guān)問題。

1 嵌入式系統(tǒng)設(shè)計概述

? ? 進行嵌入式系統(tǒng)設(shè)計前,應(yīng)明確嵌入式系統(tǒng)設(shè)計本身的特點及衡量嵌入式系統(tǒng)設(shè)計的一些主要的技術(shù)指標(biāo)。

? ? 1.嵌入式系統(tǒng)設(shè)計的特點

? ? 與通常的系統(tǒng)設(shè)計相比,嵌入式系統(tǒng)設(shè)計具有以下特點:

軟、硬件協(xié)同并行開發(fā);

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

實時嵌入式操作系統(tǒng)具有多樣性;

與通用系統(tǒng)開發(fā)相比,可利用系統(tǒng)資源很少;

應(yīng)用支持少;

要求特殊的開發(fā)工具;

軟、硬件都要很健壯;

調(diào)試很困難。

? ? 2.嵌入式系統(tǒng)的技術(shù)指標(biāo)

? ? 嵌入式系統(tǒng)設(shè)計的常用指標(biāo)有:

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

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

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

? ? (4)性能:系統(tǒng)完成規(guī)定任務(wù)所需要的時間,是設(shè)計時最常用的設(shè)計指標(biāo),主要有兩種衡量方式,一是響應(yīng)時間,即開始執(zhí)行到任務(wù)結(jié)束之間的時間。二是完成量,即單位時間內(nèi)所完成的任務(wù)量。

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

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

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

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

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

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

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

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

? ? 3.嵌入式系統(tǒng)的設(shè)計挑戰(zhàn)

? ? 嵌入式系統(tǒng)設(shè)計所面臨的挑戰(zhàn)有以下幾個方面。

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

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

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

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

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

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

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

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

2? 開發(fā)模型與設(shè)計流程

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

? ? 1.常用開發(fā)模型

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

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

? ? (2)螺旋模型。螺旋模型假定要建立系統(tǒng)的多個版本,早期的版本是一個簡單的試驗?zāi)P停糜趲椭O(shè)計者建立對系統(tǒng)的直覺和積累開發(fā)此系統(tǒng)的經(jīng)驗,隨著設(shè)計的進展,會創(chuàng)建更加復(fù)雜的系統(tǒng)。在每一層設(shè)計中,設(shè)計者都會經(jīng)過需求分析、結(jié)構(gòu)設(shè)計、測試三個階段。在后期,當(dāng)構(gòu)成更復(fù)雜的系統(tǒng)版本時,每一個階段都會有更多的工作,并需要擴大設(shè)計的螺旋,這種逐步求精的方法使設(shè)計者可以通過一系列的設(shè)計循環(huán)加深對所開發(fā)的系統(tǒng)的理解。螺旋的頂部第一個循環(huán)是很小很短的,而螺旋底部的最后的循環(huán)加入了對螺旋模型的早期循環(huán)的細節(jié)補充,螺旋模型比瀑布模型更加符合實際。

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

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

? ? 2.嵌入式系統(tǒng)的設(shè)計方法

? ? 一個良好的嵌入式系統(tǒng)設(shè)計方法是十分重要的,這是因為:

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

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

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

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

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

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

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

? ? 產(chǎn)生應(yīng)用程序的可執(zhí)行文件后,就要用到交叉開發(fā)環(huán)境進行調(diào)試,根據(jù)實際情況可以選用可用的幾種調(diào)試方法之一或它們的有效組合來進行。

? ? 嵌入式系統(tǒng)設(shè)計不同于傳統(tǒng)的軟件設(shè)計,如圖 12-11 所示。經(jīng)常包含硬件設(shè)計和軟件設(shè)計,其中前端活動,如規(guī)格說明和系統(tǒng)架構(gòu),需要同時考慮硬件和軟件兩個方面。

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

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

? ? 在系統(tǒng)開發(fā)流程的各個階段,分別要進行系統(tǒng)的確認(rèn)和性能評估、安全性評估及風(fēng)險性評價,并對系統(tǒng)的實現(xiàn)進行測試驗證。

3 嵌入式系統(tǒng)設(shè)計的核心技術(shù)

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

? ? 總體來看,在嵌入式開發(fā)領(lǐng)域,主要有三種核心技術(shù):處理器技術(shù)、IC 技術(shù)、設(shè)計/ 驗證技術(shù)。

? ? 1.處理器技術(shù)

? ? 處理器技術(shù)與實現(xiàn)系統(tǒng)功能的計算引擎結(jié)構(gòu)有關(guān),很多不可編程的數(shù)字系統(tǒng)也可以視為處理器,這些處理器的差別在于其面向特定功能的專用化程度,導(dǎo)致其設(shè)計指標(biāo)與其他處理器不同。

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

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

? ? 當(dāng)然,這種方式也有一些設(shè)計指標(biāo)上的缺陷,數(shù)量大時單位成本相對較高,因為數(shù)量大時,自行設(shè)計的 NRE 成本分?jǐn)傁聛恚山档蛦挝怀杀尽M瑫r,對于某些應(yīng)用,性能可能很差。由于包含了非必要的處理器硬件,系統(tǒng)的體積和功耗可能變大。

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

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

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

? ? 2.IC 技術(shù)

? ? 從系統(tǒng)的集成電路設(shè)計描述得到實際芯片的物理映射過程的實現(xiàn)技術(shù)便是 IC(Integrated Circuits,集成電路)技術(shù),當(dāng)前在半導(dǎo)體領(lǐng)域的三類實現(xiàn)技術(shù),即全定制、半定制和可編程技術(shù)均可應(yīng)用于嵌入式系統(tǒng)的硬件設(shè)計。

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

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

成品率。

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

? ? 3.設(shè)計/驗證技術(shù)

? ? 嵌入式系統(tǒng)的設(shè)計技術(shù)主要包括硬件設(shè)計技術(shù)和軟件設(shè)計技術(shù)兩大類。其中,硬件設(shè)計領(lǐng)域的技術(shù)主要包括芯片級設(shè)計技術(shù)和電路板級設(shè)計技術(shù)兩個方面。

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

? ? 軟件設(shè)計技術(shù)的核心是軟件語言。軟件語言經(jīng)歷了從低級語言(機器語言、匯編語言)到高級語言(例如,結(jié)構(gòu)化設(shè)計語言、面向?qū)ο笤O(shè)計語言)的發(fā)展歷程,推動其發(fā)展的是匯編技術(shù)、分析技術(shù)、編譯/解釋技術(shù)等諸多相關(guān)技術(shù)。軟件語言的級別也從實現(xiàn)級、設(shè)計級、功能級逐漸向需求級語言發(fā)展過渡。

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

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

4 嵌入式開發(fā)設(shè)計環(huán)境

? ? 嵌入式系統(tǒng)的開發(fā)環(huán)境種類很多,大體可以把它們分為如下幾類:

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

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

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

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

5 嵌入式軟件設(shè)計模型

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

? ? 本節(jié)介紹幾種嵌入式領(lǐng)域常用的計算模型,并從計算模型的角度分析和闡述嵌入式應(yīng)用設(shè)計和開發(fā)的相關(guān)問題。計算模型提供一組用簡單對象來組合復(fù)雜行為的方法,可以幫助設(shè)計者理解和描述系統(tǒng)行為。嵌入式系統(tǒng)常用的計算模型有如下幾種:時序計算模型、通信進程模型、狀態(tài)機模型、數(shù)據(jù)流模型、面向?qū)ο竽P汀⒉l(fā)進程模型。

? ? 這些模型分別在不同的應(yīng)用領(lǐng)域使用,如狀態(tài)機模型特別適合描述以控制為主的系統(tǒng),數(shù)據(jù)流模型可以很好地描述數(shù)據(jù)處理和轉(zhuǎn)換問題。目前使用最廣泛的是并發(fā)進程模型。

? ? 1.狀態(tài)機模型

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

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

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

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

? ? 2.?dāng)?shù)據(jù)流模型

? ? 數(shù)據(jù)流模型是并發(fā)多任務(wù)模型派生出的一種模型,該模型將系統(tǒng)的行為描述為一組結(jié)點和邊,其中結(jié)點表示變換,邊表示從一個結(jié)點到另一個結(jié)點的數(shù)據(jù)流向。每個結(jié)點使用來自其輸入邊的數(shù)據(jù),執(zhí)行變換并在其輸出邊上產(chǎn)生數(shù)據(jù)。

? ? 每條邊可能有或沒有數(shù)據(jù),出現(xiàn)在邊上的數(shù)據(jù)稱為令牌,當(dāng)某個結(jié)點的所有輸入邊都至少有一個令牌時,該結(jié)點可觸發(fā)。結(jié)點觸發(fā)后,將使用來自每條輸入邊的一個令牌,對所有使用的令牌進行數(shù)據(jù)變換,并在輸出邊上產(chǎn)生一個令牌,結(jié)點的觸發(fā)僅決定于令牌出現(xiàn)的情況。

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

? ? 目前,已有若干商業(yè)化的工具支持用圖形化語言表達數(shù)據(jù)流模型,這些工具可以自動將數(shù)據(jù)流模型轉(zhuǎn)換為并發(fā)多任務(wù)模型,以便在微處理器上實現(xiàn)。其轉(zhuǎn)換方法為將每個結(jié)點轉(zhuǎn)換為一個任務(wù),每條邊轉(zhuǎn)換為一個通道,其中并發(fā)多任務(wù)模型的實現(xiàn)方法是使用實時操作系統(tǒng)對并發(fā)任務(wù)進行映射。

? ? 圖 12-14 是一個同步數(shù)據(jù)流模型,這個模型中,在結(jié)點的每條輸入邊和輸出邊上分別標(biāo)注每次觸發(fā)所使用和產(chǎn)生的令牌數(shù)。該模型的優(yōu)點是,在實現(xiàn)時不需要將其轉(zhuǎn)換為并發(fā)多任務(wù)模型,而是用靜態(tài)方式調(diào)度結(jié)點,產(chǎn)生時序程序模型。該模型可以使用時序程序語言(如 C 語言)來表達,不需要實時操作系統(tǒng)就可以執(zhí)行,因此其執(zhí)行效率更高。

? ? 3.并發(fā)進程模型

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

? ? 通常,實時系統(tǒng)可以看成是由許多并發(fā)執(zhí)行的進程構(gòu)成的系統(tǒng),其中每個進程都有時間要求。這樣,很多嵌入式系統(tǒng)更容易用一組并發(fā)執(zhí)行的任務(wù)來描述,因為這些系統(tǒng)本身就是多任務(wù)系統(tǒng),并發(fā)進程模型便自然地可以由實時操作系統(tǒng)的多任務(wù)來實現(xiàn)。

? ? 4.面向?qū)ο竽P?/p>

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

? ? 面向?qū)ο竽P鸵砸环N更加直接的方式刻畫客觀世界中的活動,模型中存在著潛在的并發(fā)執(zhí)行能力。一個對象向另一個對象發(fā)送消息后,若不需要或不立即需要消息的處理結(jié)果,前者不必等待后者處理消息,消息發(fā)送者和消息接受者可以并發(fā)執(zhí)行。對象不都是處于被動的提供服務(wù)狀態(tài),它們中的一些除了能通過接收消息向外提供服務(wù)外,還可以有自己的事務(wù)處理。一個對象往往可以同時處理多個消息。

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

? 把并發(fā)與面向?qū)ο笙嘟Y(jié)合,歸結(jié)起來可分為兩條途徑:

? ? (1)在面向?qū)ο竽P椭幸M并發(fā)機制,充分利用面向?qū)ο蠹夹g(shù)刻畫客觀世界的良好模型能力和面向?qū)ο蟮母鱾€重要特性,同時把其潛在的并發(fā)能力描述出來,使其適合于描述并發(fā)計算。

? ? (2)在傳統(tǒng)并發(fā)模型中引進面向?qū)ο笏枷搿?/p>

? ? 面向?qū)ο蟮牟l(fā)模型可以分為兩種類型:隱式并發(fā)模型和顯式并發(fā)模型。

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

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

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

6 需求分析

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

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

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

? ? 需求分析階段最重要的文檔輸出就是系統(tǒng)的規(guī)格說明。

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

? 目前,業(yè)界較為流行的方法是采用 UML 進行規(guī)格說明的描述。UML 是一個通用的標(biāo)準(zhǔn)建模語言,可以對任何具有靜態(tài)結(jié)構(gòu)和動態(tài)行為的系統(tǒng)進行建模。UML 適用于系統(tǒng)開發(fā)過程中從需求規(guī)格描述到系統(tǒng)完成后測試的不同階段。

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

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

7 系統(tǒng)設(shè)計

? ? 目前,嵌入式系統(tǒng)的設(shè)計工具可以分為兩類:協(xié)同合成工具和協(xié)同模擬工具。

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

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

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

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

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

PTOLEMY:PTOLEMY 的關(guān)鍵思想是混合使用面向?qū)ο髢?nèi)核的計算模型,可用于模擬多種的系統(tǒng),在各種應(yīng)用中被廣泛地使用,但不適合于系統(tǒng)合成,硬件模擬也是它的一項功能。

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

? ? 1.系統(tǒng)架構(gòu)設(shè)計

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

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

? ? (2)軟件系統(tǒng)架構(gòu)。如圖 12-19 所示,軟件系統(tǒng)主要由用戶界面、數(shù)據(jù)庫搜索引擎和數(shù)據(jù)轉(zhuǎn)換器組成。

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

? ? 2.硬件子系統(tǒng)設(shè)計

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

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

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

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

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

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

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

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

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

處理器的 I/O 功能是否滿足系統(tǒng)的需求,即許多處理器提供內(nèi)置的外部設(shè)備,以減少芯片數(shù)量、降低成本,應(yīng)盡量考慮這種方案。

處理器的相關(guān)軟件支持工具,即該款處理器是否具有完善的嵌入式操作系統(tǒng)、編程語言和開發(fā)工具的支持等。

處理器的調(diào)試,即處理器是否集成了調(diào)試功能,如是否支持 JTAG、BDM 等調(diào)試方式。

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

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

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

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

? 設(shè)計時需要注意以下幾點。

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

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

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

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

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

? ? 總之,硬件設(shè)計者應(yīng)該給軟件設(shè)計者更多、更詳細的信息,以便于進行軟件設(shè)計和開發(fā)。

? ? 3.軟件子系統(tǒng)設(shè)計

? ? 根據(jù)需求分析階段的規(guī)格說明文檔,確定系統(tǒng)計算模型,對軟件部分進行合理的設(shè)計即可。

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

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

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

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

操作系統(tǒng)的內(nèi)存需求如何。均衡考慮是否需要額外 ram 或 eeprom 來迎合操作系統(tǒng)對內(nèi)存的較大要求。有些操作系統(tǒng)對內(nèi)存的要求是與目標(biāo)相關(guān)的。如 tornado/vxworks,開發(fā)人員能按照應(yīng)用需求分配所需的資源,而不是為操作系統(tǒng)分配資源。從需要幾 k 字節(jié)存儲區(qū)的嵌入設(shè)計到需求更多的操作系統(tǒng)功能的復(fù)雜的高端實時應(yīng)用,開發(fā)人員可任意選擇多達 80 種不同的配置。

操作系統(tǒng)附加軟件包。是否包含所需的軟件部件,如網(wǎng)絡(luò)協(xié)議棧、文件系統(tǒng)、各種常用外設(shè)的驅(qū)動等。

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

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

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

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

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

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

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

基本性能。在嵌入式系統(tǒng)開發(fā)過程中使用的語言種類很多,比較廣泛應(yīng)用的高級語言有 Ada、C/C++、Modula-2 和 Java 等。Ada 語言定義嚴(yán)格,易讀易懂,有較豐富的庫程序支持,目前,在國防、航空、航天等相關(guān)領(lǐng)域應(yīng)用比較廣泛,未來仍將在這些領(lǐng)域占有重要地位。C 語言具有廣泛的庫程序支持,是嵌入式系統(tǒng)中應(yīng)用最廣泛的編程語言,在將來很長一段時間內(nèi)仍將在嵌入式系統(tǒng)應(yīng)用領(lǐng)域中占重要地位。 C++是一種面向?qū)ο蟮木幊陶Z言,在嵌入式系統(tǒng)設(shè)計中也得到了廣泛的應(yīng)用,如 GNU C++。Visual C++是一種集成開發(fā)環(huán)境,支持可視化編程,廣泛應(yīng)用于 GUI 程序開發(fā)。但 C 與 C++相比,C++的目標(biāo)代碼往往比較龐大和復(fù)雜,在嵌入式系統(tǒng)應(yīng)用中應(yīng)充分考慮這一因素。

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

選擇開發(fā)語言,建立交叉開發(fā)環(huán)境;

根據(jù)詳細設(shè)計說明編寫源代碼,進行交叉編譯、鏈接;

目標(biāo)代碼的重定位和下載;

在宿主機或目標(biāo)機調(diào)試、驗證軟件功能;

進行代碼的優(yōu)化。

? ? (4)軟件開發(fā)文檔。在嵌入式產(chǎn)品的開發(fā)設(shè)計過程中,開發(fā)階段完成系統(tǒng)產(chǎn)品的實現(xiàn),這一階段同時需要完成一系列的文檔,這些文檔對完成產(chǎn)品設(shè)計、維護相當(dāng)重要,這些文檔分別為技術(shù)文件目錄、技術(shù)任務(wù)書、技術(shù)方案報告、產(chǎn)品規(guī)格、技術(shù)條件、設(shè)計說明書、試驗報告、總結(jié)報告等。

8 系統(tǒng)集成與測試

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

? ? 一般系統(tǒng)的硬件測試包括可靠性測試和電磁兼容性測試,關(guān)于電磁兼容性目前已經(jīng)有了強制性國內(nèi)和國際標(biāo)準(zhǔn)。

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

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

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

? ? (3)嵌入式軟件通常使用在關(guān)鍵性的應(yīng)用中。

? ? (4)嵌入式軟件必須和嵌入式硬件一起對產(chǎn)品的故障和可靠性負(fù)責(zé)。

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

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

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

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

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

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

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容