嵌入式系統(tǒng):嵌入式軟件基礎(chǔ)_第1頁(yè)
嵌入式系統(tǒng):嵌入式軟件基礎(chǔ)_第2頁(yè)
嵌入式系統(tǒng):嵌入式軟件基礎(chǔ)_第3頁(yè)
嵌入式系統(tǒng):嵌入式軟件基礎(chǔ)_第4頁(yè)
嵌入式系統(tǒng):嵌入式軟件基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩66頁(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)介

嵌入式系統(tǒng)第一部分嵌入式系統(tǒng)基礎(chǔ)

1.3嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式軟件分類(lèi)嵌入式軟件體系結(jié)構(gòu)嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)實(shí)例嵌入式軟件分類(lèi)嵌入式軟件單線程程序循環(huán)輪詢(xún)系統(tǒng)有限狀態(tài)機(jī)事件驅(qū)動(dòng)程序中斷驅(qū)動(dòng)系統(tǒng)多任務(wù)系統(tǒng)單機(jī)多任務(wù)系統(tǒng)分布式系統(tǒng)操作系統(tǒng):Linux、μC/OS-II/III、VxWorks、Android、IOS、WinCE硬件平臺(tái):ARM、單片機(jī)、FPGA、DSP、POWERPC、XScale編程語(yǔ)言:C、C++、Object-C、Java、匯編分支多技術(shù)差異大嵌入式軟件體系結(jié)構(gòu)常見(jiàn)的嵌入式軟件可分為無(wú)操作系統(tǒng)和有操作系統(tǒng)的體系結(jié)構(gòu)。無(wú)操作系統(tǒng)的嵌入式軟件體系結(jié)構(gòu)

對(duì)于一些功能有限的系統(tǒng),可以使用一些簡(jiǎn)單的結(jié)構(gòu)來(lái)實(shí)現(xiàn)。越簡(jiǎn)單的系統(tǒng)往往響應(yīng)速度越快。輪詢(xún)結(jié)構(gòu)帶有中斷的輪詢(xún)結(jié)構(gòu)函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)有限狀態(tài)機(jī)巡回服務(wù)結(jié)構(gòu)前后臺(tái)結(jié)構(gòu)基于硬件抽象層的分層體系結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--輪詢(xún)結(jié)構(gòu)

輪詢(xún)結(jié)構(gòu)是最簡(jiǎn)單的結(jié)構(gòu),程序一次檢查每個(gè)I/O設(shè)備,并且為需要服務(wù)的設(shè)備提供服務(wù)。特點(diǎn):沒(méi)有中斷,沒(méi)有共享數(shù)據(jù),無(wú)須考慮延遲時(shí)間。例如在數(shù)字萬(wàn)用表中用于連續(xù)的測(cè)量并可改變顯示的內(nèi)容。缺點(diǎn):如果一個(gè)設(shè)備需要比微處理器在最壞情況下完成一個(gè)循環(huán)的時(shí)間更短的響應(yīng)時(shí)間,那么這個(gè)系統(tǒng)將無(wú)法工作。當(dāng)有冗余的處理時(shí),系統(tǒng)也會(huì)工作不好。這種結(jié)構(gòu)很脆弱,一旦增加一個(gè)額外的設(shè)備或者發(fā)生故障,就有可能讓系統(tǒng)崩潰。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--輪詢(xún)結(jié)構(gòu)

有n個(gè)設(shè)備,CPU按照一定周期定時(shí)查詢(xún)?cè)O(shè)備狀態(tài),根據(jù)設(shè)備狀態(tài)進(jìn)行處理。目前,在一些嵌入式周期性采集系統(tǒng)中,常常會(huì)使用這種程序結(jié)構(gòu),而操作系統(tǒng)中的時(shí)間片輪詢(xún)也是采用這一機(jī)制。

需要定時(shí)器以保證周期控制。

輪詢(xún)案例.docx嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--帶有中斷的輪詢(xún)結(jié)構(gòu)

在這種結(jié)構(gòu)中,中斷程序處理硬件特別緊急的需求,然后設(shè)置標(biāo)志,主循環(huán)輪詢(xún)這些標(biāo)志,然后根據(jù)需求進(jìn)行后續(xù)處理。優(yōu)點(diǎn):相對(duì)于單純的輪詢(xún)結(jié)構(gòu),可對(duì)優(yōu)先級(jí)進(jìn)行更多的控制。中斷程序可以獲得更多的響應(yīng),因?yàn)橛布闹袛嘈盘?hào)會(huì)使微處理器停止正在執(zhí)行的任何操作,而去執(zhí)行中斷程序。實(shí)質(zhì)上,中斷程序中的所有操作擁有比主程序中的任務(wù)代碼更高的優(yōu)先級(jí)。缺點(diǎn):所有的任務(wù)代碼以同樣的優(yōu)先級(jí)來(lái)執(zhí)行。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)

在這種結(jié)構(gòu)中,中斷程序在一個(gè)函數(shù)指針隊(duì)列中添加一個(gè)函數(shù)指針,以供程序調(diào)用,主程序僅需要從該隊(duì)列中讀取相應(yīng)的指針并且調(diào)用相關(guān)的函數(shù)。優(yōu)點(diǎn):該結(jié)構(gòu)沒(méi)有規(guī)定主程序必須按中斷程序發(fā)生的順序來(lái)調(diào)用函數(shù),主函數(shù)可以根據(jù)任何達(dá)到目的的優(yōu)先級(jí)方案來(lái)調(diào)用函數(shù),這樣人和需要更快響應(yīng)的任務(wù)代碼都可以被更早地執(zhí)行。缺點(diǎn):若某個(gè)較低優(yōu)先級(jí)的運(yùn)行時(shí)間較長(zhǎng),就有可能影響較高優(yōu)先級(jí)函數(shù)的響應(yīng)時(shí)間。無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--有限狀態(tài)機(jī)

(FSM,F(xiàn)initeStateMachine)

控制門(mén)狀態(tài)的有限狀態(tài)機(jī)示意圖:優(yōu)點(diǎn):對(duì)小系統(tǒng)便于編程和理解。以快速執(zhí)行。只是通過(guò)改變輸出功能來(lái)改變機(jī)器的響應(yīng)。缺點(diǎn):應(yīng)用領(lǐng)域有限。不能保證確定性。對(duì)大的應(yīng)用系統(tǒng),難以調(diào)試。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--巡回服務(wù)結(jié)構(gòu)

如果嵌入微處理器/微控制器的中斷源不多,增加中斷源需要硬件,成本高。那么一般采用軟件巡回服務(wù)系統(tǒng)。這種結(jié)構(gòu)一般是輪訓(xùn)結(jié)構(gòu)和函數(shù)隊(duì)列調(diào)度的結(jié)合。巡回服務(wù)系統(tǒng)的程序結(jié)構(gòu)如下:main(){ /*TODO系統(tǒng)初始化*/ while(1) { action_1(); /*巡回檢測(cè)事件1,并處理事件*/ action_2(); /*巡回檢測(cè)事件2,并處理事件*/ …

action_n(); /*巡回檢測(cè)事件2,并處理事件*/ }}嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--巡回服務(wù)結(jié)構(gòu)普通巡回服務(wù)系統(tǒng)的缺點(diǎn):處理器全速運(yùn)行,開(kāi)銷(xiāo)大-功耗高-電池供電系統(tǒng)。降低處理器的工作事件—基于定時(shí)器的巡回服務(wù)系統(tǒng)。嵌入式軟件體系結(jié)構(gòu)

一般,在巡回服務(wù)系統(tǒng)中處理器總是處于全速運(yùn)行狀態(tài),當(dāng)處理器開(kāi)銷(xiāo)較大、帶來(lái)高能耗的問(wèn)題時(shí),可采用基于定時(shí)器的巡回服務(wù)結(jié)構(gòu)。它是在處理器中加入一個(gè)定時(shí)器,根據(jù)外部事件發(fā)生的頻率,設(shè)置合適的定時(shí)器中斷的頻率。其軟件由主程序和定時(shí)器中斷服務(wù)程序構(gòu)成。無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--巡回服務(wù)結(jié)構(gòu)基于定時(shí)器的巡回服務(wù)系統(tǒng)的程序結(jié)構(gòu)如下://主程序//定時(shí)器中斷服務(wù)例程main(){Isr_timer(){/*定時(shí)器中斷服務(wù)程序/*TODO系統(tǒng)初始化*/ action_1();/*執(zhí)行事件1的處理*//*TODO設(shè)置定時(shí)器*/action_2();/*執(zhí)行事件2的處理*/while(1){…/*其他代碼*/action_n();/*執(zhí)行事件n的處理*/

enter_low_power();}}}嵌入式軟件體系結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--前后臺(tái)結(jié)構(gòu)

也稱(chēng)中斷(事件)驅(qū)動(dòng)結(jié)構(gòu),包括主程序和中斷服務(wù)程序兩部分。

主程序完成系統(tǒng)的初始化工作,例如硬件的初始化。主程序包括一個(gè)無(wú)限循環(huán),巡回地執(zhí)行多個(gè)事件,完成相應(yīng)的操作,這部分軟件成為后臺(tái)。

中斷服務(wù)程序處理異步事件,這一部分可以看做前臺(tái)。每當(dāng)外部事件發(fā)生時(shí),相應(yīng)的中斷服務(wù)程序激活,執(zhí)行相關(guān)處理。

后臺(tái)稱(chēng)為任務(wù)級(jí),前臺(tái)稱(chēng)為中斷級(jí)。這種結(jié)構(gòu)一般是輪詢(xún)結(jié)構(gòu)和帶有中斷輪詢(xún)結(jié)構(gòu)的結(jié)合或帶有中斷輪詢(xún)結(jié)構(gòu)與函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)的結(jié)合。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)--前后臺(tái)結(jié)構(gòu)前后臺(tái)結(jié)構(gòu)的特點(diǎn)實(shí)時(shí)性問(wèn)題:中斷服務(wù)程序提供的數(shù)據(jù)(實(shí)時(shí)性數(shù)據(jù))只有在后臺(tái)輪詢(xún)到的時(shí)候才能得到運(yùn)行。應(yīng)用于低功耗/事件驅(qū)動(dòng)的小系統(tǒng),如微波爐/電話機(jī)/玩具等。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)—基于硬件抽象層的分層體系結(jié)構(gòu)當(dāng)系統(tǒng)任務(wù)較多時(shí),常常采用分層體系結(jié)構(gòu)。當(dāng)系統(tǒng)的硬件設(shè)備較多時(shí),為了提高嵌入式軟件的可移植性和擴(kuò)展性,常常采用基于硬件抽象層的分層體系結(jié)構(gòu)。(1)無(wú)硬件抽象層的分層體系結(jié)構(gòu)(2)基于硬件抽象層的分層體系結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)—基于硬件抽象層的分層體系結(jié)構(gòu)硬件抽象層的特點(diǎn):硬件抽象曾具有與硬件密切相關(guān)性;硬件抽象層具有與操作系統(tǒng)無(wú)關(guān)性;接口定義的功能應(yīng)包含硬件或系統(tǒng)所需硬件支持的所有功能;接口定義簡(jiǎn)單明了,太多接口函數(shù)會(huì)增加軟件模擬的復(fù)雜性;具有可測(cè)性的接口設(shè)計(jì)有利于系統(tǒng)的軟硬件測(cè)試和集成。嵌入式軟件體系結(jié)構(gòu)無(wú)操作系統(tǒng)的體系結(jié)構(gòu)—基于硬件抽象層的分層體系結(jié)構(gòu)硬件抽象層設(shè)計(jì)方法和原則:軟件硬件并行、協(xié)同設(shè)計(jì);分析接口的數(shù)據(jù)傳輸特性(雙向/單向數(shù)據(jù)傳輸,字節(jié)型/數(shù)據(jù)幀型傳輸模式);分析接口配置屬性;定義接口所需的相關(guān)函數(shù)。嵌入式軟件體系結(jié)構(gòu)有操作系統(tǒng)的體系結(jié)構(gòu)—基于分時(shí)操作系統(tǒng)的軟件結(jié)構(gòu)

分時(shí)操作系統(tǒng)使用定時(shí)器和任務(wù)調(diào)度管理器來(lái)管理任務(wù)的執(zhí)行,如Linux操作系統(tǒng)。

其缺點(diǎn)是無(wú)法體現(xiàn)任務(wù)的重要性,即優(yōu)先級(jí)。這種系統(tǒng)無(wú)法保證事務(wù)處理的優(yōu)先級(jí),適合不需要實(shí)時(shí)處理的應(yīng)用,如PDA等應(yīng)用。任務(wù)1任務(wù)2任務(wù)3任務(wù)4任務(wù)調(diào)度器定時(shí)器操作系統(tǒng)嵌入式軟件體系結(jié)構(gòu)有操作系統(tǒng)的體系結(jié)構(gòu)—基于實(shí)時(shí)操作系統(tǒng)的軟件結(jié)構(gòu)

實(shí)時(shí)操作系統(tǒng)把系統(tǒng)處理的事件根據(jù)輕重緩急進(jìn)行分類(lèi),并賦予不同的優(yōu)先級(jí)。

非搶占式操作系統(tǒng)總是從最高優(yōu)先級(jí)的任務(wù)開(kāi)始執(zhí)行,直到放棄處理器。

非搶占式調(diào)度的特點(diǎn)如下:系統(tǒng)總是運(yùn)行最高優(yōu)先級(jí)的任務(wù);低優(yōu)先級(jí)的任務(wù)運(yùn)行時(shí),高優(yōu)先級(jí)的任務(wù)不能中斷低優(yōu)先級(jí)的任務(wù);系統(tǒng)簡(jiǎn)單,操作系統(tǒng)的開(kāi)銷(xiāo)小。嵌入式軟件體系結(jié)構(gòu)有操作系統(tǒng)的體系結(jié)構(gòu)—分布式嵌入式軟件系統(tǒng)結(jié)構(gòu)Peer-to-Peer結(jié)構(gòu)B/S結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu)有操作系統(tǒng)的體系結(jié)構(gòu)基于嵌入式操作系統(tǒng)的分層體系結(jié)構(gòu)基于操作系統(tǒng)抽象層的軟件分層體系結(jié)構(gòu)嵌入式軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)倉(cāng)庫(kù)體系結(jié)構(gòu)模型/視圖/控制器(MVC)客戶/服務(wù)器(C/S)對(duì)等體系結(jié)構(gòu)管理和過(guò)濾器體系結(jié)構(gòu)每個(gè)子系統(tǒng)只依賴(lài)于數(shù)據(jù)倉(cāng)庫(kù)中心數(shù)據(jù)結(jié)構(gòu),而數(shù)據(jù)倉(cāng)庫(kù)并不知其他子系統(tǒng)??刂破魍ㄟ^(guò)收集來(lái)自用戶的輸入并發(fā)消息給模型,模型保持中心數(shù)據(jù)結(jié)構(gòu),視圖顯示模型,每當(dāng)模型發(fā)生變化時(shí)得到通知(通過(guò)簽署/通知協(xié)議)。對(duì)等體可以向其他對(duì)等體請(qǐng)求服務(wù),也可以向它們提供服務(wù)。一個(gè)過(guò)濾器可以有多個(gè)輸入和輸出,一個(gè)管道將某個(gè)過(guò)濾器的輸出和另一個(gè)過(guò)濾器的輸入連接起來(lái)。嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)模式特點(diǎn):軟硬件協(xié)同開(kāi)發(fā)原因:嵌入式系統(tǒng)傳統(tǒng)的先硬件后軟件的系統(tǒng)設(shè)計(jì)模式需反復(fù)修改、反復(fù)試驗(yàn),整個(gè)設(shè)計(jì)過(guò)程很大程度上依賴(lài)于設(shè)計(jì)者的經(jīng)驗(yàn),設(shè)計(jì)周期長(zhǎng)、開(kāi)發(fā)成本高,在反復(fù)修改過(guò)程中,常常會(huì)在某方面背離原始設(shè)計(jì)要求。若軟硬件分開(kāi)設(shè)計(jì),在系統(tǒng)優(yōu)化時(shí),由于設(shè)計(jì)空間的限制,只能改善硬件與軟件各自的性能,不可能對(duì)系統(tǒng)做出較好的綜合優(yōu)化,得到的最終設(shè)計(jì)結(jié)果很難充分利用軟硬件資源,難以適應(yīng)現(xiàn)代復(fù)雜的、大規(guī)模的系統(tǒng)設(shè)計(jì)任務(wù)。嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程系統(tǒng)定義系統(tǒng)總體設(shè)計(jì)硬件設(shè)計(jì)開(kāi)發(fā)軟件設(shè)計(jì)開(kāi)發(fā)軟硬件集成功能性能測(cè)試符合要求產(chǎn)品嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程系統(tǒng)總體設(shè)計(jì)系統(tǒng)總體框架軟硬件劃分處理器選定操作系統(tǒng)選定開(kāi)發(fā)環(huán)境選定嵌入式軟件開(kāi)發(fā)軟件概要設(shè)計(jì)軟件詳細(xì)設(shè)計(jì)軟件實(shí)現(xiàn)軟件測(cè)試嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程軟件設(shè)計(jì)開(kāi)發(fā)硬件概要設(shè)計(jì)硬件詳細(xì)設(shè)計(jì)硬件制作硬件測(cè)試硬件設(shè)計(jì)開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程處理器及硬件開(kāi)發(fā)平臺(tái)的選擇依據(jù):應(yīng)用的類(lèi)型及I/O接口;主頻及功耗;對(duì)不同類(lèi)型存儲(chǔ)器的支持;封裝;產(chǎn)品生命力、廠家實(shí)力、技術(shù)支持和第三方軟件支持;硬件開(kāi)發(fā)平臺(tái)的選擇。嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程操作系統(tǒng)的選擇依據(jù):選擇嵌入式OS的必要性;自建、購(gòu)買(mǎi)或使用開(kāi)源軟件;對(duì)嵌入式OS的功能、性能要求;與硬件平臺(tái)和開(kāi)發(fā)工具的關(guān)系;行業(yè)標(biāo)準(zhǔn);技術(shù)支持;版稅或服務(wù)費(fèi)。嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程操作系統(tǒng)與硬件平臺(tái)的關(guān)系:操作系統(tǒng)應(yīng)支持選定的硬件平臺(tái);若不支持,需考慮移植工作:不同類(lèi)型嵌入式微處理器之間的移植:

任務(wù)上下文切換、時(shí)鐘、中斷等;同類(lèi)型微處理器但不同類(lèi)型硬件板之間的移植:

硬件接口及設(shè)備驅(qū)動(dòng)程序。嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程操作系統(tǒng)與開(kāi)發(fā)工具的關(guān)系:

工具是否能為基于特定操作系統(tǒng)的應(yīng)用開(kāi)發(fā)提供最大支持:運(yùn)行庫(kù)和OS相結(jié)合;提供應(yīng)用工程創(chuàng)建和管理功能,構(gòu)件基于特定操作系統(tǒng)的應(yīng)用框架;對(duì)操作系統(tǒng)的剪裁和配置;提供高級(jí)調(diào)試功能;提供配套的應(yīng)用邏輯分析工具、覆蓋測(cè)試工具等。嵌入式軟件開(kāi)發(fā)嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程開(kāi)發(fā)環(huán)境和工具的選定:對(duì)硬件平臺(tái)的支持;支持所使用的編程語(yǔ)言:C/C++,JAVA,匯編等;與嵌入式OS的關(guān)系。嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)工具

嵌入式軟件開(kāi)發(fā)工具的集成度和可用性將直接關(guān)系到嵌入式系統(tǒng)的開(kāi)發(fā)效率。

根據(jù)不同的階段,嵌入式軟件開(kāi)發(fā)工具可分為:

①需求分析工具;

②軟件設(shè)計(jì)工具;

③編碼、調(diào)試工具;

④測(cè)試工具;

⑤配置管理工具、維護(hù)工具等。嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)工具周期TAUObjectGeodeRationalRoseRealTimeRhapsodyTornadopRISM+SpectraWinCEPlatformBuilderCodeWarriorXrayDebuggerLogiscopeCodeTESTLambdaTOOL需求分析軟件設(shè)計(jì)軟件實(shí)現(xiàn)軟件測(cè)試軟件發(fā)行嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)工具嵌入式軟件開(kāi)發(fā)分類(lèi):簡(jiǎn)單的板級(jí)測(cè)試軟件,主要是輔助硬件調(diào)試;基本的驅(qū)動(dòng)程序;特定嵌入式操作系統(tǒng)的驅(qū)動(dòng)程序(板級(jí)支持包BSP);嵌入式系統(tǒng)軟件,如嵌入式OS等;應(yīng)用軟件。嵌入式軟件開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)工具根據(jù)上述嵌入式軟件開(kāi)發(fā)分類(lèi)來(lái)看,嵌入式軟件開(kāi)發(fā)工具又可以分為:與嵌入式OS相關(guān)的開(kāi)發(fā)工具,用于開(kāi)發(fā):基于嵌入式OS的應(yīng)用;部分驅(qū)動(dòng)程序等。與嵌入式OS無(wú)關(guān)的開(kāi)發(fā)工具,用于開(kāi)發(fā):基本的驅(qū)動(dòng)程序;輔助硬件調(diào)試程序;系統(tǒng)軟件等。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境交叉開(kāi)發(fā)環(huán)境是指用于嵌入式軟件開(kāi)發(fā)的所有工具軟件的集合,一般包括:文本編輯器交叉編譯器交叉調(diào)試器仿真器下載器等。交叉開(kāi)發(fā)環(huán)境由宿主機(jī)和目標(biāo)機(jī)組成,宿主機(jī)和目標(biāo)機(jī)之間在物理連接的基礎(chǔ)上建立起邏輯連接。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境宿主機(jī)硬件宿主機(jī)OS運(yùn)行庫(kù)宿主機(jī)開(kāi)發(fā)環(huán)境--編輯--編譯--連接--調(diào)試目標(biāo)機(jī)硬件調(diào)試代理目標(biāo)機(jī)應(yīng)用系統(tǒng)--應(yīng)用軟件--應(yīng)用中間件--目標(biāo)機(jī)OS下載交叉開(kāi)發(fā)環(huán)境開(kāi)發(fā)平臺(tái)(Host)運(yùn)行平臺(tái)(Target)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境宿主機(jī)(Host):用于開(kāi)發(fā)嵌入式系統(tǒng)的計(jì)算機(jī),一般為PC機(jī)(或工作站),具備豐富的軟硬件資源,為嵌入式軟件的開(kāi)發(fā)提供全過(guò)程的支持。目標(biāo)機(jī)(Target):即所開(kāi)發(fā)的嵌入式系統(tǒng),是嵌入式軟件的運(yùn)行環(huán)境,其應(yīng)用軟件是為特定應(yīng)用定制的。

在開(kāi)發(fā)過(guò)程中,目標(biāo)機(jī)端需接收和執(zhí)行宿主機(jī)發(fā)出的各種命令,如設(shè)置斷點(diǎn)、讀內(nèi)存、寫(xiě)內(nèi)存等,并將結(jié)果返回給宿主機(jī),配合宿主機(jī)各方面的工作。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境物理連接:宿主機(jī)與目標(biāo)機(jī)通過(guò)物理線路連接在一起,連接方式主要有三種:串口、并口;以太網(wǎng)口;OCD(OnChipDebug)方式,如:JTAG,BDM等,主要用于調(diào)試。邏輯連接:宿主機(jī)與目標(biāo)機(jī)之間按某種通信協(xié)議建立起來(lái)的通信連接,目前已經(jīng)逐步形成了一些通信協(xié)議標(biāo)準(zhǔn)。兩者關(guān)系:物理連接是邏輯連接的基礎(chǔ)。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程軟件生成:主要是在宿主機(jī)上進(jìn)行,利用各種工具完成對(duì)應(yīng)用程序的編輯、交叉編輯和鏈接工作,生成可調(diào)式或固化的目標(biāo)程序。交叉調(diào)試:通過(guò)交叉調(diào)試器完成軟件的調(diào)試工作。調(diào)試完成后還需要進(jìn)行必要的測(cè)試工作。固化運(yùn)行:先用一定的工具將應(yīng)用程序固化到目標(biāo)機(jī)上,然后啟動(dòng)目標(biāo)機(jī),在沒(méi)有任何工具干預(yù)的情況下應(yīng)用程序能自動(dòng)啟動(dòng)運(yùn)行。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程—軟件生成三個(gè)子過(guò)程:源代碼程序的編寫(xiě);編譯成各個(gè)目標(biāo)模塊;鏈接成可供下載調(diào)試或固化的目標(biāo)程序。交叉編譯:將在宿主機(jī)上編寫(xiě)的高級(jí)語(yǔ)言程序編譯成可在目標(biāo)機(jī)運(yùn)行的代碼。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程—交叉調(diào)試交叉調(diào)試器:是指調(diào)試程序和被調(diào)試程序運(yùn)行在不同機(jī)器上的調(diào)試器。調(diào)試器通過(guò)某種方式能控制目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行方式,通過(guò)調(diào)試器能查看和修改目標(biāo)機(jī)上的內(nèi)存、寄存器以及被調(diào)試程序中的變量等。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程—交叉調(diào)試交叉調(diào)試非交叉調(diào)試調(diào)試器和被調(diào)試程序運(yùn)行在不同的計(jì)算機(jī)上調(diào)試器和被調(diào)試程序運(yùn)行在同一臺(tái)計(jì)算機(jī)上可獨(dú)立運(yùn)行,無(wú)需操作系統(tǒng)支持需要操作系統(tǒng)支持被調(diào)試程序的裝載由調(diào)試器完成被調(diào)試程序的裝載由專(zhuān)門(mén)的Loader程序完成需要通過(guò)外部通信的方式來(lái)控制被調(diào)試程序不需要通過(guò)外部通信的方式來(lái)控制被調(diào)試程序可以直接調(diào)試不同指令集的程序只能直接調(diào)試相同指令集的程序嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程—交叉調(diào)試調(diào)試方式:CrashandBurnRomMonitorRomEmulatorInCircuitEmulator(ICE)OnChipDebugging(OCD)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開(kāi)發(fā)過(guò)程—交叉調(diào)試調(diào)試方式:CrashandBurnRomMonitorRomEmulatorInCircuitEmulator(ICE)OnChipDebugging(OCD)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境CrashandBurn—最早的嵌入式應(yīng)用軟件調(diào)試方式嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境ROMMonitor:是指被固化且運(yùn)行在目標(biāo)機(jī)上的一段程序,負(fù)責(zé)監(jiān)控目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行,與宿主機(jī)端的調(diào)試器一起完成對(duì)應(yīng)用程序的調(diào)試。調(diào)試器與ROMMonitor之間的通信遵循遠(yuǎn)程調(diào)試協(xié)議。PC機(jī)等硬件Windows或其他桌面OS調(diào)試器嵌入式硬件監(jiān)控程序ROMMonitor被調(diào)試程序宿主機(jī)目標(biāo)機(jī)邏輯連接物理連接嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境ROMMonitor工作原理在目標(biāo)機(jī)上電或復(fù)位后首先執(zhí)行ROMMonitor,它會(huì)對(duì)目標(biāo)機(jī)進(jìn)行一些必要的初始化:初始化所要求的外圍設(shè)備,如最基本的串口和用于內(nèi)存刷新的系統(tǒng)計(jì)時(shí)器芯片;初始化用于下載鏡像的內(nèi)存系統(tǒng);初始化中斷控制器和安裝中斷處理程序;初始化自己的程序空間;等待宿主機(jī)端的命令。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境ROMMonitor工作原理ROMMonitor能配合調(diào)試器完成:程序鏡像下載;對(duì)目標(biāo)機(jī)系統(tǒng)內(nèi)存的讀寫(xiě);設(shè)置和清除不同類(lèi)型的斷點(diǎn);單步執(zhí)行指令;復(fù)位系統(tǒng)等調(diào)試功能。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境ROMMonitor調(diào)試過(guò)程啟動(dòng)目標(biāo)機(jī),監(jiān)控器Monitor掌握對(duì)目標(biāo)機(jī)的控制,等待和調(diào)試器建立連接;啟動(dòng)調(diào)試器,并和監(jiān)控器建立起通信連接;使用調(diào)試器將應(yīng)用程序下載到目標(biāo)機(jī)上的RAM空間中;使用調(diào)試器進(jìn)行調(diào)試,發(fā)出各種調(diào)試命令,監(jiān)控器解釋并執(zhí)行這些命令,通過(guò)目標(biāo)機(jī)上的各種異常來(lái)獲取對(duì)目標(biāo)機(jī)的控制,將命令執(zhí)行結(jié)果回傳給調(diào)試器;如果程序有問(wèn)題,在調(diào)試器的幫助下定位錯(cuò)誤;修改之后再重新編譯鏈接并下載程序,開(kāi)始新的調(diào)試,如此反復(fù)直至程序正確運(yùn)行為止。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境ROMMonitor的優(yōu)點(diǎn):提高調(diào)試程序的效率,縮短開(kāi)發(fā)周期,降低成本;簡(jiǎn)單、方便;可擴(kuò)展性強(qiáng),可支持許多高級(jí)調(diào)試功能;成本低廉,不需專(zhuān)門(mén)的調(diào)試硬件支持;幾乎所有的交叉調(diào)試器都支持這種方式。ROMMonitor的缺點(diǎn):需要用CrashandBurn方法開(kāi)發(fā);當(dāng)ROMMonitor占用CPU時(shí),應(yīng)用程序不響應(yīng)外部的中斷,因此不便調(diào)試有時(shí)間特性的程序;某些調(diào)試功能依賴(lài)于CPU硬件的支持(如硬件斷點(diǎn)功能);ROMMonitor要占用目標(biāo)機(jī)一定數(shù)量的資源,如CPU、RAM、ROM和通信設(shè)備等資源;調(diào)試環(huán)境不同于實(shí)際目標(biāo)環(huán)境。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境仿真開(kāi)發(fā)方式

嵌入式應(yīng)用的開(kāi)發(fā)經(jīng)常會(huì)遇到缺少目標(biāo)機(jī)環(huán)境、缺乏目標(biāo)機(jī)芯片等資源問(wèn)題,而開(kāi)發(fā)過(guò)程又不可能停止,因此自然就提出了根據(jù)不同的應(yīng)用需求,利用仿真器件、仿真環(huán)境進(jìn)行開(kāi)發(fā)的方法。仿真開(kāi)發(fā)方式包括:硬件仿真開(kāi)發(fā):ROMEmulator、ICE、OCD軟件仿真開(kāi)發(fā)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式--ROMEmulatorROMEmulator是一種用于替代目標(biāo)機(jī)上的ROM芯片的設(shè)備,即ROM仿真器。利用這種設(shè)備,目標(biāo)機(jī)可以沒(méi)有ROM芯片,但目標(biāo)機(jī)的CPU可以讀取ROMEmulator設(shè)備上ROM芯片的內(nèi)容:ROMEmulator設(shè)備上的ROM芯片的地址可以實(shí)時(shí)地映射到目標(biāo)機(jī)的ROM地址空間,從而仿真(Emulation)目標(biāo)機(jī)的ROM。

ROMEmulator的調(diào)試方式是一種不完全的調(diào)試方式:ROMEmulator設(shè)備只是為目標(biāo)機(jī)提供ROM芯片和在Target和Host間建立一條高速的通信通道,因此它經(jīng)常和前面兩種調(diào)試方式結(jié)合起來(lái)形成一種完備的調(diào)試方式。

ROMEmulator的典型應(yīng)用就是和ROMMonitor的調(diào)試方式相結(jié)合。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式--ROMEmulator優(yōu)點(diǎn):目標(biāo)機(jī)可以沒(méi)有ROM芯片、可以使用ROMEmulator提供的ROM空間且不需要用別的工具來(lái)寫(xiě)ROM。缺點(diǎn):目標(biāo)機(jī)必須能支持外部ROM存儲(chǔ)空間,而且由于其通常要和ROMMonitor配合使用,因此它擁有ROMMonitor的所有缺點(diǎn)。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—ICE(In-CircuitEmulator)ICE是一種用于替代目標(biāo)機(jī)上CPU的設(shè)備,即在線仿真器。

它比一般的CPU有更多的引出線,能夠?qū)?nèi)部的信號(hào)輸出到被控制的目標(biāo)機(jī)。ICE上的Memory也可以被映射到用戶的程序空間,這樣即使目標(biāo)機(jī)不存在的情形下也可以進(jìn)行代碼的調(diào)試。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—ICE(In-CircuitEmulator)

連接ICE和目標(biāo)機(jī)時(shí),一般是將目標(biāo)機(jī)的CPU取下,而將ICE的CPU引出線接到目標(biāo)機(jī)的CPU插槽。用ICE進(jìn)行調(diào)試時(shí),在Host端運(yùn)行的調(diào)試器通過(guò)ICE來(lái)控制目標(biāo)機(jī)上運(yùn)行的程序。目標(biāo)平臺(tái)ICE宿主機(jī)開(kāi)發(fā)平臺(tái)ICE調(diào)試結(jié)構(gòu)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—ICE(In-CircuitEmulator)

功能特點(diǎn):同時(shí)支持軟斷點(diǎn)和硬件斷點(diǎn)的設(shè)置;設(shè)置各種復(fù)雜的斷點(diǎn)和觸發(fā)器;實(shí)時(shí)跟蹤目標(biāo)程序的運(yùn)行,并可實(shí)現(xiàn)選擇性的跟蹤;支持“TimeStamp”;允許用戶設(shè)置“Timer”;

提供“ShadowRAM”,能在不中斷被調(diào)試程序的運(yùn)行下查看內(nèi)存和變量即非干擾調(diào)試查詢(xún)。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—ICE(In-CircuitEmulator)

適用于:調(diào)試實(shí)時(shí)的應(yīng)用系統(tǒng);調(diào)試設(shè)備驅(qū)動(dòng)程序;對(duì)硬件進(jìn)行功能和性能的測(cè)試;實(shí)時(shí)性能分析。缺點(diǎn):價(jià)格太昂貴,不利于團(tuán)隊(duì)開(kāi)發(fā);所仿CPU有限。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—OCD(On-ChipDebugging)

OCD是CPU芯片提供的一種調(diào)試功能(片上調(diào)試),可以認(rèn)為是一種廉價(jià)的ICE工:OCD的價(jià)格只有ICE的20%,但提供了ICE80%的功能。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—OCD(On-ChipDebugging)OCD調(diào)試結(jié)構(gòu)嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—OCD(On-ChipDebugging)調(diào)試方法:將CPU的模式分為一般模式和調(diào)試模式;一般模式下,CPU從內(nèi)存讀取指令執(zhí)行;調(diào)試模式下,CPU首先從調(diào)試端口讀取指令,通過(guò)調(diào)試端口可以控制CPU進(jìn)入和退出調(diào)試模式;Host端的調(diào)試器可以直接向目標(biāo)機(jī)發(fā)送要執(zhí)行的指令,讀寫(xiě)目標(biāo)機(jī)的內(nèi)存和各種寄存器,控制目標(biāo)程序的運(yùn)行以及完成各種復(fù)雜的調(diào)試功能。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—OCD(On-ChipDebugging)優(yōu)點(diǎn):不占用目標(biāo)機(jī)的資源;調(diào)試環(huán)境和最終的程序運(yùn)行環(huán)境基本一致;支持軟硬斷點(diǎn)、Trace功能;精確計(jì)量程序的執(zhí)行時(shí)間;提供時(shí)序分析功能。缺點(diǎn):調(diào)試的實(shí)時(shí)性不如ICE;不支持非干擾調(diào)試查詢(xún);CPU必需具有OCD功能。嵌入式軟件開(kāi)發(fā)嵌入式軟件的交叉開(kāi)發(fā)環(huán)境硬件仿真開(kāi)發(fā)方式—OCD(On-ChipDebugging)實(shí)現(xiàn)方式BDM(BackgroundDebuggingMode)JTAG(JointTestAc

溫馨提示

  • 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)論