版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)及應(yīng)用,第九章嵌入式系統(tǒng)軟件的開發(fā),主要內(nèi)容,嵌入式軟件開發(fā)工具嵌入式系統(tǒng)開發(fā)模式實(shí)時(shí)軟件分析設(shè)計(jì)方法,第一節(jié)嵌入式軟件開發(fā)工具,嵌入式軟件開發(fā)工具的分類嵌入式軟件的交叉開發(fā)環(huán)境嵌入式軟件實(shí)現(xiàn)階段的開發(fā)過程嵌入式軟件開發(fā)工具的發(fā)展趨勢(shì),,嵌入式軟件開發(fā)工具,“工欲善其事,必先利其器” 嵌入式軟件開發(fā)工具的集成度和可用性將直接關(guān)系到嵌入式系統(tǒng)的開發(fā)效率。,嵌入式軟件開發(fā)工具的分類,,嵌入式軟件開發(fā)階段,
2、需求分析(Requirement Analysis),設(shè)計(jì)(Software Design),編碼(Coding),測試(Test),發(fā)布、維護(hù)(Release),嵌入式軟件開發(fā)工具的分類,根據(jù)不同的階段,嵌入式軟件開發(fā)工具可以分為:需求分析工具(Requirement Analysis Tools)軟件設(shè)計(jì)工具(Software Design Tools)編碼、調(diào)試工具(Coding Tools)測試工具(Testing To
3、ols)配置管理工具、維護(hù)工具等,主要嵌入式軟件開發(fā)工具產(chǎn)品,嵌入式軟件開發(fā)工具的分類,嵌入式軟件的開發(fā)可以分為以下幾種 :編寫簡單的板級(jí)測試軟件,主要是輔助硬件的調(diào)試 開發(fā)基本的驅(qū)動(dòng)程序 開發(fā)特定嵌入式操作系統(tǒng)的驅(qū)動(dòng)程序(板級(jí)支持包) 開發(fā)嵌入式系統(tǒng)軟件,如:嵌入式操作系統(tǒng)等 開發(fā)應(yīng)用軟件,嵌入式軟件開發(fā)工具的分類,從以上嵌入式軟件開發(fā)分類來看,嵌入式軟件開發(fā)工具可以分為:與嵌入式OS相關(guān)的開發(fā)工具,用于開發(fā):基于嵌
4、入式OS的應(yīng)用部分驅(qū)動(dòng)程序等與嵌入式OS無關(guān)的開發(fā)工具,用于開發(fā):基本的驅(qū)動(dòng)程序輔助硬件調(diào)試程序系統(tǒng)軟件等,嵌入式軟件的交叉開發(fā)環(huán)境,交叉開發(fā)環(huán)境是指用于嵌入式軟件開發(fā)的所有工具軟件的集合,一般包括:文本編輯器交叉編譯器交叉調(diào)試器仿真器下載器等交叉開發(fā)環(huán)境由宿主機(jī)和目標(biāo)機(jī)組成,宿主機(jī)與目標(biāo)機(jī)之間在物理連接的基礎(chǔ)上建立起邏輯連接。,交叉開發(fā)環(huán)境,,,目標(biāo)機(jī)硬件,,目標(biāo)機(jī)應(yīng)用系統(tǒng),— 應(yīng)用軟件,— 應(yīng)用中間件,— 目標(biāo)
5、機(jī),OS,,宿主機(jī)硬件,,宿主機(jī),OS,,調(diào),試,代,理,,運(yùn),行,庫,,宿主機(jī)開發(fā)環(huán)境,— 編輯,— 編譯,— 連接,— 調(diào)試,,運(yùn)行平臺(tái),Target,開發(fā)平臺(tái),Host,DownLoad,嵌入式軟件的交叉開發(fā)環(huán)境,宿主機(jī)(Host) :是用于開發(fā)嵌入式系統(tǒng)的計(jì)算機(jī)。一般為PC機(jī)(或者工作站),具備豐富的軟硬件資源,為嵌入式軟件的開發(fā)提供全過程支持。目標(biāo)機(jī)(Target):即所開發(fā)的嵌入式系統(tǒng),是嵌入式軟件的運(yùn)行環(huán)境,其硬件軟件是
6、為特定應(yīng)用定制的。在開發(fā)過程中,目標(biāo)機(jī)端需接收和執(zhí)行宿主機(jī)發(fā)出的各種命令如設(shè)置斷點(diǎn)、讀內(nèi)存、寫內(nèi)存等,將結(jié)果返回給宿主機(jī),配合宿主機(jī)各方面的工作。,嵌入式軟件的交叉開發(fā)環(huán)境,物理連接和邏輯連接 物理連接是指宿主機(jī)與目標(biāo)機(jī)通過物理線路連接在一起,連接方式主要有三種:串口以太口OCD(On Chip Debug)方式,如JTAG、BDM等物理連接是邏輯連接的基礎(chǔ)。邏輯連接指宿主機(jī)與目標(biāo)機(jī)間按某種通信協(xié)議建立起來的通信連接,目前
7、逐步形成了一些通信協(xié)議的標(biāo)準(zhǔn)。,嵌入式軟件實(shí)現(xiàn)階段的開發(fā)過程,設(shè)計(jì)完成后,嵌入式軟件的開發(fā)進(jìn)入實(shí)現(xiàn)階段,可分為三個(gè)步驟:生成、調(diào)試和固化運(yùn)行。軟件的生成主要是在宿主機(jī)上進(jìn)行,利用各種工具完成對(duì)應(yīng)用程序的編輯、交叉編譯和鏈接工作,生成可供調(diào)試或固化的目標(biāo)程序。調(diào)試是通過交叉調(diào)試器完成軟件的調(diào)試工作。調(diào)試完成后還需進(jìn)行必要的測試工作。固化運(yùn)行是先用一定的工具將應(yīng)用程序固化到目標(biāo)機(jī)上,然后啟動(dòng)目標(biāo)機(jī),在沒有任何工具干預(yù)的情況下應(yīng)用程序能
8、自動(dòng)地啟動(dòng)運(yùn)行。,嵌入式軟件生成階段,三個(gè)過程源代碼程序的編寫編譯成各個(gè)目標(biāo)模塊鏈接成可供下載調(diào)試或固化的目標(biāo)程序,編輯器,交叉編譯器,交叉鏈接器,源程序,目標(biāo)模塊,可供調(diào)試/固化,庫文件,,,,,,,交叉編譯,把在宿主機(jī)上編寫的高級(jí)語言程序編譯成可以運(yùn)行在目標(biāo)機(jī)上的代碼,即在宿主機(jī)上能夠編譯生成另一種CPU(嵌入式微處理器)上的二進(jìn)制程序。,嵌入式軟件的調(diào)試,交叉調(diào)試器是指調(diào)試程序和被調(diào)試程序運(yùn)行在不同機(jī)器上的調(diào)試器調(diào)試器通
9、過某種方式能控制目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行方式通過調(diào)試器能查看和修改目標(biāo)機(jī)上的內(nèi)存、寄存器以及被調(diào)試程序中的變量等,嵌入式軟件的調(diào)試,交叉調(diào)試方式 Crash and Burn Rom Monitor Rom Emulator In Circuit Emulator On Chip DebuggingSimulator方式(非交叉),Crash and Burn,最早的嵌入式應(yīng)用軟件調(diào)試方法。,在宿主機(jī)上編寫代碼,反復(fù)檢查
10、代碼,直到編譯通過,生成可執(zhí)行程序,將程序固化(Burn)到目標(biāo)機(jī)的非易失性存儲(chǔ)器(E2PROM、FLASH等)中,在宿主機(jī)上反復(fù)檢查碼,查找問題根源,改寫代碼,啟動(dòng)目標(biāo)機(jī)運(yùn)行,觀察程序是否正常工作,,,,,,N,Y,,,結(jié)束,,,,ROM Monitor,ROM Monitor是被固化且運(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)試器與ROM Monitor之間的
11、通信遵循遠(yuǎn)程調(diào)試協(xié)議。,ROM Monitor調(diào)試方式,調(diào)試器Windows或其它桌面操作系統(tǒng)PC機(jī)等硬件,嵌入式硬件,,,監(jiān)控程序(ROM Monitor),被調(diào)試程序,,,宿主機(jī),目標(biāo)機(jī),邏輯上的連接,物理上的連接,ROM Monitor,在目標(biāo)機(jī)上電或復(fù)位后首先執(zhí)行的就是ROM Monitor,它對(duì)目標(biāo)機(jī)進(jìn)行一些必要的初始化初始化要求的外圍設(shè)備,如最基本的串口和用于內(nèi)存刷新的系統(tǒng)計(jì)時(shí)器芯片;初始化用于下載映像的內(nèi)存
12、系統(tǒng);初始化中斷控制器和安裝中斷處理程序。初始化自己的程序空間等待宿主機(jī)端的命令,ROM Monitor,ROM Monitor能配合調(diào)試器完成:程序映像下載對(duì)目標(biāo)機(jī)系統(tǒng)內(nèi)存的讀寫對(duì)寄存器的讀寫設(shè)置和清除不同類型的斷點(diǎn)單步執(zhí)行指令復(fù)位系統(tǒng)…等調(diào)試功能,ROM Monitor,調(diào)試過程(1)啟動(dòng)目標(biāo)機(jī),監(jiān)控器掌握對(duì)目標(biāo)機(jī)的控制,等待和調(diào)試器建立連接;(2)啟動(dòng)調(diào)試器,并和監(jiān)控器建立起通信連接;(3)使用調(diào)試器將應(yīng)
13、用程序下載到目標(biāo)機(jī)上的RAM空間中;(4)使用調(diào)試器進(jìn)行調(diào)試,發(fā)出各種調(diào)試命令,監(jiān)控器解釋并執(zhí)行這些命令,通過目標(biāo)機(jī)上的各種異常來獲取對(duì)目標(biāo)機(jī)的控制,將命令執(zhí)行結(jié)果回傳給調(diào)試器; (5)如果程序有問題,在調(diào)試器的幫助下定位錯(cuò)誤;修改之后再重新編譯鏈接并下載程序,開始新的調(diào)試,如此反復(fù)直至程序正確運(yùn)行為止。,ROM Monitor,優(yōu)點(diǎn)提高調(diào)試程序的效率 ,縮短開發(fā)周期,降低成本簡單、方便可擴(kuò)展性強(qiáng),可支持許多高級(jí)調(diào)試功能成本
14、低廉,不需專門的調(diào)試硬件支持幾乎所有的交叉調(diào)試器都支持這種方式,ROM Monitor,缺點(diǎn)Debug Monitor需要用Crash and Burn方法開發(fā)。當(dāng)ROM Monitor占用CPU時(shí),應(yīng)用程序不響應(yīng)外部的中斷,因此不便調(diào)試有時(shí)間特性的程序。某些調(diào)試功能依賴于CPU硬件的支持(如硬件斷點(diǎn)功能)ROM Monitor要占用目標(biāo)機(jī)一定數(shù)量的資源,如CPU、RAM、ROM和通信設(shè)備等資源。調(diào)試環(huán)境不同于實(shí)際目標(biāo)環(huán)境。
15、,仿真開發(fā)方式,嵌入式應(yīng)用的開發(fā)經(jīng)常會(huì)遭遇缺少目標(biāo)機(jī)環(huán)境、缺乏目標(biāo)機(jī)芯片等資源的問題,而開發(fā)過程又不可能停止,因此自然就提出了根據(jù)不同的應(yīng)用需要,利用仿真器件、仿真環(huán)境進(jìn)行開發(fā)的方法。,硬件仿真開發(fā)ROM EmulatorICEOCD軟件仿真開發(fā),ROM Emulator,ROM Emulator是一種用于替代目標(biāo)機(jī)上的ROM芯片的設(shè)備,即ROM仿真器。利用這種設(shè)備,目標(biāo)機(jī)可以沒有ROM芯片,但目標(biāo)機(jī)的CPU可以讀取ROM Em
16、ulator設(shè)備上ROM芯片的內(nèi)容:ROM Emulator設(shè)備上的ROM芯片的地址可以實(shí)時(shí)地映射到目標(biāo)機(jī)的ROM地址空間,從而仿真(Emulation)目標(biāo)機(jī)的ROM。,ROM Emulator,ROM Emulator的調(diào)試方式是一種不完全的調(diào)試方式:ROM Emulator設(shè)備只是為目標(biāo)機(jī)提供ROM芯片和在Target和Host間建立一條高速的通信通道,因此它經(jīng)常和前面兩種調(diào)試方式結(jié)合起來形成一種完備的調(diào)試方式。ROM Emula
17、tor的典型應(yīng)用就是和ROM Monitor的調(diào)試方式相結(jié)合。,ROM Emulator,優(yōu)點(diǎn)目標(biāo)機(jī)可以沒有ROM芯片、可以使用ROM Emulator提供的ROM空間且不需要用別的工具來寫ROM。缺點(diǎn)目標(biāo)機(jī)必須能支持外部ROM存儲(chǔ)空間,而且由于其通常要和ROM Monitor配合使用,因此它擁有ROM Monitor的所有缺點(diǎn)。,ICE,ICE(In-Circuit Emulator)是一種用于替代目標(biāo)機(jī)上CPU的設(shè)備,即在
18、線仿真器。它比一般的CPU有更多的引出線,能夠?qū)?nèi)部的信號(hào)輸出到被控制的目標(biāo)機(jī)。ICE上的Memory也可以被映射到用戶的程序空間,這樣即使目標(biāo)機(jī)不存在的情形下也可以進(jìn)行代碼的調(diào)試。,ICE調(diào)試結(jié)構(gòu),連接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)試器通過ICE來控制目標(biāo)機(jī)上運(yùn)行的程序。,ICE,ICE,功能特點(diǎn)同時(shí)支持軟斷點(diǎn)和硬件斷點(diǎn)的設(shè)
19、置設(shè)置各種復(fù)雜的斷點(diǎn)和觸發(fā)器實(shí)時(shí)跟蹤目標(biāo)程序的運(yùn)行,并可實(shí)現(xiàn)選擇性的跟蹤支持“Time Stamp” 允許用戶設(shè)置“Timer” 提供“Shadow RAM”,能在不中斷被調(diào)試程序的運(yùn)行下查看內(nèi)存和變量即非干擾調(diào)試查詢,ICE,適用于:調(diào)試實(shí)時(shí)的應(yīng)用系統(tǒng)調(diào)試設(shè)備驅(qū)動(dòng)程序?qū)τ布M(jìn)行功能和性能的測試實(shí)時(shí)性能分析缺點(diǎn):價(jià)格太昂貴,不利于團(tuán)隊(duì)開發(fā)所仿CPU有限,OCD,OCD(On Chip Debugging)是CPU
20、芯片提供的一種調(diào)試功能(片上調(diào)試),可以認(rèn)為是一種廉價(jià)的ICE功能:OCD的價(jià)格只有ICE的20%,但提供了ICE 80%的功能。,OCD調(diào)試結(jié)構(gòu),OCD,調(diào)試方法將CPU的模式分為一般模式和調(diào)試模式一般模式下, CPU從內(nèi)存讀取指令執(zhí)行調(diào)試模式下,CPU首先從調(diào)試端口讀取指令,通過調(diào)試端口可以控制CPU進(jìn)入和退出調(diào)試模式;Host端的調(diào)試器可以直接向目標(biāo)機(jī)發(fā)送要執(zhí)行的指令,讀寫目標(biāo)機(jī)的內(nèi)存和各種寄存器,控制目標(biāo)程序的運(yùn)行以及完成
21、各種復(fù)雜的調(diào)試功能。,OCD,優(yōu)點(diǎn)不占用目標(biāo)機(jī)的資源調(diào)試環(huán)境和最終的程序運(yùn)行環(huán)境基本一致支持軟硬斷點(diǎn)、Trace功能精確計(jì)量程序的執(zhí)行時(shí)間提供時(shí)序分析功能,OCD,缺點(diǎn)調(diào)試的實(shí)時(shí)性不如ICE不支持非干擾調(diào)試查詢CPU必需具有OCD功能,OCD,存在各種實(shí)現(xiàn)BDM(Background Debugging Mode)JTAG(Joint Test Access Group)(主流方式)OnCE(On Chip Emu
22、lation),各種OCD仿真器實(shí)例,邊界掃描技術(shù)(JTAG),JTAG——標(biāo)準(zhǔn)測試訪問接口與邊界掃描結(jié)構(gòu)(Standard Test Access Port and Boundary Scan Architecture),已被IEEE1149.1標(biāo)準(zhǔn)所采納,是面向用戶的測試接口。該接口一般由4個(gè)引腳組成:測試數(shù)據(jù)輸入(TDI)測試數(shù)據(jù)輸出(TDO)測試時(shí)鐘(TCK)測試模式選擇引腳(TMS)異步測試復(fù)位引腳(TRST,可選
23、),邊界掃描技術(shù)(JTAG),優(yōu)點(diǎn)可以通過邊界掃描操作測試整個(gè)板的電氣連接,特別為表面貼元件提供方便 各個(gè)引腳信號(hào)的采樣,并可強(qiáng)制引腳輸出用以測試外圍芯片 可以軟件下載、執(zhí)行、調(diào)試和控制,為復(fù)雜的實(shí)時(shí)跟蹤調(diào)試提供路徑 可以進(jìn)行多內(nèi)核和多處理器的板級(jí)和芯片級(jí)的調(diào)試,通過串接 ,為芯片制造商提供芯片生產(chǎn)、測試的途徑 不占用系統(tǒng)資源,能夠調(diào)試沒有外部總線的芯片,代價(jià)非常小,邊界掃描技術(shù)(JTAG),缺點(diǎn)通過串口依次傳遞數(shù)據(jù),速度比
24、較慢 只能進(jìn)行軟件斷點(diǎn)級(jí)別的調(diào)試 不能完成實(shí)時(shí)跟蹤和多種事件觸發(fā)等復(fù)雜調(diào)試功能 幾種增強(qiáng)版本 ARM芯片的實(shí)時(shí)調(diào)試方案(E-TRACE) 背景調(diào)試模式BDM 片上仿真OnCE,Nexus標(biāo)準(zhǔn),提出一個(gè)在JTAG之上的嵌入式處理器調(diào)試的統(tǒng)一標(biāo)準(zhǔn) 將調(diào)試開發(fā)分成四級(jí) 第一級(jí)使用JTAG的簡單靜態(tài)調(diào)試;第二級(jí)支持編程跟蹤和實(shí)時(shí)多任務(wù)的跟蹤,并允許用戶用I/O引腳作為多路復(fù)用輔助調(diào)試口;第三級(jí)包括處理器運(yùn)行時(shí)的數(shù)據(jù)寫入跟蹤和
25、存儲(chǔ)器的讀寫跟蹤;第四級(jí)增加了存儲(chǔ)替換并觸發(fā)復(fù)雜的硬件斷點(diǎn)。,Nexus標(biāo)準(zhǔn),通過Nexus 標(biāo)準(zhǔn)可以解決以下問題 調(diào)試內(nèi)部總線沒有引出的處理器,如含有片內(nèi)存儲(chǔ)器的芯片 傳統(tǒng)在線仿真器無法實(shí)現(xiàn)的高速調(diào)試 深度流水線和有片上Cache的芯片,能夠探測具體哪條指令被取指和最終執(zhí)行 可以穩(wěn)定地進(jìn)行多內(nèi)核處理器的調(diào)試,Simulator,交叉開發(fā)方式存在如下缺點(diǎn):硬件支持 必須有目標(biāo)機(jī)或評(píng)估板易使用性 普通編程人員不熟悉廉價(jià)性
26、 成本高可移植性、可擴(kuò)展性 不高團(tuán)隊(duì)開發(fā) 較難開發(fā)周期 較長,Simulator,一種軟件仿真器,在宿主機(jī)上創(chuàng)建一個(gè)虛擬的目標(biāo)機(jī)環(huán)境,再將應(yīng)用系統(tǒng)下載到這個(gè)虛擬目標(biāo)機(jī)上運(yùn)行/調(diào)試。軟件仿真的對(duì)象仿真處理器仿真外設(shè)仿真環(huán)境軟件仿真的級(jí)別指令級(jí)仿真開發(fā)API級(jí)仿真開發(fā),應(yīng)用仿真開發(fā)環(huán)境示意圖,結(jié)合了仿真的軟件開發(fā)過程,Simulator,優(yōu)點(diǎn)最大好處就是可以不用真正的目標(biāo)機(jī),可以在目標(biāo)機(jī)環(huán)境并不存在的條件下開發(fā)目
27、標(biāo)機(jī)上的應(yīng)用系統(tǒng),并且在調(diào)試時(shí)可以利用Host資源提供更詳細(xì)的錯(cuò)誤診斷信息。,Simulator,缺點(diǎn)和實(shí)際的運(yùn)行環(huán)境差別很大設(shè)備模擬的局限性較大實(shí)時(shí)特性較差對(duì)Host的資源要求較高適用范圍對(duì)時(shí)間特性沒有嚴(yán)格要求、沒有特殊外設(shè)、只需要驗(yàn)證邏輯正確的應(yīng)用程序。,嵌入式軟件的測試,測試工具:能夠用來輔助測試的工具,主要用來支持測試人員的工作,本身不能直接用來進(jìn)行測試。測試工具一般都是通用工具,測試人員應(yīng)該根據(jù)實(shí)際情況對(duì)它們進(jìn)行
28、適當(dāng)?shù)恼{(diào)整。嵌入式軟件測試中經(jīng)常用到的測試工具有:內(nèi)存分析工具性能分析工具覆蓋分析工具缺陷跟蹤工具等,嵌入式軟件的測試,內(nèi)存分析工具 嵌入式系統(tǒng)的內(nèi)存資源通常是受限的,內(nèi)存分析工具可以用來處理在進(jìn)行動(dòng)態(tài)內(nèi)存分配時(shí)產(chǎn)生的缺陷。當(dāng)動(dòng)態(tài)分配的內(nèi)存被錯(cuò)誤地引用時(shí),產(chǎn)生的錯(cuò)誤通常難以再現(xiàn),出現(xiàn)的失效難以追蹤,使用內(nèi)存分析工具可以很好地檢測出這類缺陷。目前常用的內(nèi)存分析工具有軟件和硬件兩種:基于軟件的內(nèi)存分析工具可能會(huì)對(duì)代碼的執(zhí)行性
29、能帶來很大影響,從而影響系統(tǒng)的實(shí)時(shí)性;基于硬件的內(nèi)存分析工具對(duì)系統(tǒng)性能影響小,但價(jià)格昂貴,并且只能在特定的環(huán)境中使用。,嵌入式軟件的測試,性能分析工具 嵌入式系統(tǒng)的性能通常是一個(gè)非常關(guān)鍵的因素,開發(fā)人員一般需要對(duì)系統(tǒng)的某些關(guān)鍵代碼進(jìn)行優(yōu)化來改進(jìn)性能。性能分析工具可以提供有關(guān)數(shù)據(jù),幫助確定哪些任務(wù)消耗了過多的執(zhí)行時(shí)間,從而可以決定如何優(yōu)化軟件,以獲得更好的時(shí)間性能。引導(dǎo)開發(fā)人員發(fā)現(xiàn)在系統(tǒng)調(diào)用中存在的錯(cuò)誤以及程序結(jié)構(gòu)上的缺陷。,嵌
30、入式軟件的測試,覆蓋分析工具 在進(jìn)行白盒測試時(shí),可以使用代碼覆蓋分析工具追蹤哪些代碼被執(zhí)行過分析過程一般通過插樁來完成,插樁可以是在測試環(huán)境中嵌入硬件,也可以是在可執(zhí)行代碼中加入軟件,或者是兩者的結(jié)合。開發(fā)人員通過對(duì)分析結(jié)果進(jìn)行總結(jié),可以確定哪些代碼被執(zhí)行過,哪些代碼被遺漏了。目前常用的覆蓋分析工具一般都提供有關(guān)功能覆蓋、分支覆蓋、條件覆蓋等信息。,覆蓋分析工具實(shí)例,測試工具實(shí)例:邏輯分析儀,工作機(jī)理:在不打斷被測程序運(yùn)行流程的
31、基礎(chǔ)上,對(duì)程序運(yùn)行中的相關(guān)信息進(jìn)行采集和分析,然后通過真實(shí)再現(xiàn)程序運(yùn)行的邏輯流程和分析程序運(yùn)行數(shù)據(jù),幫助用戶優(yōu)化系統(tǒng)設(shè)計(jì)和解決出現(xiàn)的問題。與調(diào)試工具的對(duì)比調(diào)試器:照相機(jī)邏輯分析儀:攝像機(jī),測試工具實(shí)例:邏輯分析儀,主要功能:真實(shí)再現(xiàn)程序運(yùn)行流程發(fā)現(xiàn)系統(tǒng)死鎖及軟件造成的死機(jī)發(fā)現(xiàn)系統(tǒng)內(nèi)存泄漏指導(dǎo)對(duì)任務(wù)的合理劃分指導(dǎo)關(guān)鍵路徑設(shè)計(jì)與驗(yàn)證指導(dǎo)合理分配任務(wù)堆棧CPU使用率統(tǒng)計(jì)指導(dǎo)合理設(shè)計(jì)中斷服務(wù)程序,測試工具實(shí)例:邏輯分析儀,
32、嵌入式應(yīng)用軟件運(yùn)行的邏輯流程,測試工具實(shí)例:邏輯分析儀,系統(tǒng)堆棧使用率分析,嵌入式軟件的固化運(yùn)行,當(dāng)調(diào)試完成之后,程序代碼需要被完全燒入到目標(biāo)板的非易失性存儲(chǔ)器(如ROM或閃存)中,并且在真實(shí)的硬件環(huán)境上運(yùn)行,這個(gè)過程叫做固化。調(diào)試環(huán)境與固化環(huán)境的區(qū)別:代碼定位不同初始化部分不同,嵌入式軟件的固化運(yùn)行,嵌入式軟件的固化運(yùn)行,Boot模塊:當(dāng)應(yīng)用程序在真實(shí)的目標(biāo)環(huán)境下運(yùn)行時(shí)將首先執(zhí)行該程序,它至少由系統(tǒng)加電時(shí)執(zhí)行的代碼組成。 Bo
33、ot模塊的主要功能:初始化CPU環(huán)境,使目標(biāo)機(jī)硬件到已知的狀態(tài)初始化芯片的引腳初始化系統(tǒng)外部控制寄存器初始化基本輸入輸出設(shè)備初始化MMU,包括片選控制寄存器等執(zhí)行數(shù)據(jù)拷貝,嵌入式軟件開發(fā)工具發(fā)展趨勢(shì),向著開放的、集成化的方向發(fā)展具有系統(tǒng)設(shè)計(jì)、可視化建模、仿真和驗(yàn)證功能 自動(dòng)生成代碼和文檔 具有更高的靈活性,第二節(jié)嵌入式系統(tǒng)開發(fā)模式,概述處理器及硬件開發(fā)平臺(tái)的選定操作系統(tǒng)選定開發(fā)環(huán)境選定,,嵌入式系統(tǒng)開發(fā)模式概述
34、,最大特點(diǎn):軟硬件綜合開發(fā)。,原因:,嵌入式產(chǎn)品是軟硬件的結(jié)合體,軟件針對(duì)硬件開發(fā)、固化,不能進(jìn)行任意修改,嵌入式系統(tǒng)開發(fā)過程,,,,,,,,,,Yes,,,No,,,,,,硬件設(shè)計(jì)制作,,,功能模塊圖設(shè)計(jì),,,邏輯電路圖設(shè)計(jì),,,軟件設(shè)計(jì)實(shí)現(xiàn),軟硬件協(xié)同開發(fā),通常的嵌入式系統(tǒng)開發(fā)軟/硬件協(xié)同開發(fā),處理器及硬件開發(fā)平臺(tái)的選定,選擇依據(jù):應(yīng)用的類型及I/O接口主頻及功耗對(duì)不同類型存儲(chǔ)器的支持封裝產(chǎn)品生命力和廠家實(shí)力、技術(shù)支
35、持及第三方軟件的支持硬件開發(fā)平臺(tái)的選擇,操作系統(tǒng)選定,選擇依據(jù):選擇嵌入式OS的必要性自建、購買或使用開源軟件對(duì)嵌入式操作系統(tǒng)的功能、性能要求與硬件平臺(tái)和開發(fā)工具的關(guān)系行業(yè)標(biāo)準(zhǔn)技術(shù)支持版稅或服務(wù)費(fèi),操作系統(tǒng)與硬件平臺(tái)的關(guān)系,操作系統(tǒng)應(yīng)支持選定的硬件平臺(tái)如果不支持,需考慮移植工作不同類型嵌入式微處理器之間的移植:任務(wù)上下文切換、時(shí)鐘、中斷等同類型微處理器但不同類型硬件板之間的移植:硬件接口及設(shè)備驅(qū)動(dòng)程序,操作系統(tǒng)與開
36、發(fā)工具的關(guān)系,工具是否能為基于特定操作系統(tǒng)的應(yīng)用開發(fā)提供最大支持:運(yùn)行庫與OS相結(jié)合提供應(yīng)用工程創(chuàng)建和管理功能,構(gòu)建基于特定操作系統(tǒng)的應(yīng)用框架對(duì)操作系統(tǒng)的剪裁與配置提供高級(jí)調(diào)試功能提供配套的應(yīng)用邏輯分析工具、覆蓋測試工具等,開發(fā)環(huán)境及工具選定,對(duì)硬件平臺(tái)的支持所使用的編程語言C/C++匯編語言JAVA……與嵌入式操作系統(tǒng)的關(guān)系,第三節(jié)實(shí)時(shí)軟件分析設(shè)計(jì)方法,DARTS分析設(shè)計(jì)方法,,DARTS分析設(shè)計(jì)方法,嵌入式
37、實(shí)時(shí)軟件系統(tǒng)的生存周期需求分析與說明系統(tǒng)設(shè)計(jì)-DARTS設(shè)計(jì)方法數(shù)據(jù)流分析劃分任務(wù)定義任務(wù)接口任務(wù)設(shè)計(jì)模塊構(gòu)筑任務(wù)與系統(tǒng)集成,嵌入式實(shí)時(shí)軟件系統(tǒng)的生命周期,需求分析與詳細(xì)說明系統(tǒng)設(shè)計(jì)任務(wù)分解, 定義任務(wù)間接口關(guān)系任務(wù)設(shè)計(jì)按模塊方式設(shè)計(jì)每個(gè)任務(wù),定義模塊間接口模塊構(gòu)筑完成每個(gè)模塊的詳細(xì)設(shè)計(jì)、編碼和單元測試任務(wù)與系統(tǒng)集成系統(tǒng)測試,實(shí) 例 說 明——機(jī)器人控制器系統(tǒng),控制面板,控制設(shè)備由內(nèi)部控制器和外部控制面板
38、組成控制器控制六個(gè)轉(zhuǎn)軸,并與數(shù)字I/O傳感器交互作用。轉(zhuǎn)軸和I/O由程序控制該程序由控制面板操作啟動(dòng)執(zhí)行,按下“上電”按鈕,系統(tǒng)進(jìn)入了上電狀態(tài)。上電成功后,系統(tǒng)進(jìn)入了手動(dòng)狀態(tài)。此時(shí),操作者可以通過程序選擇開關(guān)選擇程序按下“運(yùn)行”按鈕,則選定的程序開始運(yùn)行,系統(tǒng)轉(zhuǎn)為運(yùn)行態(tài)。程序運(yùn)行中如果按下“停止”鍵,程序被掛起。之后,操作者可以按下“運(yùn)行”鍵,使程序恢復(fù)執(zhí)行,也可按下“結(jié)束”鍵,結(jié)束程序。按下“結(jié)束”鍵后,系統(tǒng)進(jìn)入終止態(tài)。
39、當(dāng)程序最終終止執(zhí)行時(shí),系統(tǒng)返回手動(dòng)狀態(tài)。,控制執(zhí)行過程,需求分析與說明,,上電,,上電 成功,,斷電,,啟動(dòng),,程序選擇,,程序 終止,,結(jié)束,,,啟動(dòng),停止,狀態(tài)變遷圖,系 統(tǒng) 設(shè) 計(jì),系統(tǒng)設(shè)計(jì)說明該系統(tǒng)如何被分解成多個(gè)任務(wù),如何定義任務(wù)間的關(guān)系任務(wù)劃分方法 —— DARTS設(shè)計(jì)方法,DARTS設(shè)計(jì)方法,數(shù)據(jù)流分析:每個(gè)數(shù)據(jù)流圖都包含:變換圈, 表示系統(tǒng)完成的功能箭頭,表示變換間的數(shù)據(jù)流動(dòng)數(shù)據(jù)存儲(chǔ)區(qū),表示數(shù)據(jù)的存儲(chǔ)場
40、所數(shù)據(jù)字典,定義了數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)區(qū)所包含的數(shù)據(jù)項(xiàng),機(jī)器人控制器數(shù)據(jù)流圖,程序,,解釋程序各語句,,按下按鈕,,面板輸入,,,有效的面板輸入,,運(yùn)行開始 結(jié)束,,動(dòng)作命令,,動(dòng)作確認(rèn),,I/O命令,,傳感器值,,輸入,,傳感器輸入,,傳感器輸出,,輸出,,面板輸出,,顯示燈,,運(yùn)行 停止重啟動(dòng),,軸塊,,軸確認(rèn),,軸輸入,,軸輸出,,動(dòng)作塊,劃分任務(wù)就是識(shí)別出并行性的功能需要考慮的是系統(tǒng)內(nèi)功能的異步性。分析數(shù)
41、據(jù)流圖中的變換,確定哪些變換可以并行,哪些變換本質(zhì)上是順序的。一個(gè)任務(wù)可對(duì)應(yīng)一個(gè)變換,也可對(duì)應(yīng)多個(gè)變換。,DARTS設(shè)計(jì)方法,劃分任務(wù)原則I/O 依賴性 功能的時(shí)間關(guān)鍵性計(jì)算需求功能內(nèi)聚時(shí)間內(nèi)聚周期執(zhí)行,DARTS設(shè)計(jì)方法,I/O 依賴性,Device,I/O Task,App.Task,,,如果變換依賴于I/O,速度受限I/O,可獨(dú)立成任務(wù)在系統(tǒng)中創(chuàng)建與I/O設(shè)備數(shù)目相當(dāng)?shù)腎/O任務(wù)I/O任務(wù)只實(shí)現(xiàn)與設(shè)備相關(guān)的代碼
42、I/O任務(wù)的執(zhí)行只受限于I/O設(shè)備的速度,而不是處理器在任務(wù)中分離設(shè)備相關(guān)性,功能的時(shí)間關(guān)鍵性,將有時(shí)間關(guān)鍵性(deadline)的功能分離出來, 組成獨(dú)立運(yùn)行的任務(wù)賦予這些任務(wù)高的優(yōu)先級(jí),以滿足對(duì)時(shí)間的需要,計(jì)算量大的功能占用CPU的時(shí)間多,把計(jì)算功能捆綁成任務(wù),以消耗CPU的剩余時(shí)間賦予計(jì)算任務(wù)較低優(yōu)先級(jí), 能被高優(yōu)先級(jí)的任務(wù)搶占,保持高優(yōu)先級(jí)的任務(wù)是輕量級(jí)的多個(gè)計(jì)算任務(wù)可安排成同優(yōu)先級(jí),按時(shí)間片循環(huán)輪轉(zhuǎn),計(jì)算需求,功能內(nèi)聚
43、,將緊密相關(guān)的功能變換組成一個(gè)任務(wù),減少通信的開銷把每個(gè)變換都作為同一任務(wù)中一個(gè)個(gè)獨(dú)立的模塊,不僅保證了模塊級(jí)的功能內(nèi)聚,也保證了任務(wù)級(jí)的功能內(nèi)聚,時(shí)間內(nèi)聚,將在同一時(shí)間內(nèi)完成的各功能(即使這些功能是不相關(guān)的)形成一個(gè)任務(wù)功能組的各功能是由相同的外部事件驅(qū)動(dòng)的(如時(shí)鐘等),這樣每次任務(wù)接收到一個(gè)事件,它們都可以同時(shí)執(zhí)行由于減少了任務(wù)調(diào)度及切換的次數(shù),減少了系統(tǒng)的開銷,周期執(zhí)行,一個(gè)需要周期執(zhí)行的變換可以作為一個(gè)獨(dú)立的任務(wù),按一定的
44、時(shí)間間隔被激活將在相同周期內(nèi)執(zhí)行的各功能組成一個(gè)任務(wù)頻率高的任務(wù)賦予高優(yōu)先級(jí),I/O,時(shí)間內(nèi)聚,功能內(nèi)聚,時(shí)間內(nèi)聚,,定義任務(wù)接口任務(wù)間通信模塊TCM(Task Communication Module)任務(wù)同步模塊TSM(Task Synchronization Module),DARTS設(shè)計(jì)方法,消息通信模塊信息隱藏模塊,任務(wù)間通信模塊,信息隱藏模塊,,任務(wù)同步模塊,,任務(wù)設(shè)計(jì),任務(wù)體系結(jié)構(gòu):詳細(xì)定義任務(wù)包含的子模塊
45、和模塊間的關(guān)系任務(wù)執(zhí)行流程:盡可能詳細(xì)地描述任務(wù)的處理過程任務(wù)內(nèi)數(shù)據(jù)結(jié)構(gòu)任務(wù)內(nèi)模塊間接口,詳細(xì)說明系統(tǒng)中各任務(wù)的設(shè)計(jì)考慮和執(zhí)行流程,以利于程序員編制程序。,任務(wù)設(shè)計(jì),,任務(wù)設(shè)計(jì),,模塊構(gòu)筑,系統(tǒng)和任務(wù)設(shè)計(jì)完成后,進(jìn)行每個(gè)模塊的詳細(xì)設(shè)計(jì),直到每個(gè)具體的函數(shù)在單元測試前不必編完模塊全部程序,可以分階段編碼和測試模塊的詳細(xì)設(shè)計(jì)應(yīng)一氣呵成,避免系統(tǒng)以非結(jié)構(gòu)化方式形成,函數(shù)設(shè)計(jì),函數(shù)描述 給出對(duì)該函數(shù)的簡要描述,說明設(shè)計(jì)目的、意義以及特
46、點(diǎn)功能 說明該函數(shù)應(yīng)具有的功能,可采用IPO圖(輸入一處理一輸出圖)形式性能 說明對(duì)該函數(shù)的性能要求,包括精度、靈活性和時(shí)間特性等輸入 定義每個(gè)輸入項(xiàng)的特性,包括名稱、標(biāo)識(shí)、數(shù)據(jù)類型和格式、取值范圍、輸入方式、數(shù)據(jù)來源、保密方式等輸出 定義每個(gè)輸入項(xiàng)的特性,特征同輸入,算法 詳細(xì)說明本函數(shù)所選用的算法,具體的計(jì)算公式和計(jì)算步驟流程 用流程圖輔以必要的說明來表示本函數(shù)的邏輯流程接口 說明本函數(shù)與其他函數(shù)的調(diào)用關(guān)系,包括說明參數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子科技大學(xué) 嵌入式軟件工程中心
- 嵌入式系統(tǒng)作業(yè)答案電子科技大學(xué)
- 電子科技大學(xué)
- 電子科技大學(xué)《軟件工程》21春期末考核a卷
- 電子科技大學(xué)策劃
- 杭州電子科技大學(xué)
- 桂林電子科技大學(xué)
- 西安電子科技大學(xué)
- —西安電子科技大學(xué)—
- 電子科技大學(xué)2008年
- 數(shù)據(jù)挖掘-西安電子科技大學(xué)軟件學(xué)院
- 《電子科技大學(xué)獎(jiǎng)勵(lì)辦法》
- 博士西安電子科技大學(xué)
- 電子科技大學(xué)中山學(xué)院
- 電子科技大學(xué)2019年考研860 軟件工程學(xué)科基礎(chǔ)綜合考試大綱
- 2016年電子科技大學(xué)860 軟件工程學(xué)科基礎(chǔ)綜合考研真題
- 施工方案(電子科技大學(xué))
- 電機(jī)與拖動(dòng)(電子科技大學(xué))
- 電子科技大學(xué)國際科技合作
- 電子科技大學(xué)軟件技術(shù)基礎(chǔ)在線作業(yè)
評(píng)論
0/150
提交評(píng)論