版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
嵌入式系統(tǒng)與軟件軟件學(xué)院桑楠sn@實(shí)驗(yàn)安排(暫定)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)境需要交叉測(cè)試環(huán)境需要軟件固化工具嵌入式軟件開發(fā)的特點(diǎn):9.2
交叉開發(fā)技術(shù)宿主機(jī):開發(fā)系統(tǒng)目標(biāo)機(jī):運(yùn)行平臺(tái)宿主機(jī)與目標(biāo)機(jī)的差別硬件的差別:處理器不同軟件環(huán)境的差異:宿主機(jī)上有通用操作系統(tǒng)等系統(tǒng)軟件提供軟件開發(fā)支持,而目標(biāo)機(jī)上除了調(diào)試代理沒有其他用于嵌入式軟件開發(fā)的軟件資源一、常用的交叉開發(fā)方法
1.CrashandBurn方式在宿主機(jī)上編寫代碼;在宿主機(jī)編譯應(yīng)用程序,生成可執(zhí)行程序;固化到目標(biāo)機(jī)的非易失存儲(chǔ)器中;啟動(dòng)運(yùn)行,若正常則轉(zhuǎn)到⑦;不正確則根據(jù)目標(biāo)板上的信號(hào)顯示估計(jì)錯(cuò)誤位置,改寫代碼,糾正錯(cuò)誤;返回②重復(fù)操作;固化完成。2.ROMMonitor方式
優(yōu)點(diǎn):實(shí)時(shí)控制目標(biāo)機(jī)的內(nèi)存單元、寄存器、設(shè)置斷點(diǎn)等調(diào)試采用目標(biāo)機(jī)本身的串口、網(wǎng)口、USB口進(jìn)行ROMMonitor的缺點(diǎn):目標(biāo)機(jī)內(nèi)存使用與運(yùn)行時(shí)不一致目標(biāo)機(jī)CPU運(yùn)行與正常運(yùn)行時(shí)不一致無法調(diào)試通訊占用端口的相關(guān)代碼若目標(biāo)機(jī)CPU不支持硬件斷點(diǎn),則無法調(diào)試設(shè)置數(shù)據(jù)斷點(diǎn)無法調(diào)試系統(tǒng)啟動(dòng)初始化過程3.ROMEmulator方式
ROMEmulator是一種用于替代目標(biāo)機(jī)上ROM芯片的設(shè)備,插接到目標(biāo)機(jī)的ROM插座上,取代ROM內(nèi)存。4.ICE方式
ICE是一種用于替代目標(biāo)機(jī)上CPU的設(shè)備,可執(zhí)行目標(biāo)機(jī)CPU的指令,能將內(nèi)部的信號(hào)輸出到被控制的目標(biāo)機(jī),ICE上的內(nèi)存也可以被映射到用戶的程序空間。ICE方式
ICE方式的特殊調(diào)試功能
支持軟件斷點(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)試查詢。5.OCD方式
采用兩級(jí)CPU模式:正常運(yùn)行模式調(diào)試模式OCD方式的優(yōu)點(diǎn)
性價(jià)比高不占用目標(biāo)機(jī)硬件資源調(diào)試環(huán)境和運(yùn)行環(huán)境一致能調(diào)試底層系統(tǒng)軟件OCD方式的缺點(diǎn)
調(diào)試的實(shí)時(shí)性不如ICE強(qiáng)不支持非干擾調(diào)試查詢
CPU必須有OCD功能
OCD標(biāo)準(zhǔn)不統(tǒng)一BDM方式
二、交叉開發(fā)過程
軟件生成軟件調(diào)試軟件固化應(yīng)用軟件生成階段
應(yīng)用軟件調(diào)試階段
應(yīng)用軟件固化階段
三、交叉開發(fā)環(huán)境
9.3
仿真開發(fā)技術(shù)利用計(jì)算機(jī)仿真技術(shù)模擬嵌入式硬件系統(tǒng)的真實(shí)運(yùn)行,使軟件開發(fā)和系統(tǒng)集成在虛擬平臺(tái)上進(jìn)行。仿真開發(fā)結(jié)構(gòu)示意
一、仿真開發(fā)分類
純軟件仿真開發(fā)是利用宿主機(jī)上的資源模擬目標(biāo)機(jī)實(shí)際硬件電路的運(yùn)行,構(gòu)建應(yīng)用軟件運(yùn)行所需的虛擬硬件環(huán)境,提供嵌入式軟件開發(fā)和調(diào)試的真正“軟”平臺(tái)。純軟件仿真開發(fā)分類
應(yīng)用級(jí)仿真編程接口級(jí)仿真硬件級(jí)仿真編程接口級(jí)仿真
硬件級(jí)仿真開發(fā)
二、仿真開發(fā)過程
三、仿真開發(fā)環(huán)境
四、仿真開發(fā)環(huán)境的特點(diǎn)
不需要提供實(shí)際的目標(biāo)硬件環(huán)境;編譯調(diào)試都在宿主機(jī)上進(jìn)行;可以最大限度地保證軟硬件同時(shí)開發(fā)。9.4
開發(fā)環(huán)境提供的主要工具項(xiàng)目管理器項(xiàng)目配置工具源碼編輯工具
CRTL(CRun-TimeLibrary)
RTOS開發(fā)支持包交叉編譯工具交叉調(diào)試工具交叉測(cè)試性能分析工具等一、項(xiàng)目管理
項(xiàng)目管理器一般采用通用的工作區(qū)、項(xiàng)目管理方式,這能較好的支持在不同硬件平臺(tái)上的軟件移植。二、配置剪裁
編譯參數(shù)配置工具實(shí)時(shí)操作系統(tǒng)裁剪工具內(nèi)存配置工具三、源碼編輯
標(biāo)準(zhǔn)的文本編輯功能支持語法色彩簡(jiǎn)單的語法檢查功能源程序函數(shù)索引、定位功能顯示調(diào)試信息文本保存的多中備份機(jī)制四、目標(biāo)代碼編譯生成
嵌入式開發(fā)環(huán)境一般提供工具make,它利用編譯器、匯編器、鏈接器和庫管理器等工具,根據(jù)Makefile文件,將源代碼轉(zhuǎn)換成目標(biāo)代碼。1.目標(biāo)代碼生成
設(shè)置目標(biāo)代碼生成選項(xiàng);
C源碼預(yù)處理;
C源碼編譯成匯編代碼;匯編語言程序轉(zhuǎn)換為可重定位目標(biāo)代碼;可重定位的目標(biāo)模塊鏈接成目標(biāo)程序;文件格式轉(zhuǎn)換。2.目標(biāo)代碼優(yōu)化
合并已有常量;公共子表達(dá)式刪除;控制流優(yōu)化;寄存器變量使用優(yōu)化;循環(huán)優(yōu)化;冗余指令刪除;窺孔優(yōu)化。3.編譯提示信息
錯(cuò)誤信息:致命錯(cuò)誤、一般錯(cuò)誤和警告。
過程信息
狀態(tài)信息4.庫的使用
在開發(fā)大中型軟件時(shí),常把一些編譯好的模塊統(tǒng)一放到一個(gè)庫中。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)換板等連接硬件。
軟件:宿主機(jī)端調(diào)試工具和目標(biāo)機(jī)端ROMMonitor交叉調(diào)試定義
調(diào)試器能夠通過某種方式遠(yuǎn)程控制目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行模式,并且具備查看和修改目標(biāo)機(jī)上的內(nèi)存、寄存器以及被調(diào)試程序中的變量等功能。交叉調(diào)試與非交叉調(diào)試比較交叉調(diào)試本地調(diào)試Debugger和Debuggee運(yùn)行在不同的計(jì)算機(jī)Debugger和Debuggee運(yùn)行在同一臺(tái)計(jì)算機(jī)運(yùn)行時(shí)不一定需要操作系統(tǒng)的調(diào)試支持運(yùn)行時(shí)需要操作系統(tǒng)的調(diào)試支持Debuggee裝載由Debugger或Loader完成Debuggee的裝載是由專門的Loader程序完成需要通過外部通信的方式來控制Debuggee不需要外部的通信方式來控制Debuggee可以直接調(diào)試不同指令集的程序只能直接調(diào)試相同指令集的程序1.交叉調(diào)試支持的功能內(nèi)存寄存器斷點(diǎn)程序執(zhí)行變量顯示模式
OS-aware交叉調(diào)試的過程框架2.任務(wù)級(jí)調(diào)試調(diào)試對(duì)象是一個(gè)用戶任務(wù)(集),用戶可以自定義調(diào)試范圍。任務(wù)級(jí)調(diào)試3.系統(tǒng)級(jí)調(diào)試即內(nèi)核級(jí)調(diào)試,調(diào)試對(duì)象是目標(biāo)機(jī)上除調(diào)試代理外的所有程序,包括RTOS本身。系統(tǒng)級(jí)調(diào)試六、測(cè)試工具
嵌入式系統(tǒng)采用交叉測(cè)試,即嵌入式軟件測(cè)試必須由宿主機(jī)和目標(biāo)機(jī)協(xié)作完成。1.仿真測(cè)試
仿真測(cè)試環(huán)境可分為兩類:一類要求用戶改寫I/O部分代碼。無須改動(dòng)其源程序。純軟件仿真測(cè)試結(jié)構(gòu)框架
2.交叉測(cè)試
目標(biāo)機(jī)的測(cè)試分為兩類:仿真信號(hào)測(cè)試實(shí)物測(cè)試仿真信號(hào)測(cè)試的結(jié)構(gòu)
3.實(shí)時(shí)性測(cè)試
靜態(tài)時(shí)間分析。不執(zhí)行被測(cè)程序,通過分析估計(jì)執(zhí)行時(shí)間。
動(dòng)態(tài)實(shí)時(shí)檢測(cè)。實(shí)際執(zhí)行程序測(cè)試程序的時(shí)間特性。包括:在線仿真器、模擬器、插樁技術(shù)。
七、版本管理工具
版本管理是用戶對(duì)項(xiàng)目文件版本進(jìn)行控制的工具軟件。包括:版本庫和臨時(shí)工作區(qū)。嵌入式軟件版本管理工具的功能結(jié)構(gòu)
9.5GNU的嵌入式開發(fā)環(huán)境
C編譯器gccmake工具GNUmake
開發(fā)調(diào)試工具gdb一、gcc編譯器
gcc前端支持多種高級(jí)語言,后端支持多種平臺(tái),它是一個(gè)交叉編譯器,可以把源代碼編譯成在其他硬件平臺(tái)上運(yùn)行的可執(zhí)行代碼。1.編譯過程預(yù)處理編譯匯編鏈接預(yù)處理執(zhí)行源代碼的預(yù)處理,處理完后生成一個(gè)以“.i”為后綴名的臨時(shí)文件。編譯將預(yù)處理后生成的源代碼編譯為后綴名為“.s”的匯編文件。匯編
gcc調(diào)用as匯編程序,將匯編語言代碼轉(zhuǎn)換為以“.o”為后綴名的中間代碼。鏈接它調(diào)用ld鏈接程序,把所有目標(biāo)代碼以及靜態(tài)庫,定位鏈接生成最后的可執(zhí)行程序或其他格式的目標(biāo)文件。test.c的gcc編譯過程2.交叉gcc的生成
gcc的缺省配置是本地使用。當(dāng)需要交叉gcc時(shí),可利用Linux環(huán)境下提供的一些交叉gcc生成工具來重新配置。交叉gcc的生成過程重新生成binutils。生成LlinuxHeaders
生成目標(biāo)機(jī)的Glibc
生成交叉GCC二、項(xiàng)目編譯管理工具make
自動(dòng)查找已修改的源程序文件,并對(duì)它們進(jìn)行編譯;對(duì)未改動(dòng)的源程序文件,如果已經(jīng)存在中間代碼文件(“.o”文件)則不再重新編譯;將所有的中間代碼文件和庫鏈接成可執(zhí)行文件或特定格式的目標(biāo)文件。1.Make命令一般語法規(guī)則是:
make[-fmakefile文件名][其他選項(xiàng)][目標(biāo)名]說明:
-f:makefile的文件名字。
目標(biāo)名:所要更新目標(biāo)的名稱。兩個(gè)常用選項(xiàng)。:
-n:只顯示生成指定目標(biāo)的各命令,并不實(shí)際執(zhí)行,可以用來檢查make文件中的錯(cuò)誤。
-p:顯示并檢查make文件中的所有宏定義和所有內(nèi)部規(guī)則。2.目標(biāo)
make文件中描述了目標(biāo)依賴于哪些源程序文件,按照什么樣的規(guī)則生成。目標(biāo)的狀態(tài)取決于所依賴的源程序文件狀態(tài)。語法規(guī)則為:3.宏宏的基本定義語法為:
marco_name=string而已定義宏的引用語法規(guī)則為:$(marco_name)或者
${marco_name}Make內(nèi)部預(yù)定義的宏
$@,表示當(dāng)前目標(biāo)名。等價(jià)于語句:Make內(nèi)部預(yù)定義的宏
$*,表示去掉后綴的當(dāng)前目標(biāo)名。
$<,表示目標(biāo)所依賴文件名。4.符號(hào)
%,對(duì)應(yīng)于具體的文件名
@,表示命令本身不在屏幕上顯示。
:=,變量定義,它不是“=”符號(hào)。符號(hào)例如:結(jié)果是:5.函數(shù)語法格式如下:
$(funcnamearg1,…,argn)例如:
SOURCES=$(wildcard*.c)
產(chǎn)生一個(gè)所有以“.c”為后綴名的文件的列表,然后存入變量SOURCES中。
6.注釋
make文件的注釋是用“#”開頭的語句。示例三、gdb調(diào)試器
運(yùn)行程序,給程序加所需的執(zhí)行條件。使程序在斷點(diǎn)處暫停運(yùn)行,并可繼續(xù)運(yùn)行。顯示程序暫停時(shí)的狀態(tài)信息。允許在暫停的程序中改變運(yùn)行數(shù)據(jù)。程序運(yùn)行出錯(cuò)后可以事后分析。支持遠(yuǎn)程調(diào)試。支持源碼級(jí)調(diào)試。支持反匯編調(diào)試,可調(diào)試無源碼的可執(zhí)行文件。1.Gdb的調(diào)試過程串口接收程序test.cLinux環(huán)境下test.c的gdb調(diào)試過程2.Gdb遠(yuǎn)程調(diào)試宿主機(jī)端通訊系統(tǒng)目標(biāo)機(jī)端宿主機(jī)端宿主機(jī)上運(yùn)行g(shù)db主程序。調(diào)試步驟為:設(shè)置目標(biāo)機(jī)的類型、通訊斷口及通訊協(xié)議建立宿主機(jī)與目標(biāo)機(jī)的連接,進(jìn)行與本地調(diào)試相似的遠(yuǎn)程調(diào)試。宿主機(jī)端
gdb提供了target命令設(shè)置調(diào)試目標(biāo)及其參數(shù),建立連接,格式為:
targetTYPEPARAMETERSgdb的target命令支持多種類型的調(diào)試目標(biāo)設(shè)備。宿主機(jī)端在使用串口建立連接之前,須使用Set命令設(shè)置串口的波特率。如:setremotebaud9600
再使用targetremote命令指定與目標(biāo)機(jī)進(jìn)行串口通信端口。如:targetremote/dev/ttyS0通訊系統(tǒng)
硬件上:串口、并口、以太網(wǎng)口及紅外等。
軟件上:專門定義的遠(yuǎn)程串行通信協(xié)議(RSP)。調(diào)試信息數(shù)據(jù)包
調(diào)試信息,開始用“$”符號(hào)作為標(biāo)記,結(jié)尾用“#”符號(hào)。
校驗(yàn)碼,調(diào)試信息中所有字符的ASCII碼相加后取256的模。格式:$<調(diào)試信息>#<校驗(yàn)碼>常用調(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:?jiǎn)尾綀?zhí)行當(dāng)前的指令,或者執(zhí)行到指定的addr位置.k:殺掉target進(jìn)程。
?:打印出最近的信號(hào)值。
T:允許目標(biāo)機(jī)的stub發(fā)送gdb需要的基本寄存器信息。目標(biāo)機(jī)端目標(biāo)機(jī)上嵌入式應(yīng)用程序須預(yù)先加入了stub模塊,由stub模塊進(jìn)行串口驅(qū)動(dòng),進(jìn)行g(shù)db遠(yuǎn)程串口通信協(xié)議的解析,完成與宿主機(jī)gdb的通訊。目標(biāo)機(jī)端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ù)在程序中插入一個(gè)斷點(diǎn),使gdb獲得控制權(quán)。以i386-stub.c文件為例:Set_debug_traps()函數(shù)的源碼如下:Breakpoint()函數(shù)的源碼如下:BREAKPOINT宏定義如下:系統(tǒng)接到中斷請(qǐng)求后,調(diào)用中斷向量為3的中斷處理函數(shù),實(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
對(duì)象瀏覽器Browser顯示軟件包ScopePak
性能檢測(cè)包PerformancePak
代碼測(cè)試器CodeTest
編輯工具VisualSlickEditforTornadoWorkbenchTornado與Workbench的功能對(duì)比
表9-2Tornado與Workbench的功能對(duì)比項(xiàng)目TornadoWorkbench工程管理基本的工程管理功能,對(duì)分級(jí)的工程支持有限,并需要手工修改makefile等,比較麻煩支持任意工程的分級(jí)控制,采用簡(jiǎn)單的“拖拉”方式就可完成工程項(xiàng)目的分級(jí)構(gòu)造,非常方便工程項(xiàng)目支持可下載的工程項(xiàng)目和客戶化的VxWorks工程項(xiàng)目增加了對(duì)系統(tǒng)引導(dǎo)工程項(xiàng)目、實(shí)時(shí)進(jìn)程工程項(xiàng)目、文件系統(tǒng)工程項(xiàng)目、用戶定制工程項(xiàng)目等的支持編輯器功能比較簡(jiǎn)單,只
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Methyl-undecanoate-Standard-生命科學(xué)試劑-MCE
- Methyl-9-S-10-R-epoxy-13-S-hydroxy-11-E-15-Z-octadecadienoate-生命科學(xué)試劑-MCE
- Mepyramine-maleate-Standard-生命科學(xué)試劑-MCE
- 零基礎(chǔ)油畫課程設(shè)計(jì)
- 校外輔導(dǎo)機(jī)構(gòu) 疫情防控管理制度
- 造船廠船舶買賣合同范本
- 改造門窗的施工方案
- 課程設(shè)計(jì)紙張分離機(jī)構(gòu)
- 撐托板課程設(shè)計(jì)
- 酒店防洪防汛應(yīng)急預(yù)案
- 施工圖變更單4頁
- 金山區(qū)社區(qū)衛(wèi)生服務(wù)中心基本項(xiàng)目標(biāo)化工作量指導(dǎo)標(biāo)準(zhǔn)2015
- 柴油機(jī)單軌吊技術(shù)在煤礦的應(yīng)用
- 后鼻韻母課件(1)
- 2022年2022年特殊條件下的施工措施
- 部編版五年級(jí)上語文第四單元教學(xué)計(jì)劃
- 單位賬戶自查報(bào)告5篇
- 蘇教版六年級(jí)上冊(cè)數(shù)學(xué)半期考試試卷
- 企業(yè)門戶網(wǎng)站(概要設(shè)計(jì)說明書)
- 口腔頜面外科基本操作完整版
- 220kV電容式電壓互感器更換(新裝)作業(yè)指導(dǎo)書
評(píng)論
0/150
提交評(píng)論