嵌入式系統(tǒng)原理嵌入式系統(tǒng)開發(fā)技術(shù)_第1頁
嵌入式系統(tǒng)原理嵌入式系統(tǒng)開發(fā)技術(shù)_第2頁
嵌入式系統(tǒng)原理嵌入式系統(tǒng)開發(fā)技術(shù)_第3頁
嵌入式系統(tǒng)原理嵌入式系統(tǒng)開發(fā)技術(shù)_第4頁
嵌入式系統(tǒng)原理嵌入式系統(tǒng)開發(fā)技術(shù)_第5頁
已閱讀5頁,還剩137頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院1第2章嵌入式系統(tǒng)開發(fā)技術(shù)

嵌入式系統(tǒng)的設(shè)計(jì)開發(fā)與一般計(jì)算機(jī)系統(tǒng)硬軟件設(shè)計(jì)方法有很大不同.知識面同時覆蓋硬件,軟件,應(yīng)用對象的特性(如機(jī)械方面,電機(jī)傳動方面等).本章討論下面問題: 1.嵌入式系統(tǒng)的結(jié)構(gòu)分析

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

3.嵌入式系統(tǒng)開發(fā)技術(shù)

4.嵌入式系統(tǒng)的調(diào)試技術(shù)

5.嵌入式系統(tǒng)的開發(fā)技術(shù)的發(fā)展趨勢及其挑戰(zhàn)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院22.1嵌入式系統(tǒng)的結(jié)構(gòu)分析一個嵌入式系統(tǒng)一般都由嵌入式計(jì)算機(jī)系統(tǒng)和執(zhí)行裝置(被控對象)組成.見P16圖2-1而嵌入式計(jì)算機(jī)系統(tǒng)一般包括:硬件層,中間層,(系統(tǒng))軟件層,應(yīng)用軟件層(功能層)執(zhí)行裝置也稱為被控對象,它接受系統(tǒng)發(fā)出的控制命令,執(zhí)行規(guī)定的操作或任務(wù).如手機(jī)中的微型電機(jī),機(jī)床等設(shè)備中的伺服電機(jī),冶煉中的熱電耦,石油化工企業(yè)用的流量計(jì),鐵路信號連鎖控制器等.本章分別介紹嵌入式計(jì)算機(jī)系統(tǒng)中的1.硬件層;2.中間層;3.系統(tǒng)軟件層;以及4.應(yīng)用軟件層2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院3圖2-1嵌入式系統(tǒng)的組成結(jié)構(gòu)玻璃配料:參考資料\GLASSBATCHING.doc2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院42.1.1硬件層硬件層主要由嵌入式微處理器,存儲器SDRAM、ROM、Flash等,電源電路、時鐘電路、復(fù)位電路、存儲器控制電路組成嵌入式基本系統(tǒng).根據(jù)需要選定通用設(shè)備接口和I/O接口(A/D、D/A、開關(guān)、鍵盤按鈕、傳感器、LED/LCD等)等組成.形成完整的嵌入式系統(tǒng).專用集成電路芯片(ASIC,ApplicationSpecificIntegratedCircuit),如打印機(jī)控制器,硬盤控制器等.可編程陣列芯片(FPGA和CPLD)FPGA(FieldProgrammableGateArray),即現(xiàn)場可編程門陣列2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院52.1.1硬件層-可編程芯片(FPGA)FPGA(Field-ProgrammableGateArray),即現(xiàn)場可編程門陣列.FPGA以硬件描述語言(Verilog或VHDL)所完成的電路設(shè)計(jì),可以經(jīng)過簡單的綜合與布局,快速的燒錄至FPGA上進(jìn)行測試,是現(xiàn)代IC設(shè)計(jì)驗(yàn)證的技術(shù)主流。FPGA中的可編輯元件可以被用來實(shí)現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(flip-flop)或者其他更加完整的記憶塊。進(jìn)一步閱讀資料:參考資料\CPLD、FPGA、及IP核參考文獻(xiàn)\FPGA介紹.doc2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院62.1.1硬件層-可編程芯片(CPLD)CPLD(ComplexProgrammableLogicDevice)復(fù)雜可編程邏輯器件,屬于規(guī)模大,結(jié)構(gòu)復(fù)雜的大規(guī)模集成電路范圍。是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。CPLD的基本設(shè)計(jì)方法是借助集成開發(fā)軟件平臺,用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜(“在系統(tǒng)”編程)將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng).CPLD主要是由可編程邏輯宏單元(MC,MacroCell)圍繞中心的可編程互連矩陣單元組成。其中MC結(jié)構(gòu)較復(fù)雜,并具有復(fù)雜的I/O單元互連結(jié)構(gòu),可由用戶根據(jù)需要生成特定的電路結(jié)構(gòu),完成一定的功能。由于CPLD內(nèi)部采用固定長度的金屬線進(jìn)行各邏輯塊的互連,所以設(shè)計(jì)的邏輯電路具有時間可預(yù)測性,避免了分段式互連結(jié)構(gòu)時序不完全預(yù)測的缺點(diǎn)。進(jìn)一步閱讀:參考資料\CPLD、FPGA、及IP核參考文獻(xiàn)\CPLD介紹.doc2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院72.1.2中間層硬件層與軟件層之間為中間層,也稱為硬件抽象層(HardwareAbstractLayer,HAL)或板級支持包(BoardSupportPackage,BSP)。中間層將系統(tǒng)上層軟件與底層硬件分離開來,使系統(tǒng)的底層驅(qū)動程序與硬件無關(guān),上層軟件開發(fā)人員無需關(guān)心底層硬件的具體情況,根據(jù)BSP層提供的接口即可進(jìn)行開發(fā)。該層一般包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能。BSP具有以下兩個特點(diǎn)。硬件相關(guān)性:因?yàn)榍度胧綄?shí)時系統(tǒng)的硬件環(huán)境具有應(yīng)用相關(guān)性,而作為上層軟件與硬件平臺之間的接口,BSP需要為操作系統(tǒng)提供操作和控制具體硬件的方法。操作系統(tǒng)相關(guān)性:不同的操作系統(tǒng)具有各自的軟件層次結(jié)構(gòu),因此,不同的操作系統(tǒng)具有特定的硬件接口形式。BSP是一個介于操作系統(tǒng)和底層硬件之間的軟件層次,包括了系統(tǒng)中大部分與硬件聯(lián)系緊密的軟件模塊。設(shè)計(jì)一個完整的BSP需要完成兩部分工作:嵌入式系統(tǒng)的硬件初始化以及BSP功能,設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院82.1.2中間層-嵌入式系統(tǒng)硬件初始化

系統(tǒng)初始化可以分為3個主要環(huán)節(jié),依次為:片級初始化、板級初始化和系統(tǒng)級初始化。片級初始化:完成嵌入式微處理器的初始化,包括設(shè)置嵌入式微處理器的核心寄存器和控制寄存器、嵌入式微處理器核心工作模式和嵌入式微處理器的局部總線模式等。片級初始化把嵌入式微處理器從上電時的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。這是一個純硬件的初始化過程。(如F28XXDSP,內(nèi)核先上電,外圍后上電)板級初始化:完成嵌入式微處理器以外的其他硬件設(shè)備的初始化。另外,還需設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境。這是一個同時包含軟硬件兩部分在內(nèi)的初始化過程。系統(tǒng)初始化:該初始化過程以軟件初始化為主,主要進(jìn)行操作系統(tǒng)的初始化。BSP將對嵌入式微處理器的控制權(quán)轉(zhuǎn)交給嵌入式操作系統(tǒng),由操作系統(tǒng)完成余下的初始化操作,包含加載和初始化與硬件無關(guān)的設(shè)備驅(qū)動程序,建立系統(tǒng)內(nèi)存區(qū),加載并初始化其他系統(tǒng)軟件模塊,如網(wǎng)絡(luò)系統(tǒng)、文件系統(tǒng)等。最后,操作系統(tǒng)創(chuàng)建應(yīng)用程序環(huán)境,并將控制權(quán)交給應(yīng)用程序的入口。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院92.1.2中間層-硬件相關(guān)的設(shè)備驅(qū)動程序

BSP的另一個主要功能是硬件相關(guān)的設(shè)備驅(qū)動。硬件相關(guān)的設(shè)備驅(qū)動程序的初始化通常是一個從高到低的過程。盡管BSP中包含硬件相關(guān)的設(shè)備驅(qū)動程序,但是這些設(shè)備驅(qū)動程序通常不直接由BSP使用,而是在系統(tǒng)初始化過程中由BSP將它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動程序關(guān)聯(lián)起來,并在隨后的應(yīng)用中由通用的設(shè)備驅(qū)動程序調(diào)用,實(shí)現(xiàn)對硬件設(shè)備的操作。與硬件相關(guān)的驅(qū)動程序是BSP設(shè)計(jì)與開發(fā)中另一個非常關(guān)鍵的環(huán)節(jié)。

參考資料\BSP\嵌入式系統(tǒng)中BSP的作用及其相關(guān)聯(lián)環(huán)節(jié)的分析.pdf2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院102.1.3系統(tǒng)軟件層系統(tǒng)軟件層由實(shí)時多任務(wù)操作系統(tǒng)(Real-timeOperationSystem,RTOS)、文件系統(tǒng)、圖形用戶接口(GraphicUserInterface,GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。RTOS負(fù)責(zé)嵌人系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動;它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能。RTOS在系統(tǒng)實(shí)時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。

RTOS是相對于一般操作系統(tǒng)而言的,它除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件功能等外,還有以下特點(diǎn):

(1)可裝卸性。開放性、可伸縮性的體系結(jié)構(gòu)。(2)強(qiáng)實(shí)時性。

(3)統(tǒng)一的接口。提供各種設(shè)備驅(qū)動接日.(4)操作方便、簡單、提供友好的圖形GUI,(5)提供強(qiáng)大的網(wǎng)絡(luò)功能,(6)強(qiáng)穩(wěn)定性,弱交互性。(7)固化代碼。嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的ROM中。(8)良好的移植性.

2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院112.1.4應(yīng)用軟件層應(yīng)用軟件層也成為功能層.主要由基于RTOS開發(fā)的應(yīng)用程序組成,完成對被控對象的控制功能.該層為方便用戶操作,往往需要提供一個友好的人機(jī)界面.對復(fù)雜系統(tǒng),要對系統(tǒng)進(jìn)行需求分析,確定系統(tǒng)的功能.然后將其映射到整個系統(tǒng)的硬件,軟件和執(zhí)行裝置的設(shè)計(jì)過程中.該過程稱為系統(tǒng)的功能實(shí)現(xiàn).2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院122.2嵌入式系統(tǒng)的設(shè)計(jì)方法

本節(jié)介紹如下三個方面的內(nèi)容: 1.嵌入式系統(tǒng)的設(shè)計(jì)流程

2.嵌入式系統(tǒng)的一般設(shè)計(jì)方法

3.嵌入式系統(tǒng)的軟、硬件協(xié)同設(shè)計(jì)技術(shù)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院132.2.1嵌入式系統(tǒng)的設(shè)計(jì)流程如圖2.2所示,嵌入式系統(tǒng)設(shè)計(jì)一般由5個階段構(gòu)成:需求分析;體系結(jié)構(gòu)設(shè)計(jì);硬件,軟件設(shè)計(jì);系統(tǒng)集成;系統(tǒng)測試。各個階段之間往往要求不斷的反復(fù)和修改,直至完成最終設(shè)計(jì)目標(biāo)。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院14圖2.2嵌入式系統(tǒng)的設(shè)計(jì)流程2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院151.系統(tǒng)需求分析

確定設(shè)計(jì)任務(wù)和設(shè)計(jì)目標(biāo),并提煉出設(shè)計(jì)規(guī)格說明書。系統(tǒng)的需求一般分功能性需求和非功能性需求兩方面。功能性需求是系統(tǒng)的基本功能,如輸入輸出信號、操作方式等;非功能需求包括系統(tǒng)性能、成本、功耗、體積、重量、等因素。2.體系結(jié)構(gòu)設(shè)計(jì)

對硬件、軟件和執(zhí)行裝置的功能劃分以及系統(tǒng)的軟件、硬件選型等。一個好的體系結(jié)構(gòu)是設(shè)計(jì)成功與否的關(guān)鍵。3.硬件,軟件設(shè)計(jì)

基于體系結(jié)構(gòu),對系統(tǒng)的軟件、硬件進(jìn)行詳細(xì)設(shè)計(jì)。為了縮短產(chǎn)品開發(fā)周期,設(shè)計(jì)往往是并行的。應(yīng)該說,嵌入式系統(tǒng)設(shè)計(jì)的工作大部分都集中在軟件設(shè)計(jì)上,采用面向?qū)ο蠹夹g(shù)、軟件組件技術(shù)、模塊化設(shè)計(jì)是現(xiàn)代軟件工程經(jīng)常采用的方法。4.系統(tǒng)集成

把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)單元設(shè)計(jì)過程中的錯誤。5.系統(tǒng)測試

對設(shè)計(jì)好的系統(tǒng)進(jìn)行測試,看其是否滿足規(guī)格說明書中給定的功能要求。針對系統(tǒng)的不同的復(fù)雜程度,目前有一些常用的系統(tǒng)設(shè)計(jì)方法,如自頂向下的設(shè)計(jì)方法、自下向上的設(shè)計(jì)方法、逐步細(xì)化設(shè)計(jì)方法和并行設(shè)計(jì)方法等。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院162.2.2嵌入式系統(tǒng)的一般設(shè)計(jì)方法通常在單片機(jī)系統(tǒng)的開發(fā)和應(yīng)用中,按照下面圖2.3所示的流程進(jìn)行。

圖2-3單片機(jī)系統(tǒng)的開發(fā)流程

用戶需求選擇處理器設(shè)計(jì)硬件平臺按照設(shè)計(jì)的硬件平臺編寫軟件遇到硬件問題?是修改硬件平臺軟件測試是否通過?整個系統(tǒng)測試開發(fā)結(jié)束否是否2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院172.2.2嵌入式系統(tǒng)的一般設(shè)計(jì)方法在嵌入式系統(tǒng)的應(yīng)用開發(fā)中,開發(fā)過程將改變?yōu)槿鐖D2.4所示的過程。用戶需求選擇嵌入式處理器及硬件平臺選擇合適的嵌入式操作系統(tǒng)應(yīng)用程序測試通過?整個系統(tǒng)測試開發(fā)結(jié)束是在操作系統(tǒng)上開發(fā)應(yīng)用程序否圖2-4嵌入式系統(tǒng)的開發(fā)流程2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院182.2.2嵌入式系統(tǒng)的一般設(shè)計(jì)方法在應(yīng)用嵌入式系統(tǒng)開發(fā)的過程中,因?yàn)閷?yīng)于每一個處理器的硬件平臺都是通用的、固定的、成熟的。所以,在開發(fā)過程中減少了硬件系統(tǒng)錯誤的引入機(jī)會;同時,因?yàn)榍度胧讲僮飨到y(tǒng)屏蔽掉了底層硬件的很多復(fù)雜信息,使得開發(fā)者通過操作系統(tǒng)提供的API函數(shù)可以完成大部分工作,大大地簡化了開發(fā)過程,提高了系統(tǒng)的穩(wěn)定性。綜上所述,嵌入式系統(tǒng)的開發(fā)可以說是把開發(fā)者從反復(fù)進(jìn)行硬件平臺的設(shè)計(jì)過程中解放出來,從而可以把主要的精力放在編寫特定的應(yīng)用程序上。這個過程更類似于在系統(tǒng)機(jī)(如PC機(jī))上的某個操作系統(tǒng)下開發(fā)應(yīng)用程序。(硬件平臺的設(shè)計(jì)過程更加具有挑戰(zhàn)性!)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院192.2.3嵌入式系統(tǒng)的軟、硬件協(xié)同設(shè)計(jì)技術(shù)傳統(tǒng)的嵌入式系統(tǒng)設(shè)計(jì)方法如圖2-5所示.硬件和軟件分為兩個獨(dú)立的部分,由硬件工程師和軟件工程師按照擬定的設(shè)計(jì)流程分別完成。這種設(shè)計(jì)方法只能改善硬件/軟件各自的性能,而有限的設(shè)計(jì)空間不可能對系統(tǒng)做出較好的性能綜合優(yōu)化。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院20需求分析、總體設(shè)計(jì)嵌入式硬件開發(fā)嵌入式軟件開發(fā)嵌入式系統(tǒng)集成、測試、驗(yàn)證圖2-5嵌入式系統(tǒng)的一般設(shè)計(jì)方法2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院212.2.3嵌入式系統(tǒng)的軟、硬件協(xié)同設(shè)計(jì)技術(shù)從理論上來說,每一個應(yīng)用系統(tǒng),都存在一個適合于該系統(tǒng)的硬件、軟件功能的最佳組合。如何從應(yīng)用系統(tǒng)需求出發(fā),依據(jù)一定的指導(dǎo)原則和分配算法對硬件/軟件功能進(jìn)行分析及合理的劃分,從而使系統(tǒng)的整體性能、運(yùn)行時間、能量耗損、存儲能量達(dá)到最佳狀態(tài),已成為硬件/軟件協(xié)同設(shè)計(jì)的重要研究內(nèi)容之一。應(yīng)用系統(tǒng)的多樣性和復(fù)雜性,使硬件/軟件的功能劃分、資源調(diào)度與分配、系統(tǒng)優(yōu)化、系統(tǒng)綜合、模擬仿真存在許多需要研究解決的問題,因而使國際上協(xié)同設(shè)計(jì)領(lǐng)域的研究日益活躍。系統(tǒng)協(xié)同設(shè)計(jì)與傳統(tǒng)設(shè)計(jì)相比有兩個顯著的特點(diǎn):

(1)描述硬件和軟件使用統(tǒng)一的表示形式;

(2)硬件,軟件劃分可以選擇多種方案,直到滿足要求。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院222.2.3嵌入式系統(tǒng)的軟、硬件協(xié)同設(shè)計(jì)技術(shù)傳統(tǒng)的嵌入式系統(tǒng)開發(fā)采用的是軟件開發(fā)與硬件開發(fā)分離的方式,其過程可描述如下:

(1)需求分析:

(2)軟硬件分別設(shè)計(jì)、開發(fā)、調(diào)試、測試:

(3)系統(tǒng)集成:軟硬件集成;

(4)集成測試:

(5)若系統(tǒng)正確,則結(jié)束,否則繼續(xù)進(jìn)行;

(6)若出現(xiàn)錯誤,需要對軟、硬件分別驗(yàn)證和修改:

(7)返回(3),繼續(xù)進(jìn)行集成測試。雖然在系統(tǒng)設(shè)計(jì)的初始階段考慮了軟硬件的接口問題,但由于軟硬件分別開發(fā),各自部分的修改和缺陷很容易導(dǎo)致系統(tǒng)集成出現(xiàn)錯誤。由于設(shè)計(jì)方法的限制,這些錯誤不但難于定位,而且更重要的是,對它們的修改往往會涉及整個軟件結(jié)構(gòu)或硬件配置的改動。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院232.2.3軟、硬件協(xié)同設(shè)計(jì)技術(shù)軟硬件協(xié)同設(shè)計(jì)方法。一個典型的硬件/軟件協(xié)同設(shè)計(jì)過程如圖2-6所示。首先,應(yīng)用獨(dú)立于任何硬件和軟件的功能性規(guī)格方法對系統(tǒng)進(jìn)行描述,采用的方法包括:有限狀態(tài)機(jī)(FSM)、統(tǒng)一化的規(guī)格語言(CSP、VHDL)或其他基于圖形的表示工具,其作用是對硬件/軟件統(tǒng)一表示,便于功能的劃分和綜合;(VHDL使用最多?。┤缓螅诖嘶A(chǔ)上對硬件/軟件進(jìn)行劃分,即對硬件,軟件的功能模塊進(jìn)行分配。但是,這種功能分配不是隨意的,而是從系統(tǒng)功能要求和限制條件出發(fā),依據(jù)算法進(jìn)行的。完成硬件/軟件功能劃分之后,需要對劃分結(jié)果做出評估。方法之一是性能評估,另一種方法是對硬件、軟件綜合之后的系統(tǒng)依據(jù)指令級評價參數(shù)做出評估。如果評估結(jié)果不滿足要求,說明劃分方案選擇不合理,需要重新劃分硬件/軟件模塊,以上過程重復(fù)直到系統(tǒng)獲得一個滿意的硬件/軟件實(shí)現(xiàn)為止。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院24系統(tǒng)描述軟硬件劃分接口綜合設(shè)計(jì)驗(yàn)證設(shè)計(jì)實(shí)現(xiàn)硬件綜合軟件綜合圖2-6嵌入式系統(tǒng)的軟硬件協(xié)同設(shè)計(jì)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院252.2.3嵌入式系統(tǒng)的軟、硬件協(xié)同設(shè)計(jì)技術(shù)軟硬件協(xié)同設(shè)計(jì)過程可歸納為:

(1)需求分析;

(2)軟硬件協(xié)同設(shè)計(jì);

(3)軟硬件實(shí)現(xiàn);

(4)軟硬件協(xié)同測試和驗(yàn)證。這種方法的特點(diǎn)是在協(xié)同設(shè)計(jì)(co-design)、協(xié)同測試(co-test)和協(xié)同驗(yàn)證(Co-verification)上,充分考慮了軟硬件的關(guān)系,并在設(shè)計(jì)的每個層次上給以測試驗(yàn)證,使得盡早發(fā)現(xiàn)和解決問題,避免災(zāi)難性錯誤的出現(xiàn)。進(jìn)一步閱讀:參考資料\嵌入式系統(tǒng)的開發(fā)技術(shù)與設(shè)計(jì)方法參考文獻(xiàn)\嵌入式系統(tǒng)的設(shè)計(jì)流程和一般設(shè)計(jì)方法.doc2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院262.3嵌入式系統(tǒng)開發(fā)技術(shù)

嵌入式系統(tǒng)開發(fā)技術(shù)方面主要介紹如下4個方面的內(nèi)容: 1.需求分析

2.詳細(xì)設(shè)計(jì)

3.系統(tǒng)實(shí)現(xiàn)

4.系統(tǒng)測試2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院272.3.1需求分析需求分析是在項(xiàng)目開始時了解項(xiàng)目的情況,解決用戶需要做什么、需要完成什么功能和任務(wù)等問題,這一階段主要包括:分析用戶的需求、初步確定硬件和軟件、檢查需求分析的結(jié)果、確定項(xiàng)目的約束條件、概要設(shè)計(jì)等幾個方面。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院281、分析需求1)分析需求通過與客戶交流,了解用戶的需求、用戶意圖等,明確客戶到底需要開發(fā)什么樣的產(chǎn)品,包括產(chǎn)品的功能需求和非功能需求。通常,描述產(chǎn)品需求的文檔是由嵌入式系統(tǒng)分析師從用戶的視角來寫的,由一系列的用戶需求組成,以文字、圖表等方式描述客戶需求。再從客戶的需求中獲取一組一致性的需求,并整理成正式的規(guī)格說明書。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院292)確認(rèn)需求一般來說,客戶對產(chǎn)品的需求主要包括功能、性能、價格、尺寸和重量、功耗等。

性能:主要指系統(tǒng)的性能,最重要的就是系統(tǒng)的處理速度,系統(tǒng)的處理速度通常是該系統(tǒng)的實(shí)用性和最終成本的主要決定因素(不一定!井下儀表,無線傳感器網(wǎng)絡(luò)等能耗最重要!)。

價格:產(chǎn)品最終的成本或者銷售價格也是一個主要的考慮因素。產(chǎn)品的成本包含生產(chǎn)成本和不可再生工程成本(比如人力成本和設(shè)計(jì)系統(tǒng)的其他花費(fèi))(民用系統(tǒng)價格非常重要,國防系統(tǒng)性能第一?。?。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院30

系統(tǒng)的尺寸和重量:最終產(chǎn)品的物理特性會因?yàn)槭褂玫念I(lǐng)域不同而大不相同。手持設(shè)備對系統(tǒng)的尺寸和重量就有很嚴(yán)格的限制。國防上星、上機(jī)、上艦裝備對尺寸、載荷有嚴(yán)格要求。

功耗:比如那些靠電池來供電的系統(tǒng)以及其他一些電器來說,功耗是十分重要的。如:油井的井下儀器儀表。在一些非電池供電的場合,如工業(yè)防爆現(xiàn)場(礦井、化工等),對電源也有嚴(yán)格的要求,以保證應(yīng)用環(huán)境的安全。電源問題在需求階段可以以電池壽命的方式(通常mAh,毫安小時)提出,也可以以系統(tǒng)的供電電流要求數(shù)值提出。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院313)羅列需求下面列舉的是一些能讓設(shè)計(jì)者的思維細(xì)致化的問題,當(dāng)然,并不是列出的每個問題都適合所有的嵌入式系統(tǒng)項(xiàng)目。(1)系統(tǒng)任務(wù)是什么?(2)系統(tǒng)輸入是什么?(3)系統(tǒng)輸出是什么?(4)用戶接口如何,如何交互?(5)系統(tǒng)的重量和體積如何,尺寸如何?(6)系統(tǒng)需連接哪些或哪類外設(shè)?(7)系統(tǒng)是否需要其他軟件?(8)系統(tǒng)處理的數(shù)據(jù)類型?(9)系統(tǒng)與其他系統(tǒng)的通信方式?2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院32(10)系統(tǒng)是單機(jī)系統(tǒng)還是網(wǎng)絡(luò)系統(tǒng)?(11)系統(tǒng)的響應(yīng)時間是多少?(12)系統(tǒng)的安全措施?(13)系統(tǒng)的運(yùn)行環(huán)境?(14)系統(tǒng)存儲器類型、容量?(15)系統(tǒng)的可拆裝性、可靠性和牢固性?(16)系統(tǒng)的供電模式?(17)系統(tǒng)故障處理方式、方法以及用戶如何處理故 障?(18)是否需要任何手動或機(jī)械代用裝置?(19)系統(tǒng)是否將具有遠(yuǎn)程診斷或更正問題的功能?(20)其他問題。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院334)需求表格如表2—1所示為一個需求表格的樣本,這個表格在工程開始時填寫。在考慮系統(tǒng)基本特征時可以將這個表格作為檢查表。表2-1需求樣本名稱目的輸入輸出功能生產(chǎn)成本功耗性能物理尺寸和質(zhì)量5)需求的內(nèi)部一致性寫完需求以后,應(yīng)該對它們的內(nèi)部一致性進(jìn)行檢查。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院342、確定軟硬件系統(tǒng)分析階段需要考慮的一些項(xiàng)目如下。

處理器:首先選擇處理器的速度(暫時可以不選擇處理器的型號,處理器的速度一般以MIPS為度量標(biāo)準(zhǔn))

總線吞吐量:總線的吞吐量在大量的數(shù)據(jù)傳輸應(yīng)用(如多媒體應(yīng)用)中非常重要。

操作系統(tǒng):選擇將使用的操作系統(tǒng)是另一個關(guān)鍵的決定。也許,做出這個決定可能為時過早,但可定下設(shè)計(jì)所需的操作系統(tǒng)的類型。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院35

編程語言:選擇系統(tǒng)開發(fā)語言,這一過程比較簡單,目前在嵌入式系統(tǒng)開發(fā)中,使用比較多的語言是C語言,或C語言與匯編語言的混合;其次是Java、嵌式入C++等。

編譯器選擇:關(guān)于選擇編譯器方面,目前的選擇比較多,一般分成商用和免費(fèi)兩種。目前的商用編譯器一般以集成開發(fā)環(huán)境工具包的方式提供,其優(yōu)點(diǎn)是代碼優(yōu)化比較好、效率高,缺點(diǎn)是價格貴;免費(fèi)的工具使用最多的是GNU系列工具,如GCC編譯器、GDB調(diào)試器,免費(fèi)工具已經(jīng)被移植到了許多常用的處理器上了,如ARM系列、PowerPC系列、MIPS系列等,但是它們的編譯效率不高。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院36

選擇硬件:設(shè)計(jì)嵌入式系統(tǒng)硬件通常有兩種方法。一種方案是使用第三方的硬件模塊,典型的如PC104模塊,用戶只需要選擇I/O模塊,就可以很快地開發(fā)出嵌入式系統(tǒng)產(chǎn)品的原型。另一種方案是自己設(shè)計(jì)(上水平,完全自主。真正高精尖的產(chǎn)品必須采用自己設(shè)計(jì)方案)。一般地,商品化模塊的成本比較高,如果開發(fā)的產(chǎn)品數(shù)量比較大,盡量采用自己設(shè)計(jì)的方案,可以降低成本。但是在開發(fā)階段,可以使用第三方提供的開發(fā)板、評估板等縮短開發(fā)時間。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院373.審視需求分析的結(jié)果

p26(自己看)4.項(xiàng)目約束

pp26-27(自己看)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院381)建立系統(tǒng)結(jié)構(gòu)模型的方式概要設(shè)計(jì)主要是對系統(tǒng)的初步功能進(jìn)行設(shè)計(jì)。這種設(shè)計(jì)是粗糙的、不具體的和不詳細(xì)的,但又是嵌入式系統(tǒng)開發(fā)中十分重要的階段。在需求分析建立之后,就需要建立完整的功能模型,并根據(jù)現(xiàn)有的系統(tǒng)結(jié)構(gòu)庫對系統(tǒng)模型進(jìn)行設(shè)計(jì)。一般而言,在系統(tǒng)結(jié)構(gòu)模型和系統(tǒng)功能模型之間可以通過建立一個映射層,來完成從功能需求到結(jié)構(gòu)模型之間的轉(zhuǎn)化。在映射層上完成的任務(wù)主要是選擇映射的方式,考慮在性能和應(yīng)用需求環(huán)境方面的因素。如圖2—7所示描述了在功能層、映射層和模型層之間的關(guān)系。在完成需求分析后就要建立功能需求庫,功能需求庫是需求分析的結(jié)果。(映射層的概念較虛,不必太注重)5、概要設(shè)計(jì)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院39功能需求庫功能需求庫將功能轉(zhuǎn)換為結(jié)構(gòu)驗(yàn)證性能和應(yīng)用需求將功能轉(zhuǎn)換為結(jié)構(gòu)將功能轉(zhuǎn)換為結(jié)構(gòu)功能層(略)映射層模型層圖2-7系統(tǒng)結(jié)構(gòu)模型建立方式2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院402)系統(tǒng)結(jié)構(gòu)模型建立系統(tǒng)結(jié)構(gòu)模型包括硬件和軟件兩個部分,在系統(tǒng)結(jié)構(gòu)的實(shí)現(xiàn)中采用硬件/軟件協(xié)同設(shè)計(jì)(Hardware/SoftwareCo-design)方式完成。如圖2-8所示是一個典型的從上至下的設(shè)計(jì)、實(shí)現(xiàn)過程。硬件/軟件協(xié)同設(shè)計(jì)只適合基于FPGA的SoC系統(tǒng)。不必完全照搬硬件/軟件協(xié)同設(shè)計(jì),有時單片機(jī)方式更實(shí)在!2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院41系統(tǒng)結(jié)構(gòu)模型功能設(shè)計(jì)任務(wù)寄存器傳輸設(shè)計(jì)模塊高層語言邏輯門級設(shè)計(jì)物理設(shè)計(jì)目標(biāo)代碼系統(tǒng)集成通信進(jìn)程結(jié)構(gòu)化描述詳細(xì)邏輯設(shè)計(jì)系統(tǒng)測試圖2-8軟硬件協(xié)同設(shè)計(jì)的結(jié)構(gòu)模型這實(shí)際是FPGA開發(fā)方式!2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院42硬件設(shè)計(jì)包括以下三個部分:(1)功能性設(shè)計(jì):根據(jù)模型確定硬件需要實(shí)現(xiàn)的功能。(2)結(jié)構(gòu)化設(shè)計(jì):確定硬件的組成,并確定數(shù)據(jù)的控制流程。(3)物理設(shè)計(jì)與實(shí)現(xiàn):硬件邏輯設(shè)計(jì),包括硬件電路原理圖的設(shè)計(jì)、PCB布線;最后是物理硬件實(shí)現(xiàn)(制板,焊接,安裝,調(diào)試),以開發(fā)板的形式出現(xiàn)(注意:這實(shí)際是詳細(xì)設(shè)計(jì)的最終結(jié)果)。軟件設(shè)計(jì)包括以下三個部分:(1)功能分析和設(shè)計(jì):分析系統(tǒng)需要實(shí)現(xiàn)的任務(wù)。(2)軟件模塊劃分:根據(jù)任務(wù)劃分使用的模塊。(3)模塊開發(fā)與實(shí)現(xiàn):通過編程語言實(shí)現(xiàn)各個高層模塊,并通過交叉開發(fā)環(huán)境實(shí)現(xiàn)目標(biāo)代碼。在系統(tǒng)集成時,需要實(shí)現(xiàn)硬件底層代碼(包括板級支持包代碼和硬件抽象層代碼),完成軟、硬件的集成任務(wù)。然后進(jìn)行系統(tǒng)測試。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院43詳細(xì)設(shè)計(jì)階段是利用需求分析的結(jié)果,設(shè)計(jì)滿足用戶需求的嵌入式系統(tǒng)產(chǎn)品的階段。這一階段主要工作是審查需求分析獲得的資料;進(jìn)行體系結(jié)構(gòu)設(shè)計(jì);硬件和軟件功能的劃分;硬件和軟件的設(shè)計(jì);檢查設(shè)計(jì)等。2.4.2詳細(xì)設(shè)計(jì)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院441、審查需求分析資料

審查分析資料:在著手設(shè)計(jì)系統(tǒng)前,應(yīng)仔細(xì)審查問題陳述和用戶要求。著手某個項(xiàng)目前,應(yīng)該時刻記住系統(tǒng)實(shí)現(xiàn)的目標(biāo)。審查約束條件:約束條件將決定可做何選擇以及如何建立系統(tǒng)。例如,系統(tǒng)要求浮點(diǎn)運(yùn)算,但預(yù)算不允許處理器中含一個浮點(diǎn)運(yùn)算協(xié)處理器。這就意味著設(shè)計(jì)必須規(guī)定浮點(diǎn)運(yùn)算將由軟件來完成。也意味著必須寫一個浮點(diǎn)函數(shù)庫或買一個第三方產(chǎn)品。2、體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)的目的是描述系統(tǒng)的功能應(yīng)如何實(shí)現(xiàn)。體系結(jié)構(gòu)是系統(tǒng)整體結(jié)構(gòu)的一個計(jì)劃。系統(tǒng)的體系結(jié)構(gòu)取決于如下因素。1)系統(tǒng)實(shí)時方案系統(tǒng)實(shí)時方案是指客戶要求系統(tǒng)具有實(shí)時性時,應(yīng)該選擇什么樣的實(shí)時方案,是選擇硬實(shí)時系統(tǒng)還是軟實(shí)時系統(tǒng)。比如在硬實(shí)時系統(tǒng)的情況下,對定時的要求非常嚴(yán)格(如實(shí)時工業(yè)控制),因此,需要詳細(xì)地進(jìn)行定時分析。參考:參考資料\GLASSBATCHING.doc

中的時間要求.2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院452)操作系統(tǒng)方案在嵌入式系統(tǒng)項(xiàng)目中,根據(jù)客戶需求來分析是否需要嵌入式實(shí)時操作系統(tǒng),如果客戶的應(yīng)用非常簡單或只有一項(xiàng)或少數(shù)的任務(wù),就不需要選擇操作系統(tǒng),要不然,就必須考慮嵌入式操作系統(tǒng)的選擇問題。3)非功能要求是否重要非功能性需求主要是指嵌入式系統(tǒng)產(chǎn)品的重量、物理尺寸等方面。如果是消費(fèi)類電子產(chǎn)品,航空航天產(chǎn)品,傳感器網(wǎng)絡(luò)產(chǎn)品等,則這些因素就是非常關(guān)鍵的。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院464)硬件方案在硬件方案選擇時,主要是選擇處理器和相關(guān)的硬件部分。使用比較多的處理器主要有微控制器、微處理器和DSP。對于小型應(yīng)用系統(tǒng),選擇微控制器就足夠了,否則,需要一個微處理器,如果應(yīng)用涉及到信號處理,比如音頻或視頻處理,就需要選擇DSP了。如果應(yīng)用系統(tǒng)是一個多功能的系統(tǒng),就可以選擇包含一個微控制器或微處理器和一個DSP,來滿足不同的功能。3、確定系統(tǒng)的軟硬件界線從嵌入式系統(tǒng)概念可知,嵌入式系統(tǒng)本身就是軟硬件的統(tǒng)一體、綜合體,也許軟件和硬件之間沒有明顯的界線,但是,在進(jìn)行嵌入式系統(tǒng)設(shè)計(jì)時,必須對硬件與軟件進(jìn)行定界,設(shè)計(jì)人員必須決定問題的哪一部分在硬件中解決,哪一部分在軟件中解決,這種選擇稱為軟硬件定界或稱為軟硬件劃分決策。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院47在嵌入式系統(tǒng)設(shè)計(jì)中,到底是:先設(shè)計(jì)硬件;還是先設(shè)計(jì)軟件;或是軟硬件同時進(jìn)行設(shè)計(jì)。這在嵌入式系統(tǒng)設(shè)計(jì)中沒有設(shè)計(jì)次序的限制,有的系統(tǒng)可以先設(shè)計(jì)硬件,也可以先設(shè)計(jì)軟件,也可以同時進(jìn)行,具體可根據(jù)項(xiàng)目的要求、進(jìn)度和約束條件來確定設(shè)計(jì)次序。4、確定軟硬件設(shè)計(jì)次序2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院485、硬件設(shè)計(jì)1)設(shè)計(jì)硬件子系統(tǒng)硬件設(shè)計(jì)的方法很多,主要有自頂向下(Top-Down)、自底向上、模塊設(shè)計(jì)方法和硬件設(shè)計(jì)外包等。但硬件設(shè)計(jì)中,最常用的方法是自頂向下(Top-Down)設(shè)計(jì)法。用自頂向下(Top-Down)方法:先將硬件分成各部件或模塊,并畫出一張或多張硬件部件的框圖。用一個框圖表示一個單獨(dú)的電路板或電路板的一部分(比如處理器子系統(tǒng)、存儲器子系統(tǒng)可以作為一個模塊,數(shù)據(jù)采集電路和現(xiàn)場驅(qū)動電路可以作為輸入/輸出電路的一部分。在某些情況下,還可將框圖用于一個或多個電路板。把電路邏輯分割成大致對應(yīng)于各功能的一些部件,這些功能將由某個成品芯片,某個需要制備的PAL(可編程陣列邏輯)芯片等提供。參考資料\電路原理圖\EB44B0_Sch.pdf框圖提供了一個快速直觀的參考,框圖給出如何同硬件通信,硬件各部件如何互連,而且,框圖幫助設(shè)計(jì)者在頭腦中構(gòu)建出一個高級的系統(tǒng)框架。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院49在硬件設(shè)計(jì)階段,定義專門的接口電路和接口軟件;而接口的設(shè)計(jì)是硬件設(shè)計(jì)者和軟件設(shè)計(jì)者協(xié)同工作才能完成。硬件接口的定義和設(shè)計(jì)主要對I/O端口、硬件寄存器、內(nèi)存的共享與映射、硬件中斷的中斷號及分配、處理器指標(biāo)等進(jìn)行定義和設(shè)計(jì)。對硬件接口的定義和設(shè)計(jì)的基本要求是盡可能多的信息提供給軟件開發(fā)者,便于進(jìn)行軟件設(shè)計(jì)和編程。2)硬件接口的定義和設(shè)計(jì)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院506、軟件設(shè)計(jì)1)設(shè)計(jì)軟件子系統(tǒng)在進(jìn)行軟件設(shè)計(jì)時,先設(shè)計(jì)軟件的體系結(jié)構(gòu)。在嵌入式系統(tǒng)中比較普遍的體系結(jié)構(gòu)有:層次結(jié)構(gòu)、動態(tài)層次結(jié)構(gòu)、正交體系結(jié)構(gòu)靜態(tài)模塊結(jié)構(gòu)等。對于小的應(yīng)用系統(tǒng),一般使用層次結(jié)構(gòu)即可;對于大的應(yīng)用系統(tǒng)軟件設(shè)計(jì),就應(yīng)該使用多種體系結(jié)構(gòu),才能更好的完成設(shè)計(jì)任務(wù)。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院51在設(shè)計(jì)好系統(tǒng)的軟件體系結(jié)構(gòu)后,就應(yīng)該選擇一種適合應(yīng)用開發(fā)需求的軟件設(shè)計(jì)方法。軟件設(shè)計(jì)的方法很多,主要有原型法、結(jié)構(gòu)化設(shè)計(jì)方法、面向?qū)ο笤O(shè)計(jì)方法、自低向上、自頂向下等。軟件設(shè)計(jì)一般采用自頂向下(Top-Down)的設(shè)計(jì)方法,在定義了硬件接口后,將系統(tǒng)的軟件分解成一些適當(dāng)定義好的子系統(tǒng)或模塊。自頂向下設(shè)計(jì)方法的目的是找出自成一體的模塊或子系統(tǒng),考慮這些模塊或子系統(tǒng)之間的關(guān)系比整個系統(tǒng)考慮和討論起來更容易些;并且分離出的軟件模塊可以并行開發(fā),然后進(jìn)行組裝。例如設(shè)計(jì)一個嵌入式系統(tǒng),包括LCD顯示、UART通信端口、以太網(wǎng)端口。設(shè)計(jì)時把這些模塊分開,分別進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),將會大大加快項(xiàng)目的進(jìn)展。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院52將模塊進(jìn)行分解,分解后獨(dú)立開發(fā),就可以復(fù)用以前的設(shè)計(jì)工作,避免重復(fù)開發(fā)每一個子系統(tǒng)。也許可以購買注冊第三方的軟件(如開發(fā)網(wǎng)絡(luò)設(shè)備),購買商品化的TCP/IP協(xié)議棧會縮短產(chǎn)品上市的時間。然后就是詳盡描述各個子系統(tǒng)和模塊的功能。其實(shí)在找出子系統(tǒng)時,設(shè)計(jì)者已經(jīng)開始做這種工作了,因?yàn)檫@個任務(wù)本身就需要理解各個子系統(tǒng)的功能。軟件設(shè)計(jì)者需要加強(qiáng)對各子系統(tǒng)的了解,如各子系統(tǒng)做什么用,它能提供什么服務(wù)和需要別的哪個子系統(tǒng)提供什么服務(wù)。這些子系統(tǒng)的功能描述應(yīng)該以設(shè)計(jì)文檔的形式提供。需要說明的是,在設(shè)計(jì)嵌入式軟件模塊時,設(shè)計(jì)者必須用專業(yè)技能和專業(yè)知識確保系統(tǒng)實(shí)時性良好并且在允許的范圍內(nèi)不占用更多的存儲空間。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院53軟件接口定義的主要任務(wù)是規(guī)定各個子系統(tǒng)的軟件接口和詳細(xì)的API(應(yīng)用程序編程接口),如規(guī)定函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)以及各子系統(tǒng)接口用到的全局?jǐn)?shù)據(jù)。該部分采用函數(shù)原型、數(shù)據(jù)結(jié)構(gòu)聲明、類聲明等建立頭文件實(shí)現(xiàn)軟件接口定義。軟件系統(tǒng)的總設(shè)計(jì)師還應(yīng)該給出模塊之間的依賴關(guān)系,如果給出函數(shù)之間的依賴關(guān)系,那么設(shè)計(jì)就很詳細(xì)了。通常在較大的系統(tǒng)設(shè)計(jì)時,給出函數(shù)之間的依賴關(guān)系比較困難,一般只給到模塊之間的依賴關(guān)系就足夠了,函數(shù)之間的依賴關(guān)系留給各個模塊的實(shí)現(xiàn)部門來解決。2)軟件接口的定義2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院543)規(guī)定系統(tǒng)啟停過程規(guī)定系統(tǒng)啟停過程就是說明系統(tǒng)啟動和關(guān)閉過程中事件發(fā)生的順序。對于啟動,說明硬件和軟件子系統(tǒng)初始化的細(xì)節(jié),以及初始化的順序。4)定義出錯處理方案某些嵌入式系統(tǒng)需要連續(xù)數(shù)日或數(shù)周地?zé)o人值守運(yùn)行,因此出錯處理在一個嵌入系統(tǒng)中是很關(guān)鍵的。比如無人值守的鐵路道口可知系統(tǒng),就是一個典型的嵌入式系統(tǒng)設(shè)備作為道口控制的核心,如果不規(guī)定或定義錯誤處理方案,就完全可能出現(xiàn)重大交通安全事故,甚至出現(xiàn)人身傷亡。在設(shè)計(jì)階段建立出錯處理策略是非常重要的。參考:參考資料\GLASSBATCHING.doc

連鎖要求,緊急停車(手動控制)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院555)看門狗計(jì)時器(定時喂狗,否則產(chǎn)生看門狗計(jì)時器中斷)看門狗計(jì)時器(Watchdog)涉及到硬件和軟件的內(nèi)容,在后面的章節(jié)中還要詳細(xì)討論。有些的嵌入系統(tǒng)被部署在惡劣環(huán)境中工作,在這樣的環(huán)境中,任何事都有可能發(fā)生。設(shè)計(jì)人員必須有所準(zhǔn)備,以應(yīng)付系統(tǒng)嚴(yán)重失敗而導(dǎo)致的崩潰,而且還必須想法從崩潰中完美地恢復(fù)系統(tǒng)。系統(tǒng)的這種恢復(fù)是借助看門狗計(jì)時器(Watchdog)完成的。看門狗計(jì)時器是一個設(shè)計(jì)者建在某種CPU中的小報警時鐘。當(dāng)CPU通電后,軟件打開它的監(jiān)視計(jì)時器,在正常運(yùn)行期間軟件定期地對監(jiān)視計(jì)時器復(fù)位。監(jiān)視計(jì)時器始終不會數(shù)到零,即沒什么事發(fā)生。然而如果發(fā)生了某些問題,以致于軟件不能對監(jiān)視計(jì)時器復(fù)位,監(jiān)視計(jì)時器將重新啟動整個系統(tǒng)。有些具有監(jiān)視功能的CPU甚至提供一種方法,用這種方法,正在經(jīng)歷初始化的軟件能夠確定系統(tǒng)只是在通電,還是在從監(jiān)視器誘發(fā)的復(fù)位中恢復(fù)。如果是后者,軟件可檢查環(huán)境并試著判斷是什么導(dǎo)致了崩潰。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院56嵌入式系統(tǒng)的開發(fā)平臺由硬件平臺、操作系統(tǒng)、編程語言和開發(fā)工具組成。嵌入式系統(tǒng)開發(fā)先選擇處理器,用處理器廠商提供的開發(fā)工具,然后選擇嵌入式操作系統(tǒng),有的嵌入式操作系統(tǒng)廠商也提供必要的開發(fā)工具,比如用在操作系統(tǒng)上編寫應(yīng)用程序的API、調(diào)試器等。最后確定編程語言,并進(jìn)行開發(fā)工作。除了上述的開發(fā)工具,可能還需要編程器、ROM仿真器、內(nèi)部電路仿真器、指令集模擬器、測試儀器(如示波器、邏輯分析儀和萬用表等)用于調(diào)試程序和硬件。1)選擇處理器選擇處理器沒有什么特殊的規(guī)定,根據(jù)開發(fā)者的意愿。一般來說,在選擇嵌入式處理器時,主要是根據(jù)用戶的需求和項(xiàng)目的要求選擇處理器。同時兼顧開發(fā)人員對處理器的熟悉程度,以節(jié)省時間、提高系統(tǒng)設(shè)計(jì)開發(fā)效率。2.4.3系統(tǒng)實(shí)現(xiàn)1、選擇開發(fā)平臺2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院57處理器的處理速度影響處理器速度的因素很多,主要是處理器的主頻,還包括多方面時鐘頻率、內(nèi)部寄存器的大小、寄存器是否被公平對待(即指令對等處理所有的寄存器)、有助于耗時操作的特殊的內(nèi)置硬件(如一個硬件乘法單元)等。處理器的處理速度一般用MIPS來表示,如果系統(tǒng)需要大量的浮點(diǎn)運(yùn)算需求,那么可以用每秒執(zhí)行多少百萬次浮點(diǎn)運(yùn)算(Millionoffloat-PointOperationsPerSecond,MFLOPS)來表示??偟脑瓌t是應(yīng)當(dāng)讓處理器的能力同項(xiàng)目的技術(shù)指標(biāo)匹配。對選擇的處理器熟悉程度在開發(fā)嵌入式項(xiàng)目時,完全有可能碰到這樣的情況,選擇的處理器的各種指標(biāo)(成本、處理速度等)都符合要求,但是項(xiàng)目組的人員對這種處理器不太熟悉,這就影響項(xiàng)目進(jìn)度和項(xiàng)目開發(fā)效率。事實(shí)上,目前的嵌入式處理器種類非常多,項(xiàng)目中只能選擇惟一的一種處理器的情況并不多見。因此選擇處理器也可選擇多個方案,根據(jù)開發(fā)人員的熟練程度做進(jìn)一步的選擇。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院58處理器上的I/O功能是否滿足需求如果所選擇的嵌入式處理器提供內(nèi)置外設(shè)(如UART、以太網(wǎng)控制器、液晶控制器等),就可以減少芯片數(shù)量,進(jìn)而降低整個系統(tǒng)的成本,提高了系統(tǒng)的可靠性。因此,在選擇處理器時,盡量選擇單芯片方案。處理器的軟件支持工具一種新的處理器并非所有的嵌入式操作系統(tǒng)都會支持。另外,還需要考慮開發(fā)語言與交叉編譯器等的支持。處理器的調(diào)試支持如果所選擇的處理器沒有集成的調(diào)試支持,就必須使用在線仿真器。低速處理器的在線仿真器比較便宜,但是高速處理器的在線仿真器非常昂貴,因此應(yīng)盡量選擇內(nèi)置硬件調(diào)試功能的處理器,如JTAG調(diào)試方式、BDM調(diào)試方式等。如具備JTAG調(diào)試接口的處理器幾乎成了嵌入式處理器的標(biāo)準(zhǔn)配置功能。處理器制造商的支持可信度如何2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院592)選擇硬件部件產(chǎn)品的需求量嵌入式系統(tǒng)客戶的產(chǎn)品需求量越大,越值得自己去設(shè)計(jì)和制備硬件,從而降低成本。相反,如果量很小,設(shè)計(jì)的費(fèi)用淹沒自制所節(jié)省的費(fèi)用,這時從第三方購買成品的電路板可能是個好的方案。目標(biāo)市場的機(jī)會如果需要使產(chǎn)品盡快發(fā)售,從而獲得競爭力,盡可能買硬件自制的越少越好。如果有富裕充足的設(shè)計(jì)時間,可以設(shè)計(jì)自己的硬件,以降低成本。軟件對硬件的依賴程度有的系統(tǒng)開發(fā)時,軟件必須盡早地在硬件上進(jìn)行開發(fā),這時購買成品的硬件就是一個比較好的方案。如選擇S3C44B0x進(jìn)行中小規(guī)模的嵌入式系統(tǒng)開發(fā)時,當(dāng)工期較短或數(shù)量巨大等,就可以先購買相應(yīng)的開發(fā)板,發(fā)板上進(jìn)行軟件開發(fā)。大多數(shù)的嵌入式處理器的制造商提供了評估板給用戶使用,評估板的功能做得非常全面,只要設(shè)計(jì)者選擇了該廠家的處理器,那么處理器上集成的功能在評估板上都有設(shè)計(jì),方便了軟件開發(fā)工作,這時硬件開發(fā)者參考評估板進(jìn)行定制設(shè)計(jì)即可。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院603)選擇操作系統(tǒng)在選擇嵌入式實(shí)時操作系統(tǒng)(real-timeoperationsystem,RTOS)時,應(yīng)該根據(jù)具體項(xiàng)目,如果項(xiàng)目為實(shí)時性比較強(qiáng)的操作系統(tǒng),該操作系統(tǒng)應(yīng)該具備以下特征:基于優(yōu)先級的多任務(wù)搶占式調(diào)度策略;內(nèi)核短小,實(shí)時性好,能進(jìn)行快速的上下文切換(小于5μs),效率高;開放源代碼,并且支持一系列的處理器芯片;低的內(nèi)存要求;具有可裁剪、可移植性。因此,在選擇操作系統(tǒng)時,主要是根據(jù)操作系統(tǒng)的功能、配套的開發(fā)工具、移植難度如何、對調(diào)試的支持等來決定,具體判別如下:功能選擇根據(jù)項(xiàng)目需要的操作系統(tǒng)的功能來選擇操作系統(tǒng)產(chǎn)品,考慮的具體問題有以下幾點(diǎn):2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院611、需要操作系統(tǒng)的全部功能還是部分功能。全部功能包括處理機(jī)管理、存儲器管理;2、文件系統(tǒng)、人機(jī)界面等;3、實(shí)時系統(tǒng)還是分時系統(tǒng);4、操作系統(tǒng)是否可裁剪;5、如果系統(tǒng)很小,是否可以不需要操作系統(tǒng)。開發(fā)工具方面有的實(shí)時操作系統(tǒng)只支持該系統(tǒng)供應(yīng)商的開發(fā)工具,即必須在操作系統(tǒng)供應(yīng)商那里獲取編譯器、調(diào)試器等。相反,如果操作系統(tǒng)使用廣泛的第三方工具(μC/OS-II操作系統(tǒng),就可以在ARM公司提供的SDT2.51、ADS1.2和keilC51等環(huán)境下進(jìn)行開發(fā)),那就有更多的選擇余地。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院62移植難度在購買操作系統(tǒng)后,進(jìn)行的開發(fā)工作主要是應(yīng)用開發(fā)和板級支持包的開發(fā)。所謂板級支持包,指的是操作系統(tǒng)運(yùn)行在用戶的目標(biāo)板上所需的軟件,一般操作系統(tǒng)的供應(yīng)商會提供流行的標(biāo)準(zhǔn)板的支持包,用戶板的一些參數(shù)可能與標(biāo)準(zhǔn)板有差別,因此需要進(jìn)行板級支持包的開發(fā)。通常這種差別不是太大,廠家也會提供一些移植的模板以供用戶參考。不同的操作系統(tǒng)的移植難度不同,用戶必須考慮到這一點(diǎn)。調(diào)試支持有的操作系統(tǒng)允許用戶打開特殊的調(diào)試層,并深入操作系統(tǒng)內(nèi)部去調(diào)用一些有助于跟蹤解決應(yīng)用程序問題的功能。還有的操作系統(tǒng)提供源代碼(比如μC/OS-II、嵌入式Linux等),這樣的話,便于用戶更好地解決調(diào)試的問題。需要指出,提供源代碼的操作系統(tǒng)系統(tǒng)不一定更方便用戶的使用,因?yàn)橛脩糸_發(fā)的重點(diǎn)在于應(yīng)用,而不是操作系統(tǒng)。相反,提供功能強(qiáng)大的調(diào)試手段則是必要的。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院63內(nèi)存要求如何操作系統(tǒng)對內(nèi)存的需要,也是選擇操作系統(tǒng)的重要指標(biāo)之一。每一種操作系統(tǒng)的運(yùn)行,都需要一定的內(nèi)存支持,比如μC/OS-II操作系統(tǒng)最小只需要8KB的內(nèi)存。操作系統(tǒng)需要的內(nèi)存越多,意味著目標(biāo)板需要設(shè)計(jì)更多的存儲器,加大了系統(tǒng)的成本,有時也可能降低系統(tǒng)的運(yùn)行速度,這時需要提高處理器的性能,無形中又增加了成本。項(xiàng)目人員是否熟悉此操作系統(tǒng)在選擇操作系統(tǒng)時,一定要考慮到項(xiàng)目人員對所選操作系統(tǒng)的熟悉程度。如果不熟悉,那么項(xiàng)目的進(jìn)度將增加額外的時間,以便讓程序員熟悉此操作系統(tǒng)。通常,嵌入式操作系統(tǒng)的API各不相同,但是差別也不會太大,目前大多數(shù)嵌入式操作系統(tǒng)的API符合POSIX標(biāo)準(zhǔn)。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院64是否包括所有需要的部件所選擇的操作系統(tǒng)是否包括項(xiàng)目必須的應(yīng)用部件,如果沒包括,必須自己開發(fā)或到別處去買,并要將它們集成。比如選擇μC/OS-II操作系統(tǒng)后,由于μC/OS-II是開源的操作系統(tǒng),沒有TCP/IP協(xié)議、文件系統(tǒng)、圖形系統(tǒng)等,如果項(xiàng)目又需要這些部件,那就只有自己開發(fā)或去購買,然后在集成。一般要求的部件包括網(wǎng)絡(luò)支持(TCP/IP協(xié)議等)、文件系統(tǒng)、快速文件系統(tǒng)、計(jì)算機(jī)卡支持、CDROM支持、浮點(diǎn)仿真運(yùn)算、人機(jī)界面以及串行I/O支持。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院65是否有目標(biāo)硬件的驅(qū)動程序針對某一種嵌入式處理器的操作系統(tǒng),一般會提供處理器上的設(shè)備驅(qū)動程序。如果用戶的設(shè)備驅(qū)動程序沒有支持,那么必須開發(fā)。一般操作系統(tǒng)會提供開發(fā)的模板代碼。操作系統(tǒng)是否具有可擴(kuò)展性具有可擴(kuò)展性的操作系統(tǒng)使用的靈活性比較好,用戶功能方便地裁剪不需要的部分,從而降低對硬件的資源要求,否則不必要的系統(tǒng)功能會消耗內(nèi)存資源。4)選擇編程語言大多數(shù)系統(tǒng)的開發(fā)使用C語言和匯編語言,有的使用C++語言,有的選擇Java語言、EmbeddedVisualBasic和EmbeddedVisualC/C++等其他語言。選擇編程語言主要考慮軟件開發(fā)人員的熟悉程度、語言使用的廣泛程度以及語言的性能如何等。一般來說,越是高級的語言,其編譯器和運(yùn)行庫附加的開銷越大,應(yīng)用程序也越大、越慢。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院66嵌入式系統(tǒng)開發(fā)的一般方式采用是先在評估板進(jìn)行開發(fā),當(dāng)在評估板上開發(fā)、運(yùn)行、調(diào)試成功之后,再根據(jù)評估板使用的硬件,裁剪一般應(yīng)用中不需要的硬件,最后做成產(chǎn)品板大量生產(chǎn)。嵌入式開發(fā)平臺需要在評估板上提供微處理器、存儲芯片以及其他的外圍硬件等設(shè)備,在軟件方面提供系統(tǒng)的開發(fā)平臺和下載工具,還有駐留在硬件上的Bootloader工具。對于有嵌入式操作系統(tǒng)的開發(fā)平臺,還需要提供操作系統(tǒng)開發(fā)工具。5)關(guān)于評估板2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院676)板級支持包在嵌入式系統(tǒng)中,雖然選擇的嵌入式處理器完全相同,但是具有不同的片上外部設(shè)備配置,不同嵌入式處理器的片上外部電路不同(因?yàn)橛脩舻膽?yīng)用不同),這就造成操作系統(tǒng)不可能適應(yīng)所有的嵌入式應(yīng)用。通常操作系統(tǒng)的提供商的做法是把操作系統(tǒng)按照層次進(jìn)行劃分,分為上下兩個層面;上層與硬件無關(guān),下層與硬件有關(guān)。用戶在把操作系統(tǒng)運(yùn)行到目標(biāo)板上時,需要針對自己的目標(biāo)板的特殊情況,編寫目標(biāo)板的支持操作系統(tǒng)運(yùn)行的代碼,以適應(yīng)操作系統(tǒng)的運(yùn)行,這一部分代碼通常稱為板級支持包(BoardSupportPackage,BSP)。板級支持包通常不會太復(fù)雜,對于某種商業(yè)單板機(jī)(Single-BoardComputer,SBC),則BSP可能早己準(zhǔn)備妥當(dāng)。大多數(shù)操作系統(tǒng)的供應(yīng)商會提供板級支持包的開發(fā)方法和開發(fā)模板。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院681)嵌入式系統(tǒng)的軟件開發(fā)過程軟件開發(fā)主要分為建立交叉開發(fā)環(huán)境、交叉編譯和連接、重定位和下載、聯(lián)機(jī)調(diào)試等幾個步驟。建立交叉開發(fā)環(huán)境。在準(zhǔn)備開發(fā)之前,必須先了解和認(rèn)識或熟悉嵌入式編程中使用的交叉開發(fā)環(huán)境(CrossDevelopmentEnvironment)。交叉開發(fā)環(huán)境是嵌入式系統(tǒng)開發(fā)中必不可少的編程環(huán)境。交叉開發(fā)環(huán)境的原理很簡單,只是在主機(jī)和目標(biāo)機(jī)器體系結(jié)構(gòu)不同的情況下,在主機(jī)上開發(fā)那些將在目標(biāo)機(jī)器上運(yùn)行的程序。比如說在PC機(jī)上利用ADS/SDT開發(fā)ARM目標(biāo)板上運(yùn)行的程序,就是在PC機(jī)上開發(fā)(程序編輯、編譯、定位連接等),形成ARM目標(biāo)板可運(yùn)行的代碼。這里提到的ADS/SDT加上桌面計(jì)算機(jī)就構(gòu)成了交叉開發(fā)環(huán)境。2、軟件開發(fā)過程2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院69按發(fā)布的形式,交叉開發(fā)環(huán)境可分為開放和商用兩種類型。開放式交叉開發(fā)環(huán)境實(shí)例主要有g(shù)cc,它可以支持多種交叉平臺的編譯器,但要遵守GeneralPublicLicense的規(guī)定。商用交叉開發(fā)環(huán)境有MetrowerksCodeWarrior,ARMSoftwareDevelopmentToolkit,SDSCrossCompiler,WindRiverTornado等。按照使用方式,交叉開發(fā)工具主要分為使用Makefile和IDE開發(fā)環(huán)境兩種類型。使用Makefile的開發(fā)環(huán)境需要編譯Makefile來管理和控制項(xiàng)目的開發(fā),可以自己手寫,有時候也可以使用一些自動化的工具。這種開發(fā)工具是gcc,SDSCrossCompiler等。新類型的開發(fā)環(huán)境一般有一個用戶友好的IDE界面,方便管理和控制項(xiàng)目的開發(fā),如CodeWarrior等。有些開發(fā)環(huán)境既可以用Makefile管理項(xiàng)目,又可以使用IDE,給使用者很大的選擇余地。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院70

交叉編譯和連接。使用建立好的交叉開發(fā)環(huán)境完成編譯和連接工作。比如ARM的gcc交叉開發(fā)環(huán)境中,arm-linux-gcc是編譯器,arm-linux-ld是連接器。但并不是說對于一種體系結(jié)構(gòu)只有一種編譯連接器,比如對M68K體系結(jié)構(gòu)的gcc編譯器而言,就有多種不同的編譯和連接器。如果使用COFF的可執(zhí)行文件格式的話,那么在編譯Linux內(nèi)核時需要使用m68k-coff-gcc和m68k-coff-ld的編譯連接器;在編譯應(yīng)用程序時需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld的編譯連接器。這是因?yàn)閼?yīng)用程序代碼需要編譯成為可重定位代碼。這樣,雖然因?yàn)閮?nèi)核占用位置導(dǎo)致應(yīng)用程序存放的位置不同,但仍可以使用相對地址運(yùn)行應(yīng)用程序。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院71重定位和下載編譯連接后形成目標(biāo)板的image文件,就可以通過相應(yīng)的工具與目標(biāo)板上的bootloader程序進(jìn)行通信,可以使用bootloader提供的通訊工具與目標(biāo)機(jī)相連接,也可以使用通用的終端工具與目標(biāo)板相連接。一般在目標(biāo)板上使用串口,通過主機(jī)端工具和目標(biāo)板通信。bootloader中提供下載等控制命令,完成在嵌入式系統(tǒng)正式在目標(biāo)板上運(yùn)行之前對目標(biāo)板的控制任務(wù)。bootloader指定image文件下載的位置。在下載結(jié)束之后,使用bootloader提供的運(yùn)行命令,從指定地址開始運(yùn)行嵌入式系統(tǒng)軟件。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院72聯(lián)機(jī)調(diào)試。嵌入式系統(tǒng)的調(diào)試有多種方法,有軟件調(diào)試和硬件調(diào)試兩種方法,前者使用軟件調(diào)試器調(diào)試嵌入式系統(tǒng)軟件,后者使用仿真調(diào)試器協(xié)助調(diào)試過程。就操作系統(tǒng)調(diào)試的層次而言,有時需要調(diào)試嵌入式操作系統(tǒng)的內(nèi)核,有時需要調(diào)試嵌入式操作系統(tǒng)的應(yīng)用程序。由于嵌入式系統(tǒng)特殊的開發(fā)環(huán)境,不可避免的是調(diào)試時必然需要目標(biāo)運(yùn)行平臺和調(diào)試器兩方面的支持。2)在主機(jī)系統(tǒng)上驗(yàn)證軟件在主機(jī)系統(tǒng)上驗(yàn)證軟件是必要的一個步驟,因此建議嵌入式開發(fā)人員進(jìn)行該項(xiàng)工作。不過在主機(jī)上驗(yàn)證完成后,仍然需要在目標(biāo)板上進(jìn)行驗(yàn)證和測試。目前有的嵌入式系統(tǒng)的開發(fā)工具提供商提供了在開發(fā)主機(jī)上驗(yàn)證目標(biāo)系統(tǒng)的手段,如ARM公司的軟件仿真環(huán)境驗(yàn)證軟件的執(zhí)行時間,WindRiver公司的simlink工具可以仿真網(wǎng)絡(luò)協(xié)議的開發(fā),ATI的MNT也可以仿真網(wǎng)絡(luò)協(xié)議的開發(fā),這些公司也有文件系統(tǒng)的仿真開發(fā)工具,這些工具都可以作為嵌入式軟件的驗(yàn)證平臺。一般地,在主機(jī)上驗(yàn)證軟件只能驗(yàn)證軟件的一部分功能和一部分性能。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院733)在目標(biāo)系統(tǒng)上驗(yàn)證軟件如果軟件在主機(jī)系統(tǒng)上測試通過,就可以移植到目標(biāo)板,在這里完成對功能和性能要求的完整測試。在這個階段,硬件工程師和軟件工程師必須一起工作以確保軟件按照最初的要求工作。如果性能目標(biāo)沒有達(dá)到,代碼優(yōu)化就成為本階段的首要任務(wù)。但是,隨著好的仿真器的使用,軟件驗(yàn)證很大程度上可以在主機(jī)系統(tǒng)上完成。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院744)代碼優(yōu)化嵌入式系統(tǒng)的軟件開發(fā)的目標(biāo)不僅要實(shí)現(xiàn)預(yù)定的功能,而且要是最優(yōu)的代碼來完成需要的功能。這里的最優(yōu),主要是指代碼的質(zhì)量,包括三方面的含義,代碼長度最短、執(zhí)行時間最短和代碼運(yùn)行期間對內(nèi)存的占用量要最少。有時這些方面是矛盾的,就需要在代碼尺寸和執(zhí)行速度兩者之間取得平衡。根據(jù)具體應(yīng)用,需要決定哪一個優(yōu)先級更高。如果嵌入式系統(tǒng)有存儲器限制,而速度不是主要關(guān)心的問題,那么代碼尺寸很重要。如果要滿足實(shí)時條件,那么執(zhí)行速度就比代碼尺寸更加重要。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院75使用如下的檢驗(yàn)標(biāo)準(zhǔn)進(jìn)行代碼優(yōu)化:刪除程序中的無用代碼,即清除那些從不執(zhí)行的 代碼。刪除調(diào)試代碼。避免使用大型的庫例程。避免使用遞歸式例程,因?yàn)樗鼈冃枰艽蟮亩褩!1苊飧↑c(diǎn)操作。優(yōu)化算法。通過使用非常簡單的訣竅來減少計(jì)算 要求,如乘法可以通過左移操作來完成。3、開發(fā)階段的文檔樣例從軟件的完整性來說,軟件包括程序和文檔兩方面的內(nèi)容,只有代碼的軟件不是完整的軟件;而只有文檔的軟件不是軟件。在嵌入式系統(tǒng)產(chǎn)品開發(fā)過程中,涉及了一些文檔,這些文檔對完成產(chǎn)品設(shè)計(jì)、維護(hù)等非常重要。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院76這里給出推薦的文檔種類和文檔內(nèi)容,如表2-2所列,可供讀者參考。(略提)表2-2開發(fā)階段的文檔清單文件名稱內(nèi)容1、技術(shù)文件目錄1、任務(wù)來源、設(shè)計(jì)依據(jù)、產(chǎn)品用途以及使用范圍2、主要工作原理、軟硬件分工、基本參數(shù)、主要功能、技術(shù)指標(biāo)2、技術(shù)任務(wù)書3、總體布局、主要部件概述、提出國內(nèi)外同類產(chǎn)品水平比較4、標(biāo)準(zhǔn)化綜合要求、關(guān)鍵技術(shù)預(yù)測、開發(fā)周期估算3、技術(shù)方案報告4、產(chǎn)品標(biāo)準(zhǔn)(草案)1、產(chǎn)品范圍、引用標(biāo)準(zhǔn)、基本參數(shù)及形式、技術(shù)要求、試驗(yàn)方法2、檢驗(yàn)規(guī)則5、技術(shù)條件(進(jìn)廠)使用范圍、技術(shù)要求、試驗(yàn)方法6、可靠性技術(shù)設(shè)計(jì)描述系統(tǒng)采用的可靠性技術(shù)和措施的報告2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院777、技術(shù)設(shè)計(jì)說明書硬件1、總體方案、產(chǎn)品結(jié)構(gòu)、產(chǎn)品性能2、電路工作原理分析、技巧、結(jié)構(gòu)3、工藝合理性、主要故障鑒別方法軟件1、總體方案及體系結(jié)構(gòu)、任務(wù)調(diào)試原理或總控流程說明2、各種功能的實(shí)現(xiàn)方法、處理流程,數(shù)據(jù)庫說明、邏輯結(jié)構(gòu)3、數(shù)據(jù)格式說明、內(nèi)存分配方案、各部分接口設(shè)計(jì)4、通用子程序和標(biāo)準(zhǔn)子程序設(shè)計(jì)8、試驗(yàn)報告9、總結(jié)1、技術(shù)水平、研制過程中出現(xiàn)的問題的解決措施2、對未達(dá)到的技術(shù)任務(wù)書要求的原因進(jìn)行說明表2-2開發(fā)階段的文檔清單(續(xù))(略提)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院78host-target測試或cross-testing

開發(fā)環(huán)境被認(rèn)為是主機(jī)平臺,軟件運(yùn)行環(huán)境為目標(biāo)平臺。主機(jī)系統(tǒng)環(huán)境中進(jìn)行的測試稱為host-target測試或cross-testing.2.4.4系統(tǒng)測試2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院79單元測試;集成測試;系統(tǒng)測試;確認(rèn)測試。這些方法在嵌入式系統(tǒng)的各個測試階段有著通用性。嵌入式軟件測試方法2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院80所有單元級測試都可以在主機(jī)環(huán)境上進(jìn)行,除非少數(shù)情況,特別具體指定了單元測試直接在目標(biāo)環(huán)境進(jìn)行。最大化在主機(jī)環(huán)境進(jìn)行軟件測試的比例,通過盡可能小的目標(biāo)單元訪問所有目標(biāo)指定的界面。在主機(jī)平臺上運(yùn)行測試速度比在目標(biāo)平臺上快的多,當(dāng)在主機(jī)平臺完成測試,可以在目標(biāo)環(huán)境上重復(fù)作一簡單的確認(rèn)測試,以確認(rèn)測試結(jié)果在主機(jī)和目標(biāo)機(jī)上的不同之處。在目標(biāo)環(huán)境上進(jìn)行確認(rèn)測試將確定一些未知的、未預(yù)料到的和未說明的主機(jī)與目標(biāo)機(jī)的不同。例如,目標(biāo)編譯器可能有bug,但在主機(jī)編譯器上沒有。單元測試2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院81軟件集成也可在主機(jī)環(huán)境上完成,在主機(jī)平臺上模擬目標(biāo)環(huán)境運(yùn)行,當(dāng)然在目標(biāo)環(huán)境上重復(fù)測試也是必須的,在此級別上的確認(rèn)測試將確定一些環(huán)境上的問題,比如內(nèi)存定位和分配上的一些錯誤。在主機(jī)環(huán)境上的集成測試的使用,依賴于目標(biāo)系統(tǒng)的具體功能有多少。有些嵌入式系統(tǒng)與目標(biāo)環(huán)境耦合的非常緊密,若在主機(jī)環(huán)境做集成是不切實(shí)際的。一個大型軟件的開發(fā)可以分幾個級別的集成。低級別的軟件集成在主機(jī)平臺上完成有很大優(yōu)勢,越往后的集成越依賴于目標(biāo)環(huán)境。

集成測試2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院82所有的系統(tǒng)測試和確認(rèn)測試必須在目標(biāo)環(huán)境下執(zhí)行。當(dāng)然在主機(jī)上開發(fā)和執(zhí)行系統(tǒng)測試,然后移植到目標(biāo)環(huán)境重復(fù)執(zhí)行是很方便的。對目標(biāo)系統(tǒng)的依賴性會妨礙將主機(jī)環(huán)境上的系統(tǒng)測試移植到目標(biāo)系統(tǒng)上,況且只有少數(shù)開發(fā)者會卷入系統(tǒng)測試,所以有時放棄在主機(jī)環(huán)境上執(zhí)行系統(tǒng)測試可能更方便。確認(rèn)測試最終的必須在目標(biāo)環(huán)境中,系統(tǒng)的確認(rèn)必須在真實(shí)系統(tǒng)之下測試,而不能在主機(jī)環(huán)境下模擬。這關(guān)系到嵌入式軟件的最終使用。系統(tǒng)測試和確認(rèn)測試2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院83Cross-test策略A)使用測試工具的插裝功能(主機(jī)環(huán)境)執(zhí)行靜態(tài)測試分析,并且為動態(tài)覆蓋測試準(zhǔn)備好一插裝好的軟件代碼。B)使用源碼在主機(jī)環(huán)境執(zhí)行功能測試,修正軟件的錯誤和測試腳本中的錯誤。C)使用插裝后的軟件代碼執(zhí)行覆蓋率測試,添加測試用例或修正軟件的錯誤,保證達(dá)到所要求的覆蓋率目標(biāo)。D)在目標(biāo)環(huán)境下重復(fù)(B),確認(rèn)軟件在目標(biāo)環(huán)境中執(zhí)行測試的正確性。E)若測試需要達(dá)到極端的完整性,最好在目標(biāo)系統(tǒng)上重復(fù)(C),確定軟件的覆蓋率沒有改變。通常在主機(jī)環(huán)境執(zhí)行多數(shù)的測試,只是在最終確定測試結(jié)果和最后的系統(tǒng)測試才移植到目標(biāo)環(huán)境。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院84功能測試功能測試稱為黑盒測試,這是因?yàn)槠錅y試實(shí)例在設(shè)計(jì)時不引用程序的實(shí)際代碼,也就是不用暴露盒子的內(nèi)部。嵌入式系統(tǒng)包含輸入、輸出以及在兩者之間實(shí)現(xiàn)的一些算法。在系統(tǒng)中哪些輸入是可接受的?這些輸入應(yīng)當(dāng)怎樣聯(lián)系到輸出?黑盒測試是基于對以上問題的回答。黑盒測試根本不知道輸入與輸出之間的算法到底是如何實(shí)現(xiàn)的,只關(guān)心對于給定的輸入,程序的輸出與預(yù)計(jì)是否相同,2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院85黑盒測試內(nèi)容(1)極限情況測試:測試中有意使輸入信道、內(nèi)存緩 沖區(qū)、磁盤控制器、內(nèi)存管理器等部件超載。(2)邊界測試:輸入表示特定輸入范圍邊界的值(例 如,對于整數(shù)型輸入,應(yīng)選擇最大值、最小值, 還有一1、0、+1)以及使輸出產(chǎn)生輸出范圍邊 界的值。(3)異常測試:測試應(yīng)當(dāng)觸發(fā)失敗模式或異常模式。(4)錯誤猜測:測試基于以前進(jìn)行軟件測試及測試類 似程序的工作經(jīng)驗(yàn)。(5)隨機(jī)測試:通常是測試中效率最低的形式,但現(xiàn) 在仍廣泛使用在評估用戶界面代碼健壯性的測試 中。(6)性能測試:由于性能要求是產(chǎn)品需求的一部分,所以性能測試處于功能測試的范圍之內(nèi)。由于黑盒測試僅僅依賴于程序需求及其功能行為,所以它可以在需求工作完成后馬上就進(jìn)行開發(fā)。這就允許黑盒測試實(shí)例的開發(fā)與系統(tǒng)其余部分的設(shè)計(jì)同時進(jìn)行。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院86覆蓋測試/白盒測試而覆蓋測試是盡可能使每條代碼語句、判定點(diǎn)或判定路徑都最少被執(zhí)行一次,這樣就能夠避免功能測試的弱點(diǎn)。覆蓋測試也稱作白盒測試或玻璃盒測試,它需要軟件實(shí)現(xiàn)的全部知識來進(jìn)行設(shè)計(jì),測試時需要看到程序?qū)崿F(xiàn)、執(zhí)行的細(xì)節(jié)。也就是說,要“看到盒子里邊”。設(shè)計(jì)白盒測試要在完成源代碼的基礎(chǔ)上進(jìn)行,要用到程序員關(guān)于應(yīng)用編程接口API(ApplicationProgrammingInterface)內(nèi)部控制結(jié)構(gòu)及異常處理能力的知識。由于白盒測試依賴于具體的實(shí)現(xiàn)決策,只有在代碼編寫完成后才能開始測試設(shè)計(jì)工作。在嵌入式系統(tǒng)測試方法和策略中,覆蓋測試是測試方法中最重要的測試策略,這是由于可以從中看出有多少代碼已經(jīng)檢查過。測試結(jié)果可以很準(zhǔn)確地預(yù)言測試人員馬上要面對多少程序設(shè)計(jì)的錯誤。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院87白盒測試包括內(nèi)容(1)語句測試:選擇的測試實(shí)例至少執(zhí)行一次程序中的每條語句。(2)判定或分支覆蓋:選擇的測試實(shí)例使每個分支(包括真與假分支)至少運(yùn)行一次。(3)條件覆蓋:選擇的測試實(shí)例使每個用于判定的條件(項(xiàng))具有所有可能的邏輯值。理論上,白盒測試能利用或操作它所需的一切進(jìn)行測試。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院88灰盒測試灰盒測試指的是那些僅僅知道部分程序內(nèi)部細(xì)節(jié)的測試方法。由于白盒測試需要緊密聯(lián)系到代碼的內(nèi)部細(xì)節(jié),所以造成系統(tǒng)維護(hù)的難度要比黑盒測試大得多。雖然黑盒測試可以完成系統(tǒng)的功能測試,效率高一些,但是無法遍歷代碼實(shí)現(xiàn)的所有細(xì)節(jié)。如果把白盒測試和黑盒測試的優(yōu)點(diǎn)結(jié)合起來,達(dá)到既能簡化測試,又能盡量遍歷關(guān)鍵代碼的目的,這種結(jié)合二者優(yōu)點(diǎn)的測試方法被稱為灰盒測試。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院89評估測試的覆蓋率因?yàn)檐浖懈鹘M成部分之間的交互作用非常復(fù)雜,以至于不可能對其做出完整的分析,即使如此,也必須知道到底測試了多少代碼,以及確認(rèn)某一部分代碼沒有進(jìn)行過測試。定義:測試過代碼的數(shù)量與全部代碼的數(shù)量之比稱為測試覆蓋率。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院90評估測試覆蓋率的技術(shù)評估測試覆蓋率的技術(shù)主要有:軟件插裝、測試語句執(zhí)行、硬件插裝等,其中一些是基于軟件,另外一些是利用電子工程師經(jīng)常使用的模擬器和集成電路設(shè)備。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院91軟件插裝軟件插裝是指在實(shí)際的軟件代碼中插入測試代碼,這些測試代碼在進(jìn)行軟件測試過程中使用,在軟件的發(fā)行版中刪除。通常,軟件插裝有printf()、直接寫內(nèi)存、低干擾printf()等方法。printf()方法:基本模塊的開始處插入跟蹤調(diào)用(如printf()函數(shù))進(jìn)行評估。直接寫內(nèi)存方法:將測試結(jié)果直接寫到空閑內(nèi)存區(qū)域,測試后再查看。低干擾printf()方法:在這種printf()函數(shù)中使用了一種簡單的內(nèi)存寫操作。效率比printf()方法高。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院92測試語句的執(zhí)行判定覆蓋除了捕捉進(jìn)入基本塊的入口外,判定覆蓋還測試代碼中判定點(diǎn)的結(jié)果,比如尋找二值(true/false)判定的結(jié)果。修改條件判定覆蓋比判定覆蓋更進(jìn)一步。在判定覆蓋能測量出判定點(diǎn)之前為ture或false的次數(shù)的地方,修改條件判定覆蓋找出組成判定標(biāo)準(zhǔn)的各項(xiàng)值。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院93硬件插裝硬件插裝的方法主要有仿真存儲器、邏輯分析儀和ICE(在線仿真器)等,這些方法也能對測量測試覆蓋率有所幫助。作為跟蹤捕捉接口的硬件設(shè)備,以及捕捉到的用于離線分析的數(shù)據(jù)一般位于不同的計(jì)算機(jī)上。除以上仿真存儲器、邏輯分析儀、在線仿真器等通用工具外,還有一些專用工具用于提高系統(tǒng)性能和評估測試覆蓋率。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院94仿真存儲器某些開發(fā)商的仿真存儲器屬性位中包括有覆蓋位。如果訪問某個內(nèi)存地址時,并設(shè)置覆蓋位,在程序運(yùn)行結(jié)束后,就可以看到仿真存儲器中被擊中的部位并從中推算出此次測試覆蓋率的百分比。通過連續(xù)把系統(tǒng)內(nèi)存映射到仿真存儲器就可以收集到測試覆蓋率的統(tǒng)計(jì)結(jié)果。任何測試方法都有一定的缺陷,仿真存儲器也不例外。仿真存儲器的缺陷之一是它可能會受到帶有片上指令與數(shù)據(jù)高速緩沖的微處理器的欺騙。如果從一個名為補(bǔ)給線(refillline)的內(nèi)存區(qū)域讀入代碼或數(shù)據(jù)到高速緩存中,而程序卻只訪問了此區(qū)域的部分內(nèi)容,這樣覆蓋位測試就給出了過于樂觀的覆蓋率測試值。雖然如此,這種方法還是一種很好的測量覆蓋率上限的方法,并且實(shí)現(xiàn)起來相對比較簡單。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院95邏輯分析儀邏輯分析儀可以實(shí)時記錄內(nèi)存訪問活動。由于邏輯分析儀本來是用在觸發(fā)并捕捉的模式下的,因此跟蹤數(shù)據(jù)轉(zhuǎn)換成覆蓋率數(shù)據(jù)是非常困難的。為了使用邏輯分析儀進(jìn)行覆蓋率測量,一般要采取統(tǒng)計(jì)采樣的方法。在該方法中,邏輯分析儀是從屬于主機(jī)的。主機(jī)以隨機(jī)時間間隔向邏輯分析儀發(fā)出觸發(fā)命令。邏輯分析儀收到命令就馬上填充跟蹤緩沖區(qū),而不用等待其他觸發(fā)條件。主機(jī)把在跟蹤緩沖區(qū)捕捉數(shù)據(jù)時處理器所訪問的內(nèi)存地址添加到數(shù)據(jù)庫中,同時,跟蹤緩沖區(qū)中的數(shù)據(jù)也上載到主機(jī)中。要進(jìn)行覆蓋測試,只需要知道是否每個內(nèi)存地址都被訪問過,而不必關(guān)心某個地址被訪問的次數(shù)。因此,主機(jī)需要處理許多冗余數(shù)據(jù)。有時,存儲器高速緩存還是會歪曲邏輯分析儀收集的數(shù)據(jù)。片上高速緩存會掩蓋由于在只有部分代碼得到執(zhí)行的補(bǔ)給線中進(jìn)行取指操作而產(chǎn)生的覆蓋空洞。然而,許多邏輯分析儀可以記錄由處理器提供的附加信息。在這樣的系統(tǒng)中,有時可以通過對原始跟蹤數(shù)據(jù)的事后處理得到執(zhí)行覆蓋率真實(shí)而又精確的結(jié)果。但問題依舊存在,數(shù)據(jù)捕捉與分析處理是統(tǒng)計(jì)學(xué)上的方法,系統(tǒng)需要經(jīng)過數(shù)小時甚至數(shù)天的運(yùn)行才能得出有意義的結(jié)果。要通過使用采樣方法得到ISR(InterruptServiceRoutine,中斷服務(wù)程序)的測試覆蓋率的真實(shí)情況特別困難。優(yōu)秀的ISR應(yīng)當(dāng)特別快。如果某個ISR很少運(yùn)行,在任何特殊跟蹤事件期間捕捉它的概率低得令人難以置信。而另一方面,設(shè)置邏輯分析儀在ISR執(zhí)行期間觸發(fā)自己卻很簡單。因此,ISR和其他執(zhí)行頻度很低的代碼的覆蓋率可以通過在整個測試期間把邏輯分析儀設(shè)置成用于跟蹤這些代碼的條件觸發(fā)模式來進(jìn)行測量。2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院96軟件性能分析儀許多ICE開發(fā)商制造經(jīng)過特別設(shè)計(jì)的基于硬件的工具,以完成分析測試覆蓋率與軟件性能的工作。通過使用來自連接器的加載映像,這些工具能基于函數(shù)或基本模塊來顯示覆蓋率信息,而不是基于原始的內(nèi)存地址。它們也能用來持續(xù)不斷地收集數(shù)據(jù),所以在數(shù)據(jù)捕捉中沒有在使用邏輯分析儀時出現(xiàn)的間隙,有的開發(fā)商已經(jīng)把其中一些工具集成到ICE中,另一些可以作為基本ICE硬件或軟件的附件另外購

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論