第02章-嵌入式系統(tǒng)開發(fā)過程V2.0_第1頁
第02章-嵌入式系統(tǒng)開發(fā)過程V2.0_第2頁
第02章-嵌入式系統(tǒng)開發(fā)過程V2.0_第3頁
第02章-嵌入式系統(tǒng)開發(fā)過程V2.0_第4頁
第02章-嵌入式系統(tǒng)開發(fā)過程V2.0_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023/12/221嵌入式系統(tǒng)東南大學(xué)電氣工程學(xué)院時斌——嵌入式系統(tǒng)開發(fā)過程2023/12/222嵌入式系統(tǒng)開發(fā)過程Outline

概述需求分析階段詳細(xì)設(shè)計(jì)階段實(shí)現(xiàn)階段測試階段2023/12/223嵌入式系統(tǒng)開發(fā)過程概述產(chǎn)品的生命周期2023/12/224嵌入式系統(tǒng)開發(fā)過程概述嵌入式系統(tǒng)項(xiàng)目開發(fā)生命周期一般分為需求分析、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)和測試4個階段。2023/12/225嵌入式系統(tǒng)開發(fā)過程需求分析階段

分析用戶的需求確定硬件和軟件檢查需求分析的結(jié)果確定項(xiàng)目的約束條件概要設(shè)計(jì)2023/12/226嵌入式系統(tǒng)開發(fā)過程需求分析階段——分析用戶的需求(1)功能需求:用戶的視角(2)非功能性需求:性能價格系統(tǒng)的尺寸和質(zhì)量功耗

分析用戶對產(chǎn)品的需求2023/12/227嵌入式系統(tǒng)開發(fā)過程需求分析階段——分析用戶的需求精煉用戶需求的方法是建立模型:用已存數(shù)據(jù)模擬功能在個人電腦或工作站上運(yùn)行,讓用戶了解整個系統(tǒng)確認(rèn)用戶的需求2023/12/228嵌入式系統(tǒng)開發(fā)過程需求分析階段——分析用戶的需求系統(tǒng)用于什么任務(wù)?系統(tǒng)從用戶或其他源接受什么輸入?系統(tǒng)向用戶或其他源輸出什么?用戶想要如何同系統(tǒng)打交道?系統(tǒng)的質(zhì)量和體積如何?系統(tǒng)連接何種外設(shè)?系統(tǒng)是否需要運(yùn)行某些現(xiàn)存的軟件?

羅列用戶的需求2023/12/229嵌入式系統(tǒng)開發(fā)過程需求分析階段——分析用戶的需求

簡單的需求表格

名稱

目的

輸入

輸出

功能

性能

生產(chǎn)成本

功耗

物理尺寸和質(zhì)量2023/12/2210嵌入式系統(tǒng)開發(fā)過程需求分析階段——分析用戶的需求

是否指定了某個功能的輸入輸出是否考慮了系統(tǒng)運(yùn)行的所有方式是否有一些不切實(shí)際的需求系統(tǒng)是否可以實(shí)現(xiàn)

需求的內(nèi)部一致性2023/12/2211嵌入式系統(tǒng)開發(fā)過程需求分析階段——確定硬件和軟件處理器:詳細(xì)標(biāo)明處理器的速度和總線吞吐量總線吞吐量:操作系統(tǒng):需要的操作系統(tǒng)類型編程語言:選擇開發(fā)語言,例如C語言、Java、嵌入式C第三方軟件或庫函數(shù):

編譯器的選擇:商用編譯器、免費(fèi)編譯器第三方硬件:使用第三方提供的開發(fā)板、評估板等縮短開發(fā)時間2023/12/2212嵌入式系統(tǒng)開發(fā)過程需求分析階段——檢查需求分析的結(jié)果原因

嵌入式系統(tǒng)項(xiàng)目中,超過50%的錯誤出現(xiàn)在寫系統(tǒng)要求和技術(shù)指標(biāo)時。所以,檢查系統(tǒng)需求分析階段建立的資料的完整性和正確性是很重要的。目的

分析階段檢查的目的是確定此階段建立的資料是否全面,調(diào)研工作是否細(xì)致,是否清楚地描述系統(tǒng)將做什么。2023/12/2213嵌入式系統(tǒng)開發(fā)過程需求分析階段——檢查需求分析的結(jié)果方法和內(nèi)容

噪聲只字不提超前規(guī)格說明矛盾模棱兩可超前引用一廂情愿2023/12/2214嵌入式系統(tǒng)開發(fā)過程需求分析階段——確定項(xiàng)目的約束條件

是否要滿足項(xiàng)目的階段性或竣工的工期限制?項(xiàng)目的部分或全體是否限制在一個固定的預(yù)算內(nèi)?分派到該項(xiàng)目的最大人數(shù)是多少?每個人員每周在此項(xiàng)目上能工作多少小時?員工的技術(shù)知識和經(jīng)驗(yàn)是否足夠?員工對要解決的問題是否熟悉?員工和關(guān)鍵的人才地處何處?是否必須要采用某種硬件?是否必須要采用某種工具軟件?有哪些重要的審查管理環(huán)節(jié),手續(xù)有哪些?該項(xiàng)目是否要依賴于你的某些固定供應(yīng)商?2023/12/2215嵌入式系統(tǒng)開發(fā)過程需求分析階段——概要設(shè)計(jì)系統(tǒng)結(jié)構(gòu)模型建立方式功能層功能需求庫系統(tǒng)結(jié)構(gòu)庫將功能轉(zhuǎn)換為結(jié)構(gòu)驗(yàn)證性能和應(yīng)用需求系統(tǒng)結(jié)構(gòu)模型的建立系統(tǒng)結(jié)構(gòu)的實(shí)現(xiàn)映射層模型層2023/12/2216嵌入式系統(tǒng)開發(fā)過程需求分析階段——概要設(shè)計(jì)系統(tǒng)結(jié)構(gòu)模型建立流程系統(tǒng)結(jié)構(gòu)模型功能設(shè)計(jì)任務(wù)寄存器傳輸設(shè)計(jì)邏輯門級設(shè)計(jì)物理設(shè)計(jì)集成系統(tǒng)測試模塊高層語言目標(biāo)代碼硬件的設(shè)計(jì)過程軟件的設(shè)計(jì)過程2023/12/2217嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段

審查分析資料體系結(jié)構(gòu)設(shè)計(jì)硬件與軟件的劃分硬件和軟件的設(shè)計(jì)次序硬件設(shè)計(jì)

軟件設(shè)計(jì)檢查設(shè)計(jì)嵌入式系統(tǒng)設(shè)計(jì)的自動化設(shè)計(jì)工具的評估硬件平臺2023/12/2218嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——審查分析資料審查分析資料審查約束條件2023/12/2219嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——體系結(jié)構(gòu)設(shè)計(jì)系統(tǒng)是硬實(shí)時系統(tǒng)還是軟實(shí)時系統(tǒng)操作系統(tǒng)是否需要嵌入物理系統(tǒng)的成本、尺寸和耗電量是否是產(chǎn)品成功的關(guān)鍵因素選擇處理器和相關(guān)硬件2023/12/2220嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件與軟件的劃分設(shè)計(jì)者可以使用純軟件實(shí)現(xiàn):如沒有FPU的CPU

純硬件實(shí)現(xiàn):如專用調(diào)制解調(diào)芯片兩者的結(jié)合:如顯卡硬件和軟件分工的主要原則是考慮系統(tǒng)的成本。2023/12/2221嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件與軟件的設(shè)計(jì)次序先設(shè)計(jì)硬件有一個硬件的框圖作為軟件設(shè)計(jì)時的參考是非常有益的。TivaCLaunchpad硬件平臺設(shè)計(jì)框圖2023/12/2222嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件與軟件的設(shè)計(jì)次序軟、硬件同時設(shè)計(jì)如果系統(tǒng)較大或較復(fù)雜,特別是硬件較復(fù)雜的情況,需要軟、硬件設(shè)計(jì)同時進(jìn)行。先設(shè)計(jì)軟件先設(shè)計(jì)與硬件無關(guān)的軟件。2023/12/2223嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件設(shè)計(jì)設(shè)計(jì)硬件子系統(tǒng)硬件子系統(tǒng)的設(shè)計(jì)一般采用Top-Down的設(shè)計(jì)方法:先將硬件分成各部件或模塊;畫出一張或多張硬件部件的框圖。一個框圖表示一個單獨(dú)的電路板或電路板的一部分、外設(shè)等。2023/12/2224嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件設(shè)計(jì)定義硬件接口I/O端口硬件寄存器共享內(nèi)存或內(nèi)存映像I/O的地址硬件中斷存儲器空間分配處理器的運(yùn)行速度2023/12/2225嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——軟件設(shè)計(jì)設(shè)計(jì)軟件子系統(tǒng)軟件設(shè)計(jì)采用采用Top-Down的設(shè)計(jì)方法,將系統(tǒng)的軟件分解成一些適當(dāng)定義好的子系統(tǒng)或模塊。大的子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)子系統(tǒng)………………細(xì)化再細(xì)化…………2023/12/2226嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——軟件設(shè)計(jì)定義軟件接口規(guī)定各個子系統(tǒng)配備的軟件接口:詳細(xì)規(guī)定說明API

用函數(shù)原型、數(shù)據(jù)結(jié)構(gòu)聲明、類聲明等建立頭文件軟件系統(tǒng)的總設(shè)計(jì)師給出模塊之間的依賴關(guān)系2023/12/2227嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——軟件設(shè)計(jì)規(guī)定系統(tǒng)啟動和關(guān)閉過程說明系統(tǒng)啟動和關(guān)閉過程中事件發(fā)生的順序:

啟動:硬件和軟件子系統(tǒng)初始化的細(xì)節(jié),及初始化的順序;關(guān)閉:每個子系統(tǒng)必須完成的動作,如保存文件到磁盤上、斷開網(wǎng)絡(luò)連接。2023/12/2228嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——軟件設(shè)計(jì)規(guī)定出錯處理方案出錯處理策略應(yīng)當(dāng)包括對致命性錯誤的應(yīng)對處理:

有的系統(tǒng)具有自動復(fù)位功能;有的系統(tǒng)需要一個模塊通知系統(tǒng)管理員進(jìn)行處理;有的系統(tǒng)具有冗余功能

…2023/12/2229嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——軟件設(shè)計(jì)監(jiān)視計(jì)時器監(jiān)視計(jì)時器(Watchdog)是一個設(shè)計(jì)者建在某種CPU中的小報(bào)警時鐘。打開Watchdog

復(fù)位計(jì)數(shù)系統(tǒng)復(fù)位、重啟軟件出問題,Watchdog超時軟件正常運(yùn)行2023/12/2230嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——檢查設(shè)計(jì)

需求分析階段:檢查完成資料的指令和完整性設(shè)計(jì)階段:檢查系統(tǒng)設(shè)計(jì)的正確性詳細(xì)設(shè)計(jì)階段——嵌入式系統(tǒng)設(shè)計(jì)的自動化

系統(tǒng)定義:用正式語言描述整個系統(tǒng)系統(tǒng)設(shè)計(jì)分割軟、硬件合成軟、硬件估計(jì)確認(rèn)2023/12/2231嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——嵌入式系統(tǒng)設(shè)計(jì)工具的評估協(xié)同合成工具目前的協(xié)同合成工具主要有以下幾種:

POLIS:由UC-Berkeley開發(fā)的交互式嵌入式系統(tǒng)的軟件和硬件協(xié)同設(shè)計(jì)框架,它適合于小型控制系統(tǒng)的設(shè)計(jì),系統(tǒng)描述支持基于FSM的語言。

COSYMA:由德國IDA開發(fā)的一種探索硬件與軟件協(xié)同合成進(jìn)程的平臺。

Chinook:整個系統(tǒng)的描述作為一個輸入提供給Chinook;Chinook是為控制系統(tǒng)而設(shè)計(jì)的,內(nèi)部模式基于類似等級狀態(tài)的模式;不對代碼進(jìn)行分割;為整個設(shè)計(jì)提供單一模擬環(huán)境;支持多種體系結(jié)構(gòu)模板;支持定時限制的描述;能自動合成多種接口;能直接從定時圖表中合成設(shè)備驅(qū)動器;可控制處理器之間的通信。2023/12/2232嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——嵌入式系統(tǒng)設(shè)計(jì)工具的評估協(xié)同模擬工具目前的協(xié)同模擬工具主要有以下兩種:

PTOLEMY:混合使用面向?qū)ο髢?nèi)核的計(jì)算模型;用于模擬多種不同的系統(tǒng);不合適與系統(tǒng)合成。

TSS:TSS是模擬復(fù)雜硬件系統(tǒng)的工具;它的模塊用C語言編寫;單個模塊的提取可由用戶控制;是模塊化的軟件;不支持分級模塊;沒有機(jī)制用于同步各處理器存取共享數(shù)據(jù)結(jié)構(gòu);模塊間的通信通過端口和總線。2023/12/2233嵌入式系統(tǒng)開發(fā)過程詳細(xì)設(shè)計(jì)階段——硬件平臺

嵌入式系統(tǒng)的硬件平臺很多,有ARM系列、Motorola公司的PowerPC系列、Coldfire系列、M.core系列等、TivaC系列、DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等。例子:TM4C123GH6PM嵌入式開發(fā)平臺2023/12/2234嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺軟件開發(fā)過程開發(fā)階段的文檔樣例2023/12/2235嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺開發(fā)平臺由4部分組成:硬件平臺操作系統(tǒng)編程語言開發(fā)工具2023/12/2236嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺選擇處理器開發(fā)工具交叉編譯器連接定位器加載程序調(diào)試器操作系統(tǒng)編程語言測試、調(diào)試工具編程器ROM仿真器指令集模擬器測試儀器內(nèi)部電路仿真器2023/12/2237嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇處理器選擇處理器的標(biāo)準(zhǔn):處理器的處理速度:主頻、時鐘頻率、內(nèi)部寄存器的大小、寄存器是否被公平對待、有助于耗時操作的特殊的內(nèi)置硬件等。對選擇的處理器是否熟悉處理器上的I/O功能是否滿足系統(tǒng)的要求處理器的軟件支持工具處理器的調(diào)試支持處理器制造商的支持可信度如何2023/12/2238嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇硬件部件選擇硬件部分主要根據(jù)預(yù)算進(jìn)行:產(chǎn)品的需求量目標(biāo)市場的機(jī)會如何軟件對硬件的依賴程度2023/12/2239嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇操作系統(tǒng)

操作系統(tǒng)的功能:需要OS的全部功能還是部分功能;文件系統(tǒng)、人機(jī)界面;實(shí)時系統(tǒng)還是分時系統(tǒng);操作系統(tǒng)是否可裁減;是否可以不需要OS。配套開發(fā)工具的考慮操作系統(tǒng)的移植難度

OS是否包括特殊的調(diào)試支持

OS的內(nèi)存要求如何選擇操作系統(tǒng)的判別標(biāo)準(zhǔn)如下:2023/12/2240嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇操作系統(tǒng)

項(xiàng)目程序員是否熟悉此OS,主要指此OS提供的APIOS是否包括所有需要的部件

OS是否有目標(biāo)硬件的驅(qū)動程序

OS是否有可伸縮性選擇操作系統(tǒng)的判別標(biāo)準(zhǔn)如下:2023/12/2241嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇操作系統(tǒng)例子:紅旗嵌入式Linux系統(tǒng)2023/12/2242嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——選擇編程語言

軟件開發(fā)人員最熟悉的語言語言使用的廣泛程度語言的性能如何大部分系統(tǒng)的開發(fā)使用C語言和C++語言,除此之外,還有Java等其他語言的選擇。選擇編程語言的標(biāo)準(zhǔn)如下:2023/12/2243嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——關(guān)于評估板為了方便嵌入式系統(tǒng)的開發(fā),目前一般采用的開發(fā)方式是先使用評估板進(jìn)行開發(fā)。當(dāng)在評估板上開發(fā)、運(yùn)行、調(diào)試成功后,再根據(jù)評估板使用的硬件,裁減一般應(yīng)用中不需要的硬件,最后做成產(chǎn)品板大量生產(chǎn)。很多廠商提供這種評估板,例如ARM公司的ARMEvaluator-7T、Ti的TivaC等。2023/12/2244嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——關(guān)于評估板Tiva?C系列TM4C123GLaunchPad評估板是基于ARM?

Cortex?-M4F微控制器的低成本評價平臺。2023/12/2245嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

選擇開發(fā)平臺——關(guān)于板極支持包

操作系統(tǒng)的提供商通常把操作系統(tǒng)分成兩層,上層與硬件無關(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)。2023/12/2246嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程建立交叉開發(fā)環(huán)境交叉編譯和連接重定位和下載聯(lián)機(jī)調(diào)試2023/12/2247嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程(1)建立交叉開發(fā)環(huán)境交叉開發(fā)環(huán)境的原理很簡單,即在主機(jī)和目標(biāo)機(jī)器體系結(jié)構(gòu)不同的情況下,在主機(jī)上開發(fā)那些將在目標(biāo)機(jī)器上運(yùn)行的程序。比如在x86上利用ADS/SDT開發(fā)(程序編輯、編譯、定位鏈接)ARM目標(biāo)板上運(yùn)行的程序。這里ADS/SDT和桌面計(jì)算機(jī)就構(gòu)成了交叉開發(fā)環(huán)境。2023/12/2248嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程(1)建立交叉開發(fā)環(huán)境按照發(fā)布的形式,主要分為開放和商用兩種類型:開放式交叉開發(fā)環(huán)境:例如gcc

商用的交叉開發(fā)環(huán)境:例如MetrowerksCodeWarrior,ARMSoftwareDevelopmentToolkit,SDSCrossCompiler,WindRiverTornado等2023/12/2249嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程(1)建立交叉開發(fā)環(huán)境按照使用方式,交叉開發(fā)工具主要分為兩種類型:使用Makefile開發(fā)環(huán)境:需要編譯Makefile來管理和控制項(xiàng)目的開發(fā)。例如gcc,SDSCrossCompiler等使用IDE開發(fā)環(huán)境:例如CodeWarrior2023/12/2250嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程(2)交叉編譯和連接使用建立好的交叉開發(fā)環(huán)境完成編譯和連接工作。(3)重定位和下載編譯連接后形成目標(biāo)板的image文件,然后通過相應(yīng)地工具將image文件下載到目標(biāo)板(bootloader指定image文件下載的位置)。下載結(jié)束后,使用bootloader提供的運(yùn)行命令,從指定地址開始運(yùn)行嵌入式系統(tǒng)軟件。2023/12/2251嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程(4)聯(lián)機(jī)調(diào)試就調(diào)試方法而言,調(diào)試方法分為以下兩種:就操作系統(tǒng)調(diào)試的層次而言,分為以下兩種:軟件調(diào)試:使用軟件調(diào)試器調(diào)試嵌入式系統(tǒng)軟件連接定位器:使用仿真調(diào)試器協(xié)助調(diào)試過程調(diào)試嵌入式操作系統(tǒng)內(nèi)核調(diào)試嵌入式操作系統(tǒng)的應(yīng)用程序2023/12/2252嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——嵌入式系統(tǒng)的軟件開發(fā)過程例子:使用SDT和ADS進(jìn)行協(xié)議軟件的開發(fā)流程例子:使用SDT和ADS進(jìn)行協(xié)議軟件的開發(fā)流程2023/12/2253嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——在主機(jī)系統(tǒng)上驗(yàn)證軟件在主機(jī)系統(tǒng)上驗(yàn)證軟件不是必需的,一般用在目標(biāo)系統(tǒ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í)行時間,VxWorks公司的simlink工具可以仿真開發(fā)工具。2023/12/2254嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——在目標(biāo)系統(tǒng)上驗(yàn)證軟件該階段,硬件工程師和軟件工程師一起工作,完成對功能和性能要求的完整測試。2023/12/2255嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

清除程序中的無用代碼清除為調(diào)試所引入的代碼避免使用大型的庫例程避免使用遞歸式例程避免浮點(diǎn)操作通過使用非常簡單的訣竅來減少計(jì)算要求

軟件開發(fā)過程——代碼優(yōu)化2023/12/2256嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

軟件開發(fā)過程——代碼優(yōu)化

將訪問最頻繁的變量聲明為寄存器變量或自動變量盡量使用無符號數(shù)據(jù)類型將需要消耗大量時間的函數(shù)或例程用匯編語言實(shí)現(xiàn)與處理器的開發(fā)工具一起提供的編譯器有一個代碼優(yōu)化器,編譯程序時,將優(yōu)化級設(shè)置為所需的等級。2023/12/2257嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

開發(fā)階段的文檔樣例文件名稱內(nèi)容1.技術(shù)文件目錄2.技術(shù)任務(wù)書1.任務(wù)來源、設(shè)計(jì)依據(jù)2.產(chǎn)品用途及使用范圍3.主要工作原理及硬軟件分工4.基本參數(shù)、主要功能、技術(shù)指標(biāo)5.總部局、主要部件概述6.標(biāo)準(zhǔn)化綜合要求7.提出國內(nèi)外同類產(chǎn)品水平比較8.關(guān)鍵技術(shù)預(yù)測9.開發(fā)周期估算2023/12/2258嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

開發(fā)階段的文檔樣例文件名稱內(nèi)容3.技術(shù)方案報(bào)告4.產(chǎn)品標(biāo)準(zhǔn)(草案)1.產(chǎn)品范圍2.引用標(biāo)準(zhǔn)3.基本參數(shù)及形式4.技術(shù)要求(功能、性能、影響量)5.試驗(yàn)方法(采用國際標(biāo)準(zhǔn))6.檢驗(yàn)規(guī)則5.技術(shù)條件(進(jìn)廠)1.使用范圍2.技術(shù)要求3.試驗(yàn)方法2023/12/2259嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

開發(fā)階段的文檔樣例文件名稱內(nèi)容6.可靠性技術(shù)設(shè)計(jì)報(bào)告7.技術(shù)設(shè)計(jì)說明書硬件1.總體方案2.產(chǎn)品結(jié)構(gòu)3.產(chǎn)品性能4.電路工作原理分析、技巧、結(jié)構(gòu)5.工藝合理性6.主要故障鑒別方法軟件(功能站)1.總體方案及體系結(jié)構(gòu)2.任務(wù)調(diào)度原理或總控流程說明3.各種功能的實(shí)現(xiàn)方法、處理流程或工作原理2023/12/2260嵌入式系統(tǒng)開發(fā)過程實(shí)現(xiàn)階段

開發(fā)階段的文檔樣例文件名稱內(nèi)容7.技術(shù)設(shè)計(jì)說明書軟件(功能站)4.數(shù)據(jù)庫說明、邏輯結(jié)構(gòu)5.數(shù)據(jù)格式說明6.內(nèi)存分配方案7.各部分接口設(shè)計(jì)8.通用子程序和標(biāo)準(zhǔn)子程序設(shè)計(jì)8.形式試驗(yàn)報(bào)告9.試制總結(jié)1.技術(shù)水平2.試制過程中出現(xiàn)的問題的解決措施3.對沒有達(dá)到技術(shù)任務(wù)書要求的原因進(jìn)行說明2023/12/2261嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因何時測試測試內(nèi)容何時停止測試選擇測試實(shí)例嵌入式系統(tǒng)的實(shí)時失敗模式評估測試的覆蓋率維護(hù)和測試2023/12/2262嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因嵌入式系統(tǒng)的測試包括軟件測試、硬件測試、單元測試等。硬件測試主要完成硬件電路的功能和指標(biāo)的測試。一般系統(tǒng)的硬件測試包括可靠性測試和電磁兼容性測試。目前國際、國內(nèi)對嵌入式系統(tǒng)產(chǎn)品都有了相關(guān)的強(qiáng)制指標(biāo),例如:國外的電磁兼容性測試指標(biāo),國內(nèi)新實(shí)行的3C認(rèn)證等。2023/12/2263嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因本章只討論嵌入式系統(tǒng)的軟件測試方面的內(nèi)容。軟件測試的重要性主要體現(xiàn)在下面幾個方面:在軟件中找到錯誤減少用戶與公司的風(fēng)險節(jié)約開發(fā)與維護(hù)成本提高性能2023/12/2264嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因“停機(jī)定理”:不可能證明任何一個程序是正確的,只要給予足夠的測試,就能證明一個程序是錯誤的。測試并不能證明程序的“正確”,而只能找出錯誤。對于整個系統(tǒng)來說,錯誤的結(jié)果并不一定是應(yīng)用軟件的程序員造成的,有時問題可能出在系統(tǒng)軟件和開發(fā)工具上。(1)找到錯誤2023/12/2265嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因測試是為了自己、公司及客戶最小化風(fēng)險。(2)減少風(fēng)險對于關(guān)鍵性的系統(tǒng),關(guān)鍵性的軟件模塊尤其需要重視測試工作。(3)開發(fā)關(guān)鍵性任務(wù)軟件2023/12/2266嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因(4)節(jié)約成本2023/12/2267嵌入式系統(tǒng)開發(fā)過程測試階段

測試的原因(5)提高性能測試最優(yōu)系統(tǒng)性能,找到并清除死代碼及無效代碼,能幫助確認(rèn)軟件已經(jīng)完全挖掘出硬件潛力,并且還能避免非??膳碌挠布匦略O(shè)計(jì)。2023/12/2268嵌入式系統(tǒng)開發(fā)過程測試階段

何時測試嵌入式系統(tǒng)軟件測試分布在系統(tǒng)開發(fā)的每個階段。程序設(shè)計(jì)階段進(jìn)行的模塊或單元測試和調(diào)試,可能不具有完整性,例如:

if(condition) exec1 else exec2exec2有可能在程序設(shè)計(jì)階段不被執(zhí)行,那么exec2的正確性無法保證。2023/12/2269嵌入式系統(tǒng)開發(fā)過程測試階段

何時測試可以使用下面方法讓exec2強(qiáng)制執(zhí)行:

if(!condition) exec1 else exec22023/12/2270嵌入式系統(tǒng)開發(fā)過程測試階段

何時測試(1)單元測試單元測試指的是在軟件開發(fā)過程中進(jìn)行的小模塊的測試,測試方法可以采用白盒測試、黑盒測試相結(jié)合的方法。黑盒測試時,測試人員既要用正常值作為輸入,又要用異常值作為輸入來測試模塊的功能和性能。2023/12/2271嵌入式系統(tǒng)開發(fā)過程測試階段

何時測試(2)回歸測試每次修改后都應(yīng)當(dāng)重新測試以確認(rèn)這些修改會不會無意中影響一些看似與之無關(guān)的行為,這被稱為回歸測試。2023/12/2272嵌入式系統(tǒng)開發(fā)過程測試階段

測試內(nèi)容嵌入式軟件與一般應(yīng)用軟件測試的區(qū)別

嵌入式軟件必須在很長時間內(nèi)穩(wěn)定運(yùn)行嵌入式軟件一般不會頻繁地由用戶進(jìn)行升級嵌入式軟件有時使用在關(guān)鍵性的應(yīng)用產(chǎn)品中

嵌入式軟件必須與嵌入式硬件一起對產(chǎn)品故障負(fù)責(zé)真實(shí)世界事件一般是異步而且不可預(yù)測的,這就使模擬測試既困難又不可靠如果軟件出錯,可能會出現(xiàn)法律問題嵌入式軟件與應(yīng)用軟件的區(qū)別:2023/12/2273嵌入式系統(tǒng)開發(fā)過程測試階段

測試內(nèi)容嵌入式軟件與一般應(yīng)用軟件測試的區(qū)別

由于實(shí)時性與同時性很難同時滿足,所以大多數(shù)測試集中與實(shí)時行為由于大多數(shù)實(shí)時系統(tǒng)有資源約束,需要進(jìn)行更多的性能與可用性測試可以使用一些實(shí)時跟蹤工具以測量測試對代碼的覆蓋率如何對可靠性的測試級別要比應(yīng)用軟件中高得多嵌入式系統(tǒng)測試與應(yīng)用軟件測試的區(qū)別:2023/12/2274嵌入式系統(tǒng)開發(fā)過程測試階段

測試內(nèi)容嵌入式軟件的測試內(nèi)容(1)測試序列的來源有兩種:需要用戶進(jìn)行設(shè)計(jì)標(biāo)準(zhǔn)的測試序列軟件測試時一般需要測試實(shí)例或測試序列。2023/12/2275嵌入式系統(tǒng)開發(fā)過程測試階段

測試內(nèi)容嵌入式軟件的測試內(nèi)容(2)測試實(shí)例:功能測試、覆蓋測試功能測試和覆蓋測試的方法:找出哪個函數(shù)沒有被功能測試完全覆蓋找出各函數(shù)的哪一段沒有被執(zhí)行找出需要哪一個附加覆蓋測試運(yùn)行附加測試重復(fù)以上步驟2023/12/2276嵌入式系統(tǒng)開發(fā)過程測試階段

何時停止測試

當(dāng)老板發(fā)話時當(dāng)新一輪測試周期找到比某預(yù)計(jì)值更少的新錯誤時在沒有發(fā)現(xiàn)新錯誤的情況下,已經(jīng)達(dá)到某個確定的覆蓋率限度時最常見的停止標(biāo)準(zhǔn)如下:2023/12/2277嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例功能測試功能測試稱作黑盒測試,其測試實(shí)例在設(shè)計(jì)時不引用程序的實(shí)際代碼,即不用暴露盒子的內(nèi)部。理想情況下,需要測試程序中的每一種可能行為,但不切實(shí)際。為了接近理想狀態(tài),基本方法是選擇最有可能揭露出錯誤的測試。2023/12/2278嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例功能測試黑盒測試一般包括如下幾點(diǎn):

極限情況測試:測試中有意使輸入信道、內(nèi)存緩沖區(qū)、磁盤控制器、內(nèi)存管理器等部件超載。邊界測試:輸入表示特定輸入范圍邊界的值以及使輸出產(chǎn)生輸出范圍邊界的值異常測試:測試應(yīng)當(dāng)觸發(fā)失敗模式或異常模式2023/12/2279嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例功能測試黑盒測試一般包括如下幾點(diǎn):

錯誤測試:測試基于以前進(jìn)行軟件測試及測試類似程序的工作經(jīng)驗(yàn)隨機(jī)測試性能測試2023/12/2280嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例覆蓋測試覆蓋測試盡可能使每條代碼語句、判定點(diǎn)或判定路徑都最少被執(zhí)行一次,從而避免功能測試的弱點(diǎn)。覆蓋測試也稱為白盒測試或玻璃盒測試,需要軟件實(shí)現(xiàn)的全部知識來進(jìn)行設(shè)計(jì),測試時需要看到程序?qū)崿F(xiàn)、執(zhí)行的細(xì)節(jié)。2023/12/2281嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例覆蓋測試典型的白盒測試包括以下幾點(diǎn):語句測試:選擇的測試實(shí)例至少執(zhí)行一次程序中的每條語句判定或分支覆蓋:選擇的測試實(shí)例使每個分支至少運(yùn)行一次條件覆蓋:選擇的測試實(shí)例使每個用于判定的條件具有所有可能的邏輯值2023/12/2282嵌入式系統(tǒng)開發(fā)過程測試階段

選擇測試實(shí)例灰盒測試把黑盒測試和白盒測試結(jié)合起來,達(dá)到既簡化測試,又盡量遍歷關(guān)鍵代碼的目的,這種測試稱為灰盒測試?;液袦y試僅知道部分程序內(nèi)部細(xì)節(jié),測試只覆蓋代碼中的特定部分。這種策略在需要將新功能集成到較穩(wěn)定的老代碼庫中時非常有用。由于老代碼已通過測試,所以測試工作會集中到新老代碼共存的區(qū)域。2023/12/2283嵌入式系統(tǒng)開發(fā)過程測試階段

嵌入式系統(tǒng)的實(shí)時失敗模式對于嵌入式系統(tǒng)的實(shí)時失敗模式,可以采用下列方法測試:利用關(guān)鍵序列進(jìn)行測試實(shí)時系統(tǒng)中,事件的確定組合(稱為關(guān)鍵序列)會使從事件觸發(fā)到事件響應(yīng)產(chǎn)生嚴(yán)重的延遲。嵌入式測試活動應(yīng)當(dāng)有能力產(chǎn)生關(guān)鍵序列并測試相關(guān)的響應(yīng)時間。關(guān)于時間確定性大多數(shù)嵌入式系統(tǒng)屬于實(shí)時系統(tǒng),具有時間確定性指標(biāo),通常用deadline來衡量。嵌入式系統(tǒng)由于未能達(dá)到重要的計(jì)時deadline而運(yùn)行失敗,這一情形稱為硬實(shí)時或時間關(guān)鍵失敗。2023/12/2284嵌入式系統(tǒng)開發(fā)過程測試階段

嵌入式系統(tǒng)的實(shí)時失敗模式對于嵌入式系統(tǒng)的實(shí)時失敗模式,可以采用下列方法測試:長期運(yùn)行造成的系統(tǒng)出錯多任務(wù)機(jī)制可能造成一些系統(tǒng)出錯,如存儲器耗盡、優(yōu)先級反轉(zhuǎn)、內(nèi)存碎片造成的效率低下等,這種錯誤和失敗是在強(qiáng)迫系統(tǒng)超長時間全速或接近全速運(yùn)行時才會發(fā)生。關(guān)于模擬測試平臺對嵌入式系統(tǒng)的實(shí)時行為的徹底測試一般要求把嵌入式系統(tǒng)安裝到實(shí)際的運(yùn)行平臺上,有時實(shí)現(xiàn)起來比較困難,因而可以設(shè)計(jì)一個盡量接近實(shí)際的模擬平臺環(huán)境。2023/12/2285嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率測試過的代碼的數(shù)量表示測試的覆蓋率。軟件插裝軟件插裝,指的是在實(shí)際的軟件代碼中插入測試代碼,這些代碼在軟件的發(fā)行版中刪除。2023/12/2286嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率軟件插裝通常軟件插裝有以下幾種方法:(1)Printf()方法在每個代表連續(xù)執(zhí)行指令的基本模塊的開始處插入跟蹤調(diào)用(如printf()函數(shù))進(jìn)行評估。在基本模塊入口處插入跟蹤調(diào)用2023/12/2287嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率軟件插裝(2)直接寫內(nèi)存方法如果嵌入式系統(tǒng)沒有標(biāo)準(zhǔn)的輸出設(shè)備,無法使用printf()函數(shù)進(jìn)行跟蹤,則可采用寫內(nèi)存的方法。如果應(yīng)用軟件代碼在RTOS中進(jìn)行,跟蹤代碼就可以在每個基本模塊的入口處調(diào)用RTOS,而RTOS可在目標(biāo)系統(tǒng)內(nèi)存緩沖區(qū)中記錄這個調(diào)用,或者把它報(bào)告給主機(jī)。2023/12/2288嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率軟件插裝(3)低干擾printf()標(biāo)準(zhǔn)庫中的printf()效率低,會干擾整個嵌入式軟件的性能。低干擾printf()使用一種簡單的內(nèi)存寫操作,在每個基本塊的入口處,日志函數(shù)在另外的數(shù)據(jù)存儲區(qū)中為此做一個標(biāo)記;測試結(jié)束后,外部軟件再把這些標(biāo)記關(guān)聯(lián)到對應(yīng)的代碼段上。低干擾printf()的另一種方法是與邏輯分析儀配合使用,其對單個內(nèi)存單元寫入數(shù)據(jù),并且邏輯分析儀能捕捉到這些數(shù)據(jù)。2023/12/2289嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率測試語句的執(zhí)行判定覆蓋使語句覆蓋更進(jìn)一步。除了捕捉進(jìn)入基本塊的入口外,判定覆蓋還測試代碼中判定點(diǎn)的結(jié)果。C或C++語言中,這些判定點(diǎn)是if、for、while和do/while語句塊。判定覆蓋超過語句覆蓋的優(yōu)點(diǎn)在于其能捕捉更多的邏輯錯誤。2023/12/2290嵌入式系統(tǒng)開發(fā)過程測試階段

評估測試的覆蓋率測試語句的執(zhí)行if(conditionistrue){ <thendothesestatement>}<codefollowingelselessif>上述語句中無法知道false條件是否發(fā)生過。判定覆蓋能跟蹤條件為

溫馨提示

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

評論

0/150

提交評論