嵌入式系統與軟件-第九章_第1頁
嵌入式系統與軟件-第九章_第2頁
嵌入式系統與軟件-第九章_第3頁
嵌入式系統與軟件-第九章_第4頁
嵌入式系統與軟件-第九章_第5頁
已閱讀5頁,還剩100頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

嵌入式系統與軟件軟件學院桑楠sn@實驗安排(暫定)14周-17周每周四下午14:30-17:30主樓A2-402肖xiaoxuanbai@163.com第九章嵌入式軟件開發環境核心內容交叉開發技術

仿真開發技術開發環境提供的主要工具GNU的嵌入式開發環境Windriver的集成開發環境仿真開發工具ARMulator9.1

概述需要協調管理特殊的硬件資源軟件具有可配置/裁剪特性需要交叉編譯環境需要交叉調試環境需要交叉測試環境需要軟件固化工具嵌入式軟件開發的特點:9.2

交叉開發技術宿主機:開發系統目標機:運行平臺宿主機與目標機的差別硬件的差別:處理器不同軟件環境的差異:宿主機上有通用操作系統等系統軟件提供軟件開發支持,而目標機上除了調試代理沒有其他用于嵌入式軟件開發的軟件資源一、常用的交叉開發方法

1.CrashandBurn方式在宿主機上編寫代碼;在宿主機編譯應用程序,生成可執行程序;固化到目標機的非易失存儲器中;啟動運行,若正常則轉到⑦;不正確則根據目標板上的信號顯示估計錯誤位置,改寫代碼,糾正錯誤;返回②重復操作;固化完成。2.ROMMonitor方式

優點:實時控制目標機的內存單元、寄存器、設置斷點等調試采用目標機本身的串口、網口、USB口進行ROMMonitor的缺點:目標機內存使用與運行時不一致目標機CPU運行與正常運行時不一致無法調試通訊占用端口的相關代碼若目標機CPU不支持硬件斷點,則無法調試設置數據斷點無法調試系統啟動初始化過程3.ROMEmulator方式

ROMEmulator是一種用于替代目標機上ROM芯片的設備,插接到目標機的ROM插座上,取代ROM內存。4.ICE方式

ICE是一種用于替代目標機上CPU的設備,可執行目標機CPU的指令,能將內部的信號輸出到被控制的目標機,ICE上的內存也可以被映射到用戶的程序空間。ICE方式

ICE方式的特殊調試功能

支持軟件斷點和硬件斷點的設置設置復雜的斷點和觸發器實時跟蹤目標程序的運行,并可實現選擇性的跟蹤支持“TimeStamp”允許用戶設置“Timer”提供“ShadowRAM”,支持非干擾調試查詢。5.OCD方式

采用兩級CPU模式:正常運行模式調試模式OCD方式的優點

性價比高不占用目標機硬件資源調試環境和運行環境一致能調試底層系統軟件OCD方式的缺點

調試的實時性不如ICE強不支持非干擾調試查詢

CPU必須有OCD功能

OCD標準不統一BDM方式

二、交叉開發過程

軟件生成軟件調試軟件固化應用軟件生成階段

應用軟件調試階段

應用軟件固化階段

三、交叉開發環境

9.3

仿真開發技術利用計算機仿真技術模擬嵌入式硬件系統的真實運行,使軟件開發和系統集成在虛擬平臺上進行。仿真開發結構示意

一、仿真開發分類

純軟件仿真開發是利用宿主機上的資源模擬目標機實際硬件電路的運行,構建應用軟件運行所需的虛擬硬件環境,提供嵌入式軟件開發和調試的真正“軟”平臺。純軟件仿真開發分類

應用級仿真編程接口級仿真硬件級仿真編程接口級仿真

硬件級仿真開發

二、仿真開發過程

三、仿真開發環境

四、仿真開發環境的特點

不需要提供實際的目標硬件環境;編譯調試都在宿主機上進行;可以最大限度地保證軟硬件同時開發。9.4

開發環境提供的主要工具項目管理器項目配置工具源碼編輯工具

CRTL(CRun-TimeLibrary)

RTOS開發支持包交叉編譯工具交叉調試工具交叉測試性能分析工具等一、項目管理

項目管理器一般采用通用的工作區、項目管理方式,這能較好的支持在不同硬件平臺上的軟件移植。二、配置剪裁

編譯參數配置工具實時操作系統裁剪工具內存配置工具三、源碼編輯

標準的文本編輯功能支持語法色彩簡單的語法檢查功能源程序函數索引、定位功能顯示調試信息文本保存的多中備份機制四、目標代碼編譯生成

嵌入式開發環境一般提供工具make,它利用編譯器、匯編器、鏈接器和庫管理器等工具,根據Makefile文件,將源代碼轉換成目標代碼。1.目標代碼生成

設置目標代碼生成選項;

C源碼預處理;

C源碼編譯成匯編代碼;匯編語言程序轉換為可重定位目標代碼;可重定位的目標模塊鏈接成目標程序;文件格式轉換。2.目標代碼優化

合并已有常量;公共子表達式刪除;控制流優化;寄存器變量使用優化;循環優化;冗余指令刪除;窺孔優化。3.編譯提示信息

錯誤信息:致命錯誤、一般錯誤和警告。

過程信息

狀態信息4.庫的使用

在開發大中型軟件時,常把一些編譯好的模塊統一放到一個庫中。5.常用文件后綴

.c或.cc或.cxx

或.cpp.h或.hpp.s或.asm.S.o或.obj.a或.lib.elf.omf.hex.eep.cof.s19或.s2或.s3.lst.map五、交叉調試

硬件:連接線、仿真頭、轉換板等連接硬件。

軟件:宿主機端調試工具和目標機端ROMMonitor交叉調試定義

調試器能夠通過某種方式遠程控制目標機上被調試程序的運行模式,并且具備查看和修改目標機上的內存、寄存器以及被調試程序中的變量等功能。交叉調試與非交叉調試比較交叉調試本地調試Debugger和Debuggee運行在不同的計算機Debugger和Debuggee運行在同一臺計算機運行時不一定需要操作系統的調試支持運行時需要操作系統的調試支持Debuggee裝載由Debugger或Loader完成Debuggee的裝載是由專門的Loader程序完成需要通過外部通信的方式來控制Debuggee不需要外部的通信方式來控制Debuggee可以直接調試不同指令集的程序只能直接調試相同指令集的程序1.交叉調試支持的功能內存寄存器斷點程序執行變量顯示模式

OS-aware交叉調試的過程框架2.任務級調試調試對象是一個用戶任務(集),用戶可以自定義調試范圍。任務級調試3.系統級調試即內核級調試,調試對象是目標機上除調試代理外的所有程序,包括RTOS本身。系統級調試六、測試工具

嵌入式系統采用交叉測試,即嵌入式軟件測試必須由宿主機和目標機協作完成。1.仿真測試

仿真測試環境可分為兩類:一類要求用戶改寫I/O部分代碼。無須改動其源程序。純軟件仿真測試結構框架

2.交叉測試

目標機的測試分為兩類:仿真信號測試實物測試仿真信號測試的結構

3.實時性測試

靜態時間分析。不執行被測程序,通過分析估計執行時間。

動態實時檢測。實際執行程序測試程序的時間特性。包括:在線仿真器、模擬器、插樁技術。

七、版本管理工具

版本管理是用戶對項目文件版本進行控制的工具軟件。包括:版本庫和臨時工作區。嵌入式軟件版本管理工具的功能結構

9.5GNU的嵌入式開發環境

C編譯器gccmake工具GNUmake

開發調試工具gdb一、gcc編譯器

gcc前端支持多種高級語言,后端支持多種平臺,它是一個交叉編譯器,可以把源代碼編譯成在其他硬件平臺上運行的可執行代碼。1.編譯過程預處理編譯匯編鏈接預處理執行源代碼的預處理,處理完后生成一個以“.i”為后綴名的臨時文件。編譯將預處理后生成的源代碼編譯為后綴名為“.s”的匯編文件。匯編

gcc調用as匯編程序,將匯編語言代碼轉換為以“.o”為后綴名的中間代碼。鏈接它調用ld鏈接程序,把所有目標代碼以及靜態庫,定位鏈接生成最后的可執行程序或其他格式的目標文件。test.c的gcc編譯過程2.交叉gcc的生成

gcc的缺省配置是本地使用。當需要交叉gcc時,可利用Linux環境下提供的一些交叉gcc生成工具來重新配置。交叉gcc的生成過程重新生成binutils。生成LlinuxHeaders

生成目標機的Glibc

生成交叉GCC二、項目編譯管理工具make

自動查找已修改的源程序文件,并對它們進行編譯;對未改動的源程序文件,如果已經存在中間代碼文件(“.o”文件)則不再重新編譯;將所有的中間代碼文件和庫鏈接成可執行文件或特定格式的目標文件。1.Make命令一般語法規則是:

make[-fmakefile文件名][其他選項][目標名]說明:

-f:makefile的文件名字。

目標名:所要更新目標的名稱。兩個常用選項。:

-n:只顯示生成指定目標的各命令,并不實際執行,可以用來檢查make文件中的錯誤。

-p:顯示并檢查make文件中的所有宏定義和所有內部規則。2.目標

make文件中描述了目標依賴于哪些源程序文件,按照什么樣的規則生成。目標的狀態取決于所依賴的源程序文件狀態。語法規則為:3.宏宏的基本定義語法為:

marco_name=string而已定義宏的引用語法規則為:$(marco_name)或者

${marco_name}Make內部預定義的宏

$@,表示當前目標名。等價于語句:Make內部預定義的宏

$*,表示去掉后綴的當前目標名。

$<,表示目標所依賴文件名。4.符號

%,對應于具體的文件名

@,表示命令本身不在屏幕上顯示。

:=,變量定義,它不是“=”符號。符號例如:結果是:5.函數語法格式如下:

$(funcnamearg1,…,argn)例如:

SOURCES=$(wildcard*.c)

產生一個所有以“.c”為后綴名的文件的列表,然后存入變量SOURCES中。

6.注釋

make文件的注釋是用“#”開頭的語句。示例三、gdb調試器

運行程序,給程序加所需的執行條件。使程序在斷點處暫停運行,并可繼續運行。顯示程序暫停時的狀態信息。允許在暫停的程序中改變運行數據。程序運行出錯后可以事后分析。支持遠程調試。支持源碼級調試。支持反匯編調試,可調試無源碼的可執行文件。1.Gdb的調試過程串口接收程序test.cLinux環境下test.c的gdb調試過程2.Gdb遠程調試宿主機端通訊系統目標機端宿主機端宿主機上運行gdb主程序。調試步驟為:設置目標機的類型、通訊斷口及通訊協議建立宿主機與目標機的連接,進行與本地調試相似的遠程調試。宿主機端

gdb提供了target命令設置調試目標及其參數,建立連接,格式為:

targetTYPEPARAMETERSgdb的target命令支持多種類型的調試目標設備。宿主機端在使用串口建立連接之前,須使用Set命令設置串口的波特率。如:setremotebaud9600

再使用targetremote命令指定與目標機進行串口通信端口。如:targetremote/dev/ttyS0通訊系統

硬件上:串口、并口、以太網口及紅外等。

軟件上:專門定義的遠程串行通信協議(RSP)。調試信息數據包

調試信息,開始用“$”符號作為標記,結尾用“#”符號。

校驗碼,調試信息中所有字符的ASCII碼相加后取256的模。格式:$<調試信息>#<校驗碼>常用調試命令及參數

g:查看CPU寄存器的值。

G:設置CPU寄存器的值。

maddr,count:從addr位置開始讀count字節的數據。

Maddr,count:從addr位置開始寫count字節的數據。常用調試命令及參數

c/caddr:在當前位置繼續執行程序或從addr開始。

s/saddr:單步執行當前的指令,或者執行到指定的addr位置.k:殺掉target進程。

?:打印出最近的信號值。

T:允許目標機的stub發送gdb需要的基本寄存器信息。目標機端目標機上嵌入式應用程序須預先加入了stub模塊,由stub模塊進行串口驅動,進行gdb遠程串口通信協議的解析,完成與宿主機gdb的通訊。目標機端Stub種類

i386-stub.c:適用于Intel公司386系列及兼容處理器。

m68k-stub.c:適用于Motorola公司68K系列處理器。

sh-stub.c:適用于HitachiSH結構的處理器。

sparc-stub.c:適用于SPARC結構的處理器。

sparcl-stub.c:適用于Fujitsugongsi的SPARCLITE結構的處理器。stub的基本結構在被調試應用程序的main()函數的開頭插入兩行代碼:

利用breakpoint()函數在程序中插入一個斷點,使gdb獲得控制權。以i386-stub.c文件為例:Set_debug_traps()函數的源碼如下:Breakpoint()函數的源碼如下:BREAKPOINT宏定義如下:系統接到中斷請求后,調用中斷向量為3的中斷處理函數,實現代碼如下:9.6

Windriver集成開發環境Tornado

內核配置程序WindConfig

裝載器Loader

圖形化的交叉調試器WDB

工程配置工具集成仿真VxSimC/C++編譯環境ObjectCenter

命令行執行工具WindSh

Tornado軟件邏輯分析儀WindView

對象瀏覽器Browser顯示軟件包ScopePak

性能檢測包PerformancePak

代碼測試器CodeTest

編輯工具VisualSlickEditforTornadoWorkbenchTornado與Workbench的功能對比

表9-2Tornado與Workbench的功能對比項目TornadoWorkbench工程管理基本的工程管理功能,對分級的工程支持有限,并需要手工修改makefile等,比較麻煩支持任意工程的分級控制,采用簡單的“拖拉”方式就可完成工程項目的分級構造,非常方便工程項目支持可下載的工程項目和客戶化的VxWorks工程項目增加了對系統引導工程項目、實時進程工程項目、文件系統工程項目、用戶定制工程項目等的支持編輯器功能比較簡單,只

溫馨提示

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

評論

0/150

提交評論