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

下載本文檔

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

文檔簡介

1、1 軟件學院嵌入式系統與軟件軟件學院桑楠2 軟件學院實驗安排(暫定) 14周-17周 每周四下午14:30-17:30 主樓A2-402 肖堃 3 軟件學院第九章嵌入式軟件開發環境4 軟件學院核心內容 交叉開發技術 仿真開發技術 開發環境提供的主要工具 GNU的嵌入式開發環境 Windriver的集成開發環境 仿真開發工具ARMulator5 軟件學院9.1 概述 需要協調管理特殊的硬件資源 軟件具有可配置裁剪特性 需要交叉編譯環境 需要交叉調試環境 需要交叉測試環境 需要軟件固化工具嵌入式軟件開發的特點:6 軟件學院9.2 交叉開發技術宿主機:開發系統目標機:運行平

2、臺7 軟件學院宿主機與目標機的差別 硬件的差別:處理器不同 軟件環境的差異:宿主機上有通用操作系統等系統軟件提供軟件開發支持,而目標機上除了調試代理沒有其他用于嵌入式軟件開發的軟件資源8 軟件學院一、常用的交叉開發方法 1.Crash and Burn方式在宿主機上編寫代碼;在宿主機編譯應用程序,生成可執行程序;固化到目標機的非易失存儲器中;啟動運行,若正常則轉到;不正確則根據目標板上的信號顯示估計錯誤位置,改寫代碼,糾正錯誤;返回重復操作;固化完成。9 軟件學院2. ROM Monitor方式方式 10 軟件學院優點: 實時控制目標機的內存單元、寄存器、設置斷點等 調試采用目標機本身的串口、

3、網口、USB口進行11 軟件學院ROM Monitor的缺點 : 目標機內存使用與運行時不一致 目標機CPU運行與正常運行時不一致 無法調試通訊占用端口的相關代碼 若目標機CPU不支持硬件斷點,則無法調試設置數據斷點 無法調試系統啟動初始化過程12 軟件學院3. ROM Emulator方式方式 ROM Emulator是一種用于替代目標機上ROM芯片的設備,插接到目標機的ROM插座上,取代ROM內存。13 軟件學院4. ICE方式方式 ICE是一種用于替代目標機上CPU的設備,可執行目標機CPU的指令,能將內部的信號輸出到被控制的目標機,ICE上的內存也可以被映射到用戶的程序空間。 14 軟

4、件學院ICE方式方式 15 軟件學院ICE方式的特殊調試功能 支持軟件斷點和硬件斷點的設置 設置復雜的斷點和觸發器 實時跟蹤目標程序的運行,并可實現選擇性的跟蹤 支持“Time Stamp” 允許用戶設置“Timer” 提供“Shadow RAM”,支持非干擾調試查詢。16 軟件學院5. OCD方式方式 采用兩級CPU模式: 正常運行模式 調試模式17 軟件學院OCD方式的優點方式的優點 性價比高 不占用目標機硬件資源 調試環境和運行環境一致 能調試底層系統軟件18 軟件學院OCD方式的缺點 調試的實時性不如ICE強 不支持非干擾調試查詢 CPU必須有OCD功能 OCD標準不統一 19 軟件學

5、院BDM方式 20 軟件學院二、交叉開發過程 軟件生成軟件調試軟件固化21 軟件學院應用軟件生成階段 22 軟件學院應用軟件調試階段 23 軟件學院應用軟件固化階段 24 軟件學院三、交叉開發環境 25 軟件學院9.3 仿真開發技術 利用計算機仿真技術模擬嵌入式硬件系統的真實運行,使軟件開發和系統集成在虛擬平臺上進行。26 軟件學院仿真開發結構示意仿真開發結構示意 27 軟件學院一、仿真開發分類 純軟件仿真開發是利用宿主機上的資源模擬目標機實際硬件電路的運行,構建應用軟件運行所需的虛擬硬件環境,提供嵌入式軟件開發和調試的真正“軟”平臺。28 軟件學院純軟件仿真開發分類 應用級仿真 編程接口級仿

6、真 硬件級仿真29 軟件學院編程接口級仿真 30 軟件學院硬件級仿真開發 31 軟件學院二、仿真開發過程二、仿真開發過程 32 軟件學院三、仿真開發環境 33 軟件學院四、仿真開發環境的特點 不需要提供實際的目標硬件環境; 編譯調試都在宿主機上進行; 可以最大限度地保證軟硬件同時開發。34 軟件學院9.4 開發環境提供的主要工具 項目管理器 項目配置工具 源碼編輯工具 CRTL(C Run-Time Library) RTOS開發支持包 交叉編譯工具 交叉調試工具 交叉測試 性能分析工具等35 軟件學院一、項目管理 項目管理器一般采用通用的工作區、項目管理方式,這能較好的支持在不同硬件平臺上的

7、軟件移植。36 軟件學院二、配置剪裁 編譯參數配置工具 實時操作系統裁剪工具 內存配置工具37 軟件學院三、源碼編輯 標準的文本編輯功能 支持語法色彩 簡單的語法檢查功能 源程序函數索引、定位功能 顯示調試信息 文本保存的多中備份機制38 軟件學院四、目標代碼編譯生成 嵌入式開發環境一般提供工具make,它利用編譯器、匯編器、鏈接器和庫管理器等工具,根據Makefile文件,將源代碼轉換成目標代碼。39 軟件學院1.目標代碼生成 設置目標代碼生成選項; C源碼預處理; C源碼編譯成匯編代碼; 匯編語言程序轉換為可重定位目標代碼; 可重定位的目標模塊鏈接成目標程序; 文件格式轉換。40 軟件學院

8、2.目標代碼優化 合并已有常量; 公共子表達式刪除; 控制流優化; 寄存器變量使用優化; 循環優化; 冗余指令刪除; 窺孔優化。41 軟件學院3.編譯提示信息 錯誤信息:致命錯誤、一般錯誤和警告。 過程信息 狀態信息42 軟件學院4. 庫的使用 在開發大中型軟件時,常把一些編譯好的模塊統一放到一個庫中。 43 軟件學院5. 常用文件后綴 .c或.cc 或 .cxx 或 .cpp .h或.hpp.s或.asm .S .o或.obj .a或.lib .elf.omf.hex.eep .cof.s19或.s2或.s3.lst.map44 軟件學院五、交叉調試 硬件:連接線、仿真頭、轉換板等連接硬件。

9、 軟件:宿主機端調試工具和目標機端ROM Monitor45 軟件學院交叉調試定義 調試器能夠通過某種方式遠程控制目標機上被調試程序的運行模式,并且具備查看和修改目標機上的內存、寄存器以及被調試程序中的變量等功能。46 軟件學院交叉調試與非交叉調試比較交叉調試交叉調試本地調試本地調試Debugger和Debuggee運行在不同的計算機Debugger和Debuggee運行在同一臺計算機運行時不一定需要操作系統的調試支持運行時需要操作系統的調試支持Debuggee裝載由Debugger或Loader完成Debuggee的裝載是由專門的Loader程序完成需要通過外部通信的方式來控制Debugge

10、e不需要外部的通信方式來控制Debuggee可以直接調試不同指令集的程序只能直接調試相同指令集的程序47 軟件學院1. 交叉調試支持的功能 內存 寄存器 斷點 程序執行 變量 顯示模式 OS-aware48 軟件學院交叉調試的過程框架49 軟件學院2. 任務級調試 調試對象是一個用戶任務(集),用戶可以自定義調試范圍。 50 軟件學院任務級調試51 軟件學院3. 系統級調試 即內核級調試,調試對象是目標機上除調試代理外的所有程序,包括RTOS本身。 52 軟件學院系統級調試53 軟件學院六、測試工具 嵌入式系統采用交叉測試,即嵌入式軟件測試必須由宿主機和目標機協作完成。54 軟件學院1. 仿真

11、測試 仿真測試環境可分為兩類: 一類要求用戶改寫I/O部分代碼。 無須改動其源程序。55 軟件學院純軟件仿真測試結構框架 56 軟件學院2. 交叉測試 目標機的測試分為兩類: 仿真信號測試 實物測試57 軟件學院仿真信號測試的結構 58 軟件學院3. 實時性測試 靜態時間分析。不執行被測程序,通過分析估計執行時間。 動態實時檢測。實際執行程序測試程序的時間特性。包括:在線仿真器、模擬器、插樁技術。 59 軟件學院七、版本管理工具 版本管理是用戶對項目文件版本進行控制的工具軟件。包括:版本庫和臨時工作區。 60 軟件學院嵌入式軟件版本管理工具的功能結構 61 軟件學院9.5 GNU的嵌入式開發環

12、境 C編譯器gcc make工具GNU make 開發調試工具gdb62 軟件學院一、gcc編譯器 gcc前端支持多種高級語言,后端支持多種平臺,它是一個交叉編譯器,可以把源代碼編譯成在其他硬件平臺上運行的可執行代碼。63 軟件學院1. 編譯過程 預處理 編譯 匯編 鏈接64 軟件學院預處理 執行源代碼的預處理,處理完后生成一個以“.i”為后綴名的臨時文件。65 軟件學院編譯 將預處理后生成的源代碼編譯為后綴名為“.s”的匯編文件。66 軟件學院匯編 gcc調用as匯編程序,將匯編語言代碼轉換為以“.o”為后綴名的中間代碼。 67 軟件學院鏈接 它調用ld鏈接程序,把所有目標代碼以及靜態庫,定

13、位鏈接生成最后的可執行程序或其他格式的目標文件。68 軟件學院test.c的gcc編譯過程69 軟件學院2. 交叉gcc的生成 gcc的缺省配置是本地使用。當需要交叉gcc時,可利用Linux環境下提供的一些交叉gcc生成工具來重新配置。70 軟件學院交叉gcc的生成過程 重新生成binutils。 生成Llinux Headers 生成目標機的Glibc 生成交叉GCC71 軟件學院二、項目編譯管理工具make 自動查找已修改的源程序文件,并對它們進行編譯; 對未改動的源程序文件,如果已經存在中間代碼文件(“.o”文件)則不再重新編譯; 將所有的中間代碼文件和庫鏈接成可執行文件或特定格式的目

14、標文件。72 軟件學院1. Make命令一般語法規則是: make -f makefile文件名 其他選項 目標名說明: -f:makefile的文件名字。 目標名:所要更新目標的名稱。 兩個常用選項。: -n:只顯示生成指定目標的各命令,并不 實際執行,可以用來檢查make文件中的錯誤。 -p:顯示并檢查make文件中的所有宏定義和所有內部規則。73 軟件學院2. 目標 make文件中描述了目標依賴于哪些源程序文件,按照什么樣的規則生成。目標的狀態取決于所依賴的源程序文件狀態。語法規則為:74 軟件學院3. 宏宏的基本定義語法為: marco_name = string而已定義宏的引用語法規

15、則為: $(marco_name) 或者 $marco_name75 軟件學院Make內部預定義的宏 $,表示當前目標名。等價于語句:76 軟件學院Make內部預定義的宏 $*,表示去掉后綴的當前目標名。 $,表示目標所依賴文件名。77 軟件學院4. 符號 %,對應于具體的文件名 ,表示命令本身不在屏幕上顯示。 :=,變量定義,它不是“=”符號。78 軟件學院符號例如:結果是:79 軟件學院5. 函數語法格式如下: $(funcname arg1, , argn) 例如: SOURCES=$(wildcard*.c) 產生一個所有以“.c”為后綴名的文件的列表,然后存入變量SOURCES中。

16、80 軟件學院6. 注釋 make文件的注釋是用“#”開頭的語句。81 軟件學院示例82 軟件學院三、gdb調試器 運行程序,給程序加所需的執行條件。 使程序在斷點處暫停運行,并可繼續運行。 顯示程序暫停時的狀態信息。 允許在暫停的程序中改變運行數據。 程序運行出錯后可以事后分析。 支持遠程調試。 支持源碼級調試。 支持反匯編調試,可調試無源碼的可執行文件。83 軟件學院1. Gdb的調試過程串口接收程序test.c84 軟件學院Linux環境下test.c的gdb調試過程85 軟件學院2. Gdb遠程調試 宿主機端 通訊系統 目標機端86 軟件學院宿主機端 宿主機上運行gdb主程序。調試步驟

17、為: 設置目標機的類型、通訊斷口及通訊協議 建立宿主機與目標機的連接, 進行與本地調試相似的遠程調試。87 軟件學院宿主機端 gdb提供了target命令設置調試目標及其參數,建立連接,格式為: target TYPE PARAMETERSgdb的target命令支持多種類型的調試目標設備。88 軟件學院宿主機端 在使用串口建立連接之前,須使用Set命令設置串口的波特率。如:set remotebaud 9600 再使用target remote命令指定與目標機進行串口通信端口。如:target remote /dev/ttyS089 軟件學院通訊系統 硬件上:串口、并口、以太網口及紅外等。

18、軟件上:專門定義的遠程串行通信協議(RSP)。 90 軟件學院調試信息數據包 調試信息,開始用“$”符號作為標記 ,結尾用“#”符號。 校驗碼,調試信息中所有字符的ASCII碼相加后取256的模。格式:$#91 軟件學院常用調試命令及參數 g:查看CPU寄存器的值。 G:設置CPU寄存器的值。 maddr,count:從addr位置開始讀count字節的數據。 Maddr,count:從addr位置開始寫count字節的數據。92 軟件學院常用調試命令及參數 c/caddr:在當前位置繼續執行程序或從addr開始。 s/saddr:單步執行當前的指令,或者執行到指定的addr位置. k:殺掉t

19、arget進程。 ?:打印出最近的信號值。 T:允許目標機的stub發送gdb需要的基本寄存器信息。93 軟件學院目標機端 目標機上嵌入式應用程序須預先加入了stub模塊,由stub模塊進行串口驅動,進行gdb遠程串口通信協議的解析,完成與宿主機gdb的通訊。94 軟件學院目標機端95 軟件學院Stub種類 i386-stub.c:適用于Intel公司386系列及兼容處理器。 m68k-stub.c:適用于Motorola公司68K系列處理器。 sh-stub.c:適用于Hitachi SH結構的處理器。 sparc-stub.c:適用于SPARC結構的處理器。 sparcl-stub.c:適

20、用于Fujitsugongsi的SPARCLITE結構的處理器。96 軟件學院stub的基本結構在被調試應用程序的main()函數的開頭插入兩行代碼: 利用breakpoint()函數在程序中插入一個斷點,使gdb獲得控制權。以i386-stub.c文件為例:97 軟件學院Set_debug_traps()函數的源碼如下:98 軟件學院Breakpoint()函數的源碼如下:BREAKPOINT宏定義如下:99 軟件學院 系統接到中斷請求后,調用中斷向量為3的中斷處理函數,實現代碼如下:100 軟件學院9.6 Windriver集成開發環境Tornado 內核配置程序WindConfig 裝載

21、器Loader 圖形化的交叉調試器WDB 工程配置工具 集成仿真VxSim C/C+編譯環境ObjectCenter 命令行執行工具WindSh 101 軟件學院Tornado 軟件邏輯分析儀WindView 對象瀏覽器Browser 顯示軟件包ScopePak 性能檢測包PerformancePak 代碼測試器CodeTest 編輯工具Visual SlickEdit for Tornado 102 軟件學院Workbench 103 軟件學院Tornado與Workbench的功能對比 表表9-2 Tornado與與Workbench的功能對比的功能對比項目項目Tornado Workbench 工程管理基本的工程管理功能,對分級的工程支持有限,并需要手工修改makefile等,比較麻煩支持任意工程的分級控制,采用簡單的“拖拉”方式就可完成工程項目的分級構造,非常方便工程項目支持可下載的工程項目和客戶化的VxWorks工程項目增加了對系統引導工程項目、實時進程工程項目、文件系統工程項目、用戶定制工程項目等的

溫馨提示

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

評論

0/150

提交評論