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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

系統(tǒng)初始化可以分為3個(gè)主要環(huán)節(jié),依次為:片級(jí)初始化、板級(jí)初始化和系統(tǒng)級(jí)初始化。片級(jí)初始化:完成嵌入式微處理器的初始化,包括設(shè)置嵌入式微處理器的核心寄存器和控制寄存器、嵌入式微處理器核心工作模式和嵌入式微處理器的局部總線模式等。片級(jí)初始化把嵌入式微處理器從上電時(shí)的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。這是一個(gè)純硬件的初始化過(guò)程。(如F28XXDSP,內(nèi)核先上電,外圍后上電)板級(jí)初始化:完成嵌入式微處理器以外的其他硬件設(shè)備的初始化。另外,還需設(shè)置某些軟件的數(shù)據(jù)結(jié)構(gòu)和參數(shù),為隨后的系統(tǒng)級(jí)初始化和應(yīng)用程序的運(yùn)行建立硬件和軟件環(huán)境。這是一個(gè)同時(shí)包含軟硬件兩部分在內(nèi)的初始化過(guò)程。系統(tǒng)初始化:該初始化過(guò)程以軟件初始化為主,主要進(jìn)行操作系統(tǒng)的初始化。BSP將對(duì)嵌入式微處理器的控制權(quán)轉(zhuǎn)交給嵌入式操作系統(tǒng),由操作系統(tǒng)完成余下的初始化操作,包含加載和初始化與硬件無(wú)關(guān)的設(shè)備驅(qū)動(dòng)程序,建立系統(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ū)動(dòng)程序

BSP的另一個(gè)主要功能是硬件相關(guān)的設(shè)備驅(qū)動(dòng)。硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序的初始化通常是一個(gè)從高到低的過(guò)程。盡管BSP中包含硬件相關(guān)的設(shè)備驅(qū)動(dòng)程序,但是這些設(shè)備驅(qū)動(dòng)程序通常不直接由BSP使用,而是在系統(tǒng)初始化過(guò)程中由BSP將它們與操作系統(tǒng)中通用的設(shè)備驅(qū)動(dòng)程序關(guān)聯(lián)起來(lái),并在隨后的應(yīng)用中由通用的設(shè)備驅(qū)動(dòng)程序調(diào)用,實(shí)現(xiàn)對(duì)硬件設(shè)備的操作。與硬件相關(guān)的驅(qū)動(dòng)程序是BSP設(shè)計(jì)與開(kāi)發(fā)中另一個(gè)非常關(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í)時(shí)多任務(wù)操作系統(tǒng)(Real-timeOperationSystem,RTOS)、文件系統(tǒng)、圖形用戶接口(GraphicUserInterface,GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開(kāi)發(fā)平臺(tái)。RTOS負(fù)責(zé)嵌人系統(tǒng)的全部軟、硬件資源的分配、調(diào)度工作,控制協(xié)調(diào)并發(fā)活動(dòng);它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過(guò)裝卸某些模塊來(lái)達(dá)到系統(tǒng)所要求的功能。RTOS在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。

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

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

(3)統(tǒng)一的接口。提供各種設(shè)備驅(qū)動(dòng)接日.(4)操作方便、簡(jiǎn)單、提供友好的圖形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開(kāi)發(fā)的應(yīng)用程序組成,完成對(duì)被控對(duì)象的控制功能.該層為方便用戶操作,往往需要提供一個(gè)友好的人機(jī)界面.對(duì)復(fù)雜系統(tǒng),要對(duì)系統(tǒng)進(jìn)行需求分析,確定系統(tǒng)的功能.然后將其映射到整個(gè)系統(tǒng)的硬件,軟件和執(zhí)行裝置的設(shè)計(jì)過(guò)程中.該過(guò)程稱為系統(tǒng)的功能實(shí)現(xiàn).2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院122.2嵌入式系統(tǒng)的設(shè)計(jì)方法

本節(jié)介紹如下三個(gè)方面的內(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è)階段構(gòu)成:需求分析;體系結(jié)構(gòu)設(shè)計(jì);硬件,軟件設(shè)計(jì);系統(tǒng)集成;系統(tǒng)測(cè)試。各個(gè)階段之間往往要求不斷的反復(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ī)格說(shuō)明書(shū)。系統(tǒng)的需求一般分功能性需求和非功能性需求兩方面。功能性需求是系統(tǒng)的基本功能,如輸入輸出信號(hào)、操作方式等;非功能需求包括系統(tǒng)性能、成本、功耗、體積、重量、等因素。2.體系結(jié)構(gòu)設(shè)計(jì)

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

基于體系結(jié)構(gòu),對(duì)系統(tǒng)的軟件、硬件進(jìn)行詳細(xì)設(shè)計(jì)。為了縮短產(chǎn)品開(kāi)發(fā)周期,設(shè)計(jì)往往是并行的。應(yīng)該說(shuō),嵌入式系統(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ì)過(guò)程中的錯(cuò)誤。5.系統(tǒng)測(cè)試

對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行測(cè)試,看其是否滿足規(guī)格說(shuō)明書(shū)中給定的功能要求。針對(duì)系統(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)的開(kāi)發(fā)和應(yīng)用中,按照下面圖2.3所示的流程進(jìn)行。

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

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

(1)需求分析:

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

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

(4)集成測(cè)試:

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

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

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

(1)需求分析;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

編譯器選擇:關(guān)于選擇編譯器方面,目前的選擇比較多,一般分成商用和免費(fèi)兩種。目前的商用編譯器一般以集成開(kāi)發(fā)環(huán)境工具包的方式提供,其優(yōu)點(diǎn)是代碼優(yōu)化比較好、效率高,缺點(diǎn)是價(jià)格貴;免費(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模塊,就可以很快地開(kāi)發(fā)出嵌入式系統(tǒng)產(chǎn)品的原型。另一種方案是自己設(shè)計(jì)(上水平,完全自主。真正高精尖的產(chǎn)品必須采用自己設(shè)計(jì)方案)。一般地,商品化模塊的成本比較高,如果開(kāi)發(fā)的產(chǎn)品數(shù)量比較大,盡量采用自己設(shè)計(jì)的方案,可以降低成本。但是在開(kāi)發(fā)階段,可以使用第三方提供的開(kāi)發(fā)板、評(píng)估板等縮短開(kāi)發(fā)時(shí)間。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ì)主要是對(duì)系統(tǒng)的初步功能進(jìn)行設(shè)計(jì)。這種設(shè)計(jì)是粗糙的、不具體的和不詳細(xì)的,但又是嵌入式系統(tǒng)開(kāi)發(fā)中十分重要的階段。在需求分析建立之后,就需要建立完整的功能模型,并根據(jù)現(xiàn)有的系統(tǒng)結(jié)構(gòu)庫(kù)對(duì)系統(tǒng)模型進(jìn)行設(shè)計(jì)。一般而言,在系統(tǒng)結(jié)構(gòu)模型和系統(tǒng)功能模型之間可以通過(guò)建立一個(gè)映射層,來(lái)完成從功能需求到結(jié)構(gòu)模型之間的轉(zhuǎn)化。在映射層上完成的任務(wù)主要是選擇映射的方式,考慮在性能和應(yīng)用需求環(huán)境方面的因素。如圖2—7所示描述了在功能層、映射層和模型層之間的關(guān)系。在完成需求分析后就要建立功能需求庫(kù),功能需求庫(kù)是需求分析的結(jié)果。(映射層的概念較虛,不必太注重)5、概要設(shè)計(jì)2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院39功能需求庫(kù)功能需求庫(kù)將功能轉(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)模型包括硬件和軟件兩個(gè)部分,在系統(tǒng)結(jié)構(gòu)的實(shí)現(xiàn)中采用硬件/軟件協(xié)同設(shè)計(jì)(Hardware/SoftwareCo-design)方式完成。如圖2-8所示是一個(gè)典型的從上至下的設(shè)計(jì)、實(shí)現(xiàn)過(guò)程。硬件/軟件協(xié)同設(shè)計(jì)只適合基于FPGA的SoC系統(tǒng)。不必完全照搬硬件/軟件協(xié)同設(shè)計(jì),有時(shí)單片機(jī)方式更實(shí)在!2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院41系統(tǒng)結(jié)構(gòu)模型功能設(shè)計(jì)任務(wù)寄存器傳輸設(shè)計(jì)模塊高層語(yǔ)言邏輯門級(jí)設(shè)計(jì)物理設(shè)計(jì)目標(biāo)代碼系統(tǒng)集成通信進(jìn)程結(jié)構(gòu)化描述詳細(xì)邏輯設(shè)計(jì)系統(tǒng)測(cè)試圖2-8軟硬件協(xié)同設(shè)計(jì)的結(jié)構(gòu)模型這實(shí)際是FPGA開(kāi)發(fā)方式!2023/9/2華中科技大學(xué)計(jì)算機(jī)學(xué)院42硬件設(shè)計(jì)包括以下三個(gè)部分:(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)試),以開(kāi)發(fā)板的形式出現(xiàn)(注意:這實(shí)際是詳細(xì)設(shè)計(jì)的最終結(jié)果)。軟件設(shè)計(jì)包括以下三個(gè)部分:(1)功能分析和設(shè)計(jì):分析系統(tǒng)需要實(shí)現(xiàn)的任務(wù)。(2)軟件模塊劃分:根據(jù)任務(wù)劃分使用的模塊。(3)模塊開(kāi)發(fā)與實(shí)現(xiàn):通過(guò)編程語(yǔ)言實(shí)現(xiàn)各個(gè)高層模塊,并通過(guò)交叉開(kāi)發(fā)環(huán)境實(shí)現(xiàn)目標(biāo)代碼。在系統(tǒng)集成時(shí),需要實(shí)現(xiàn)硬件底層代碼(包括板級(jí)支持包代碼和硬件抽象層代碼),完成軟、硬件的集成任務(wù)。然后進(jìn)行系統(tǒng)測(cè)試。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ì)審查問(wèn)題陳述和用戶要求。著手某個(gè)項(xiàng)目前,應(yīng)該時(shí)刻記住系統(tǒng)實(shí)現(xiàn)的目標(biāo)。審查約束條件:約束條件將決定可做何選擇以及如何建立系統(tǒng)。例如,系統(tǒng)要求浮點(diǎn)運(yùn)算,但預(yù)算不允許處理器中含一個(gè)浮點(diǎn)運(yùn)算協(xié)處理器。這就意味著設(shè)計(jì)必須規(guī)定浮點(diǎn)運(yùn)算將由軟件來(lái)完成。也意味著必須寫(xiě)一個(gè)浮點(diǎn)函數(shù)庫(kù)或買一個(gè)第三方產(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)的一個(gè)計(jì)劃。系統(tǒng)的體系結(jié)構(gòu)取決于如下因素。1)系統(tǒng)實(shí)時(shí)方案系統(tǒng)實(shí)時(shí)方案是指客戶要求系統(tǒng)具有實(shí)時(shí)性時(shí),應(yīng)該選擇什么樣的實(shí)時(shí)方案,是選擇硬實(shí)時(shí)系統(tǒng)還是軟實(shí)時(shí)系統(tǒng)。比如在硬實(shí)時(shí)系統(tǒng)的情況下,對(duì)定時(shí)的要求非常嚴(yán)格(如實(shí)時(shí)工業(yè)控制),因此,需要詳細(xì)地進(jìn)行定時(shí)分析。參考:參考資料\GLASSBATCHING.doc

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論