版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
嵌入式系統(tǒng)與軟件軟件學(xué)院桑楠sn@實驗安排(暫定)14周-17周每周四下午14:30-17:30主樓A2-402肖xiaoxuanbai@163.com第九章嵌入式軟件開發(fā)環(huán)境核心內(nèi)容交叉開發(fā)技術(shù)
仿真開發(fā)技術(shù)開發(fā)環(huán)境提供的主要工具GNU的嵌入式開發(fā)環(huán)境Windriver的集成開發(fā)環(huán)境仿真開發(fā)工具ARMulator9.1
概述需要協(xié)調(diào)管理特殊的硬件資源軟件具有可配置/裁剪特性需要交叉編譯環(huán)境需要交叉調(diào)試環(huán)境需要交叉測試環(huán)境需要軟件固化工具嵌入式軟件開發(fā)的特點:9.2
交叉開發(fā)技術(shù)宿主機:開發(fā)系統(tǒng)目標機:運行平臺宿主機與目標機的差別硬件的差別:處理器不同軟件環(huán)境的差異:宿主機上有通用操作系統(tǒng)等系統(tǒng)軟件提供軟件開發(fā)支持,而目標機上除了調(diào)試代理沒有其他用于嵌入式軟件開發(fā)的軟件資源一、常用的交叉開發(fā)方法
1.CrashandBurn方式在宿主機上編寫代碼;在宿主機編譯應(yīng)用程序,生成可執(zhí)行程序;固化到目標機的非易失存儲器中;啟動運行,若正常則轉(zhuǎn)到⑦;不正確則根據(jù)目標板上的信號顯示估計錯誤位置,改寫代碼,糾正錯誤;返回②重復(fù)操作;固化完成。2.ROMMonitor方式
優(yōu)點:實時控制目標機的內(nèi)存單元、寄存器、設(shè)置斷點等調(diào)試采用目標機本身的串口、網(wǎng)口、USB口進行ROMMonitor的缺點:目標機內(nèi)存使用與運行時不一致目標機CPU運行與正常運行時不一致無法調(diào)試通訊占用端口的相關(guān)代碼若目標機CPU不支持硬件斷點,則無法調(diào)試設(shè)置數(shù)據(jù)斷點無法調(diào)試系統(tǒng)啟動初始化過程3.ROMEmulator方式
ROMEmulator是一種用于替代目標機上ROM芯片的設(shè)備,插接到目標機的ROM插座上,取代ROM內(nèi)存。4.ICE方式
ICE是一種用于替代目標機上CPU的設(shè)備,可執(zhí)行目標機CPU的指令,能將內(nèi)部的信號輸出到被控制的目標機,ICE上的內(nèi)存也可以被映射到用戶的程序空間。ICE方式
ICE方式的特殊調(diào)試功能
支持軟件斷點和硬件斷點的設(shè)置設(shè)置復(fù)雜的斷點和觸發(fā)器實時跟蹤目標程序的運行,并可實現(xiàn)選擇性的跟蹤支持“TimeStamp”允許用戶設(shè)置“Timer”提供“ShadowRAM”,支持非干擾調(diào)試查詢。5.OCD方式
采用兩級CPU模式:正常運行模式調(diào)試模式OCD方式的優(yōu)點
性價比高不占用目標機硬件資源調(diào)試環(huán)境和運行環(huán)境一致能調(diào)試底層系統(tǒng)軟件OCD方式的缺點
調(diào)試的實時性不如ICE強不支持非干擾調(diào)試查詢
CPU必須有OCD功能
OCD標準不統(tǒng)一BDM方式
二、交叉開發(fā)過程
軟件生成軟件調(diào)試軟件固化應(yīng)用軟件生成階段
應(yīng)用軟件調(diào)試階段
應(yīng)用軟件固化階段
三、交叉開發(fā)環(huán)境
9.3
仿真開發(fā)技術(shù)利用計算機仿真技術(shù)模擬嵌入式硬件系統(tǒng)的真實運行,使軟件開發(fā)和系統(tǒng)集成在虛擬平臺上進行。仿真開發(fā)結(jié)構(gòu)示意
一、仿真開發(fā)分類
純軟件仿真開發(fā)是利用宿主機上的資源模擬目標機實際硬件電路的運行,構(gòu)建應(yīng)用軟件運行所需的虛擬硬件環(huán)境,提供嵌入式軟件開發(fā)和調(diào)試的真正“軟”平臺。純軟件仿真開發(fā)分類
應(yīng)用級仿真編程接口級仿真硬件級仿真編程接口級仿真
硬件級仿真開發(fā)
二、仿真開發(fā)過程
三、仿真開發(fā)環(huán)境
四、仿真開發(fā)環(huán)境的特點
不需要提供實際的目標硬件環(huán)境;編譯調(diào)試都在宿主機上進行;可以最大限度地保證軟硬件同時開發(fā)。9.4
開發(fā)環(huán)境提供的主要工具項目管理器項目配置工具源碼編輯工具
CRTL(CRun-TimeLibrary)
RTOS開發(fā)支持包交叉編譯工具交叉調(diào)試工具交叉測試性能分析工具等一、項目管理
項目管理器一般采用通用的工作區(qū)、項目管理方式,這能較好的支持在不同硬件平臺上的軟件移植。二、配置剪裁
編譯參數(shù)配置工具實時操作系統(tǒng)裁剪工具內(nèi)存配置工具三、源碼編輯
標準的文本編輯功能支持語法色彩簡單的語法檢查功能源程序函數(shù)索引、定位功能顯示調(diào)試信息文本保存的多中備份機制四、目標代碼編譯生成
嵌入式開發(fā)環(huán)境一般提供工具make,它利用編譯器、匯編器、鏈接器和庫管理器等工具,根據(jù)Makefile文件,將源代碼轉(zhuǎn)換成目標代碼。1.目標代碼生成
設(shè)置目標代碼生成選項;
C源碼預(yù)處理;
C源碼編譯成匯編代碼;匯編語言程序轉(zhuǎn)換為可重定位目標代碼;可重定位的目標模塊鏈接成目標程序;文件格式轉(zhuǎn)換。2.目標代碼優(yōu)化
合并已有常量;公共子表達式刪除;控制流優(yōu)化;寄存器變量使用優(yōu)化;循環(huán)優(yōu)化;冗余指令刪除;窺孔優(yōu)化。3.編譯提示信息
錯誤信息:致命錯誤、一般錯誤和警告。
過程信息
狀態(tài)信息4.庫的使用
在開發(fā)大中型軟件時,常把一些編譯好的模塊統(tǒng)一放到一個庫中。5.常用文件后綴
.c或.cc或.cxx
或.cpp.h或.hpp.s或.asm.S.o或.obj.a或.lib.elf.omf.hex.eep.cof.s19或.s2或.s3.lst.map五、交叉調(diào)試
硬件:連接線、仿真頭、轉(zhuǎn)換板等連接硬件。
軟件:宿主機端調(diào)試工具和目標機端ROMMonitor交叉調(diào)試定義
調(diào)試器能夠通過某種方式遠程控制目標機上被調(diào)試程序的運行模式,并且具備查看和修改目標機上的內(nèi)存、寄存器以及被調(diào)試程序中的變量等功能。交叉調(diào)試與非交叉調(diào)試比較交叉調(diào)試本地調(diào)試Debugger和Debuggee運行在不同的計算機Debugger和Debuggee運行在同一臺計算機運行時不一定需要操作系統(tǒng)的調(diào)試支持運行時需要操作系統(tǒng)的調(diào)試支持Debuggee裝載由Debugger或Loader完成Debuggee的裝載是由專門的Loader程序完成需要通過外部通信的方式來控制Debuggee不需要外部的通信方式來控制Debuggee可以直接調(diào)試不同指令集的程序只能直接調(diào)試相同指令集的程序1.交叉調(diào)試支持的功能內(nèi)存寄存器斷點程序執(zhí)行變量顯示模式
OS-aware交叉調(diào)試的過程框架2.任務(wù)級調(diào)試調(diào)試對象是一個用戶任務(wù)(集),用戶可以自定義調(diào)試范圍。任務(wù)級調(diào)試3.系統(tǒng)級調(diào)試即內(nèi)核級調(diào)試,調(diào)試對象是目標機上除調(diào)試代理外的所有程序,包括RTOS本身。系統(tǒng)級調(diào)試六、測試工具
嵌入式系統(tǒng)采用交叉測試,即嵌入式軟件測試必須由宿主機和目標機協(xié)作完成。1.仿真測試
仿真測試環(huán)境可分為兩類:一類要求用戶改寫I/O部分代碼。無須改動其源程序。純軟件仿真測試結(jié)構(gòu)框架
2.交叉測試
目標機的測試分為兩類:仿真信號測試實物測試仿真信號測試的結(jié)構(gòu)
3.實時性測試
靜態(tài)時間分析。不執(zhí)行被測程序,通過分析估計執(zhí)行時間。
動態(tài)實時檢測。實際執(zhí)行程序測試程序的時間特性。包括:在線仿真器、模擬器、插樁技術(shù)。
七、版本管理工具
版本管理是用戶對項目文件版本進行控制的工具軟件。包括:版本庫和臨時工作區(qū)。嵌入式軟件版本管理工具的功能結(jié)構(gòu)
9.5GNU的嵌入式開發(fā)環(huán)境
C編譯器gccmake工具GNUmake
開發(fā)調(diào)試工具gdb一、gcc編譯器
gcc前端支持多種高級語言,后端支持多種平臺,它是一個交叉編譯器,可以把源代碼編譯成在其他硬件平臺上運行的可執(zhí)行代碼。1.編譯過程預(yù)處理編譯匯編鏈接預(yù)處理執(zhí)行源代碼的預(yù)處理,處理完后生成一個以“.i”為后綴名的臨時文件。編譯將預(yù)處理后生成的源代碼編譯為后綴名為“.s”的匯編文件。匯編
gcc調(diào)用as匯編程序,將匯編語言代碼轉(zhuǎn)換為以“.o”為后綴名的中間代碼。鏈接它調(diào)用ld鏈接程序,把所有目標代碼以及靜態(tài)庫,定位鏈接生成最后的可執(zhí)行程序或其他格式的目標文件。test.c的gcc編譯過程2.交叉gcc的生成
gcc的缺省配置是本地使用。當(dāng)需要交叉gcc時,可利用Linux環(huán)境下提供的一些交叉gcc生成工具來重新配置。交叉gcc的生成過程重新生成binutils。生成LlinuxHeaders
生成目標機的Glibc
生成交叉GCC二、項目編譯管理工具make
自動查找已修改的源程序文件,并對它們進行編譯;對未改動的源程序文件,如果已經(jīng)存在中間代碼文件(“.o”文件)則不再重新編譯;將所有的中間代碼文件和庫鏈接成可執(zhí)行文件或特定格式的目標文件。1.Make命令一般語法規(guī)則是:
make[-fmakefile文件名][其他選項][目標名]說明:
-f:makefile的文件名字。
目標名:所要更新目標的名稱。兩個常用選項。:
-n:只顯示生成指定目標的各命令,并不實際執(zhí)行,可以用來檢查make文件中的錯誤。
-p:顯示并檢查make文件中的所有宏定義和所有內(nèi)部規(guī)則。2.目標
make文件中描述了目標依賴于哪些源程序文件,按照什么樣的規(guī)則生成。目標的狀態(tài)取決于所依賴的源程序文件狀態(tài)。語法規(guī)則為:3.宏宏的基本定義語法為:
marco_name=string而已定義宏的引用語法規(guī)則為:$(marco_name)或者
${marco_name}Make內(nèi)部預(yù)定義的宏
$@,表示當(dāng)前目標名。等價于語句:Make內(nèi)部預(yù)定義的宏
$*,表示去掉后綴的當(dāng)前目標名。
$<,表示目標所依賴文件名。4.符號
%,對應(yīng)于具體的文件名
@,表示命令本身不在屏幕上顯示。
:=,變量定義,它不是“=”符號。符號例如:結(jié)果是:5.函數(shù)語法格式如下:
$(funcnamearg1,…,argn)例如:
SOURCES=$(wildcard*.c)
產(chǎn)生一個所有以“.c”為后綴名的文件的列表,然后存入變量SOURCES中。
6.注釋
make文件的注釋是用“#”開頭的語句。示例三、gdb調(diào)試器
運行程序,給程序加所需的執(zhí)行條件。使程序在斷點處暫停運行,并可繼續(xù)運行。顯示程序暫停時的狀態(tài)信息。允許在暫停的程序中改變運行數(shù)據(jù)。程序運行出錯后可以事后分析。支持遠程調(diào)試。支持源碼級調(diào)試。支持反匯編調(diào)試,可調(diào)試無源碼的可執(zhí)行文件。1.Gdb的調(diào)試過程串口接收程序test.cLinux環(huán)境下test.c的gdb調(diào)試過程2.Gdb遠程調(diào)試宿主機端通訊系統(tǒng)目標機端宿主機端宿主機上運行g(shù)db主程序。調(diào)試步驟為:設(shè)置目標機的類型、通訊斷口及通訊協(xié)議建立宿主機與目標機的連接,進行與本地調(diào)試相似的遠程調(diào)試。宿主機端
gdb提供了target命令設(shè)置調(diào)試目標及其參數(shù),建立連接,格式為:
targetTYPEPARAMETERSgdb的target命令支持多種類型的調(diào)試目標設(shè)備。宿主機端在使用串口建立連接之前,須使用Set命令設(shè)置串口的波特率。如:setremotebaud9600
再使用targetremote命令指定與目標機進行串口通信端口。如:targetremote/dev/ttyS0通訊系統(tǒng)
硬件上:串口、并口、以太網(wǎng)口及紅外等。
軟件上:專門定義的遠程串行通信協(xié)議(RSP)。調(diào)試信息數(shù)據(jù)包
調(diào)試信息,開始用“$”符號作為標記,結(jié)尾用“#”符號。
校驗碼,調(diào)試信息中所有字符的ASCII碼相加后取256的模。格式:$<調(diào)試信息>#<校驗碼>常用調(diào)試命令及參數(shù)
g:查看CPU寄存器的值。
G:設(shè)置CPU寄存器的值。
maddr,count:從addr位置開始讀count字節(jié)的數(shù)據(jù)。
Maddr,count:從addr位置開始寫count字節(jié)的數(shù)據(jù)。常用調(diào)試命令及參數(shù)
c/caddr:在當(dāng)前位置繼續(xù)執(zhí)行程序或從addr開始。
s/saddr:單步執(zhí)行當(dāng)前的指令,或者執(zhí)行到指定的addr位置.k:殺掉target進程。
?:打印出最近的信號值。
T:允許目標機的stub發(fā)送gdb需要的基本寄存器信息。目標機端目標機上嵌入式應(yīng)用程序須預(yù)先加入了stub模塊,由stub模塊進行串口驅(qū)動,進行g(shù)db遠程串口通信協(xié)議的解析,完成與宿主機gdb的通訊。目標機端Stub種類
i386-stub.c:適用于Intel公司386系列及兼容處理器。
m68k-stub.c:適用于Motorola公司68K系列處理器。
sh-stub.c:適用于HitachiSH結(jié)構(gòu)的處理器。
sparc-stub.c:適用于SPARC結(jié)構(gòu)的處理器。
sparcl-stub.c:適用于Fujitsugongsi的SPARCLITE結(jié)構(gòu)的處理器。stub的基本結(jié)構(gòu)在被調(diào)試應(yīng)用程序的main()函數(shù)的開頭插入兩行代碼:
利用breakpoint()函數(shù)在程序中插入一個斷點,使gdb獲得控制權(quán)。以i386-stub.c文件為例:Set_debug_traps()函數(shù)的源碼如下:Breakpoint()函數(shù)的源碼如下:BREAKPOINT宏定義如下:系統(tǒng)接到中斷請求后,調(diào)用中斷向量為3的中斷處理函數(shù),實現(xiàn)代碼如下:9.6
Windriver集成開發(fā)環(huán)境Tornado
內(nèi)核配置程序WindConfig
裝載器Loader
圖形化的交叉調(diào)試器WDB
工程配置工具集成仿真VxSimC/C++編譯環(huán)境ObjectCenter
命令行執(zhí)行工具WindSh
Tornado軟件邏輯分析儀WindView
對象瀏覽器Browser顯示軟件包ScopePak
性能檢測包PerformancePak
代碼測試器CodeTest
編輯工具VisualSlickEditforTornadoWorkbenchTornado與Workbench的功能對比
表9-2Tornado與Workbench的功能對比項目TornadoWorkbench工程管理基本的工程管理功能,對分級的工程支持有限,并需要手工修改makefile等,比較麻煩支持任意工程的分級控制,采用簡單的“拖拉”方式就可完成工程項目的分級構(gòu)造,非常方便工程項目支持可下載的工程項目和客戶化的VxWorks工程項目增加了對系統(tǒng)引導(dǎo)工程項目、實時進程工程項目、文件系統(tǒng)工程項目、用戶定制工程項目等的支持編輯器功能比較簡單,只
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商場市場消防安全責(zé)任書
- 教育培訓(xùn)合資鐵路課程開發(fā)
- 嬰兒用品租賃:諾成合同的優(yōu)勢
- 城市光纖網(wǎng)絡(luò)施工合同
- S版二年級語文上冊教案
- 航空服務(wù)科技合同管理辦法
- 醫(yī)院空氣質(zhì)量控制制度
- 三年級數(shù)學(xué)上冊教學(xué)計劃教案
- 文化創(chuàng)意產(chǎn)業(yè)籌資管理辦法
- 招聘與配置管理技巧
- 申請一年或多年多次往返申根簽證信
- 實踐與認識的關(guān)系PPT課件
- DIC的診斷與評價ppt課件
- 車輛評估報告
- 施工圖變更單4頁
- 金山區(qū)社區(qū)衛(wèi)生服務(wù)中心基本項目標化工作量指導(dǎo)標準2015
- 紙尿褲生產(chǎn)規(guī)程與設(shè)備維護
- 柴油機單軌吊技術(shù)在煤礦的應(yīng)用
- 村鎮(zhèn)銀行組織結(jié)構(gòu)及職能
- 2022年2022年特殊條件下的施工措施
- 30分鐘學(xué)會老年家裝《漫畫老年家裝》內(nèi)容介紹(精編版)
評論
0/150
提交評論