AXD調(diào)試工具的使用-詳解.ppt_第1頁(yè)
AXD調(diào)試工具的使用-詳解.ppt_第2頁(yè)
AXD調(diào)試工具的使用-詳解.ppt_第3頁(yè)
AXD調(diào)試工具的使用-詳解.ppt_第4頁(yè)
AXD調(diào)試工具的使用-詳解.ppt_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第七章 AXD調(diào)試工具的使用,一、AXD調(diào)試工具介紹 二、AXD調(diào)試方法,一、AXD調(diào)試工具介紹,1.1 AXD調(diào)試介紹,AXD支持多種調(diào)試方法:JTAG、Angel、ARMulator等等。 AXD調(diào)試工具具有如下一些特點(diǎn): 提供合適的調(diào)試方法,比如中斷功能、斷點(diǎn)設(shè)置、連續(xù)運(yùn)行或非連續(xù)運(yùn) 行等; 能夠執(zhí)行所設(shè)計(jì)的計(jì)算機(jī)指令,檢查軟件程序設(shè)計(jì)是否存在缺陷; 能夠方便地監(jiān)測(cè)調(diào)試對(duì)象的運(yùn)行和程序的運(yùn)行; 能夠根據(jù)調(diào)試命令實(shí)時(shí)控制硬件動(dòng)作,檢測(cè)硬件電路設(shè)計(jì)是否合理。,1.使用JTAG的調(diào)試方法,調(diào)試系統(tǒng)一般包括三個(gè)部分:調(diào)試主機(jī)、協(xié)議轉(zhuǎn)換器和調(diào)試目標(biāo)。,通過(guò)JTAG接口直接和ARM內(nèi)核對(duì)話,實(shí)現(xiàn)了如下功能: 1. 程序下載; 2. 停止或啟動(dòng)程序運(yùn)行; 3. 觀察和修改內(nèi)存; 4. 觀察和修改ARM的內(nèi)核運(yùn)行狀態(tài).,2使用Angel的調(diào)試方法,3使用ARMulator的調(diào)試方法 AXD提供的一種軟件仿真的調(diào)試方法,ARMulator調(diào)試方法。ARMulator調(diào)試方法是一種脫離硬件調(diào)試軟件的方法。這種方法所使用的工具軟件是armulate.dll。,Angel是AXD中的另一種調(diào)試方法或工具。這種方法的軟件支持工具(調(diào)試環(huán)境)稱為 ADP(Angel Debug Protocol),其文件名是 remote_a.dll。 Angel調(diào)試方法的結(jié)構(gòu)包括計(jì)算機(jī)和目標(biāo)板兩部分。這種調(diào)試方法在目標(biāo)板上必須含有調(diào)試監(jiān)控程序。計(jì)算機(jī)和目標(biāo)板的通信實(shí)際上是計(jì)算機(jī)與調(diào)試監(jiān)控程序之間的通信。,AXD調(diào)試結(jié)構(gòu),1.2 AXD調(diào)試步驟,AXD調(diào)試界面,各菜單的含義如下: File 用于文件管理; Processor Views 用于處理器選項(xiàng)管理,可以選擇在調(diào)試時(shí)觀察處理器的某些選項(xiàng):如寄存器、變量和存儲(chǔ)器等; System Views 用于對(duì)調(diào)試目標(biāo)管理,這是處理器以外的內(nèi)容,比如其他寄存器和斷點(diǎn)等; Options 用于對(duì)AXD進(jìn)行配置,如進(jìn)行目標(biāo)配置; Excute 控制程序運(yùn)行,如單步、執(zhí)行到斷點(diǎn)等。,進(jìn)行程序調(diào)試前的兩個(gè)基本步驟:,1 目標(biāo)配置 單擊菜單“Options”“Configure Target”,彈出一個(gè)Target Environments選項(xiàng)窗口。這個(gè)窗口中有幾個(gè)系統(tǒng)加載的選項(xiàng),如圖所示。,使用ARMulate作為調(diào)試工具,點(diǎn)擊“Configure”,則出現(xiàn)如圖所示的配 置對(duì)話框。,2 加載映像文件,加載已經(jīng)編譯和鏈接過(guò)的映像文件: 進(jìn)入菜單File后,選擇上面第1項(xiàng) Load Image加載映像文件,彈出一個(gè)文件搜索對(duì)話窗口。加載的映像文件在工程項(xiàng)目文件夾中,擴(kuò)展名是AXF,文件名稱和工程項(xiàng)目名稱相同。 打開映像文件之后,大部分選項(xiàng)被激活??梢赃M(jìn)行其他選項(xiàng)設(shè)置,也可以開始調(diào)試。 注意:AXD沒(méi)有復(fù)位功能,調(diào)試過(guò)程中如果想重新運(yùn)行程序,需要重新加載程序。,1.3 View菜單介紹,Processor Views菜單,System Views菜單,1.Control Monitor菜單介紹,選擇“System Views”“Control Monitor”,就會(huì)打開如圖所示的顯示窗口。這個(gè)“Control Monitor”窗口共有四個(gè)標(biāo)簽頁(yè):Target、Image、Files、Class。在“Control Monitor”窗口的任一標(biāo)簽頁(yè)中點(diǎn)擊右鍵,選擇右鍵菜單“Hide”命令可以隱藏本窗口。, Target標(biāo)簽頁(yè) 在Target標(biāo)簽頁(yè)中,顯示了當(dāng)前的目標(biāo)硬件,如圖所示,圖中顯示當(dāng)前的目標(biāo)硬件是ARM7TDMI內(nèi)核。, Image標(biāo)簽頁(yè) :顯示了當(dāng)前裝載的映像文件路徑和名稱, Files標(biāo)簽頁(yè):顯示這個(gè)映像文件所涉及到的一些源文件, Class標(biāo)簽頁(yè):顯示這個(gè)映像文件所涉及的類、全局變量和全局函數(shù)。,2Output、Console菜單介紹,Console窗口是一個(gè)控制臺(tái)窗口,不但可以接收用戶的按鍵信息,而且可以顯示程序的輸出信息。,這個(gè)輸出窗口共有RDI Log和Debug Log兩個(gè)標(biāo)簽頁(yè),分別顯示RDI日志信息和調(diào)試過(guò)程中產(chǎn)生的日志信息。,3Disassembly、Source菜單介紹,在“Processor Views”菜單下“Source”菜單用來(lái)打開源程序;“Disassembly”菜單用來(lái)打開反匯編代碼文件。,4Registers菜單介紹,調(diào)試中有兩部分寄存器: 一部分是ARM內(nèi)部的寄存器; 一部分是ARM外部其他模塊的寄存器。 單擊“Processor Views”“Registers”打開一個(gè)ARM寄存器選項(xiàng)窗口。,ARM寄存器窗口,ARM寄存器選項(xiàng)窗口共有8個(gè)選項(xiàng),每個(gè)選項(xiàng)可以打開一組寄存器。 1. Current當(dāng)前工作寄存器,包括ROR14、PC、CPSR和SPSR; 2. User/System用戶模式/系統(tǒng)模式寄存器組,包括ROR14、PC、CPSR; 3. FIQ快速中斷模式寄存器組,包括FIQ模式中的R8R14、SPSR; 4. IRQ通用中斷模式寄存器組,包括IRQ模式中的R13、R14和SPSR; 5. SVC 管理模式寄存器組,包括管理模式中的R13、R14和SPSR; 6. Abort中止模式寄存器組,包括abt模式中的R13、R14和SPSR; 7. Undef未定義模式寄存器組,包括und模式中的R13、R14和SPSR; 8. Debug Comms調(diào)試信息,包括控制信息寄存器,讀狀態(tài)寄存器和寫 狀態(tài)寄存器。,5Memory菜單介紹 單擊菜單欄“Processor Views”“Memory”打開存儲(chǔ)器顯示窗口。,在Start addresser處可以輸入要顯示內(nèi)存的起始地址,圖中輸入0x8000,所以內(nèi)存單元內(nèi)容從0x8000處開始顯示。,6Low Level Symbols菜單介紹,左側(cè)的窗口是符號(hào)表管理窗口,每個(gè)符號(hào)都對(duì)應(yīng)一個(gè)地址。,7Watch菜單介紹,使用觀測(cè)項(xiàng)(Watch)可以在調(diào)試程序時(shí)動(dòng)態(tài)地了解某些信息,這些信息取決于所設(shè)置的觀測(cè)項(xiàng)的表達(dá)式。 在觀測(cè)項(xiàng)窗口所得到的是一個(gè)表達(dá)式的值,表達(dá)式可以由程序調(diào)試者輸入。,R0 + R5-R6 ;使用寄存器和算術(shù)運(yùn)算符 R0 + R7*0x20 ;使用寄存器和算術(shù)運(yùn)算符 &b ;求變量b的地址 b + value ;兩個(gè)變量相加,Add Watch 添加觀察項(xiàng); Locate Using Value 搜尋觀察項(xiàng)的值; Locate Using Address 搜尋觀察項(xiàng)的地址; Format 設(shè)置數(shù)據(jù)顯示格式。,Add Watch窗口,在Watch窗口的右鍵菜單中選擇“Add Watch”。然后單擊Evaluate按鈕,這個(gè)表達(dá)式和這個(gè)表達(dá)式的值就會(huì)出現(xiàn)在下面的窗口中。,8Watchpoint菜單介紹,AXD中還有一種輔助調(diào)試手段,叫做觀測(cè)點(diǎn)(Watchpoint)。觀測(cè)點(diǎn)與觀測(cè)項(xiàng)的主要區(qū)別: 1.觀測(cè)項(xiàng)是檢查一個(gè)表達(dá)式的值,要對(duì)表達(dá)式進(jìn)行計(jì)算,而觀測(cè)點(diǎn)不對(duì)表達(dá)式進(jìn)行計(jì)算; 2.觀測(cè)項(xiàng)不會(huì)使正在執(zhí)行的程序停止;而觀測(cè)點(diǎn)與斷點(diǎn)一樣可以使程序停止; 3.觀測(cè)點(diǎn)和斷點(diǎn)一樣,可以設(shè)置實(shí)現(xiàn)條件;觀測(cè)項(xiàng)沒(méi)有條件,通過(guò)菜單選項(xiàng)“Systerm Views”“Watchpoint”打開系統(tǒng)觀測(cè)點(diǎn)管理窗口:,State: 表明當(dāng)前觀測(cè)點(diǎn)的狀態(tài),當(dāng)圖標(biāo)為圓形時(shí),該觀測(cè)點(diǎn)處于打開狀態(tài); Processor: 目標(biāo)處理器的名稱; Item: 觀測(cè)點(diǎn)的地址或名稱,可能是變量名、寄存器名或者是地址; Watching : 注釋項(xiàng); Count: 計(jì)數(shù)器,分母是一個(gè)設(shè)定的循環(huán)次數(shù)。 Condition: 觀測(cè)點(diǎn)條件; Action: 程序執(zhí)行到觀測(cè)點(diǎn)時(shí)有兩種可能的結(jié)果:一種是停止運(yùn)行(Break);另一種是注釋字符串到指定日志文件中。,右鍵菜單中選擇“Add”,系統(tǒng)彈出一個(gè)觀測(cè)點(diǎn)設(shè)置對(duì)話框,如圖所示,二、AXD調(diào)試方法,1.1 常用的調(diào)試方法,控制程序運(yùn)行的方法分為兩種: 單步運(yùn)行 單步運(yùn)行就是讓程序一條語(yǔ)句接一條語(yǔ)句執(zhí)行,可以通過(guò)查看寄存器、內(nèi)存表、變量以及表達(dá)式的值來(lái)判斷程序的運(yùn)行結(jié)果。 設(shè)置斷點(diǎn)運(yùn)行。 設(shè)置斷點(diǎn)的方法能夠用來(lái)調(diào)試大段的程序。程序中并不重要部分直接讓它運(yùn)行,在程序中的關(guān)鍵點(diǎn)處設(shè)置斷點(diǎn),當(dāng)程序運(yùn)行到斷點(diǎn)處時(shí)會(huì)自動(dòng)停止,然后觀察運(yùn)行的結(jié)果或決定程序是否繼續(xù)運(yùn)行。,1.2 單步調(diào)試,工具欄中的“單步”運(yùn)行按鈕。這個(gè)單步運(yùn)行操作使程序執(zhí)行到下一條指令。如果指令是一條函數(shù)調(diào)用指令,則這項(xiàng)功能不進(jìn)入函數(shù)體內(nèi)。 工具欄中的“進(jìn)入單步”運(yùn)行按鈕。這個(gè)單步運(yùn)行操作使程序運(yùn)行到下一條指令。如果指令是一條函數(shù)調(diào)用指令,則這項(xiàng)功能將進(jìn)入函數(shù)體內(nèi)。 工具欄中的“跳出單步”運(yùn)行按鈕。這個(gè)單步運(yùn)行操作使程序執(zhí)行到下一條指令。如果指令是在函數(shù)體內(nèi),則這項(xiàng)功能使程序跳出函數(shù)體。 工具欄中的“執(zhí)行到光標(biāo)處”運(yùn)行按鈕。這項(xiàng)功能可以使程序運(yùn)行到事先選定的指令行。,字符串拷貝程序清單,AREA BufData,DATA,READWRITE ;聲明數(shù)據(jù)段BufData Mes DCB “HELLO,The World!” Buf SPACE 100 ;分配100字節(jié)空間 AREA Example1,CODE,READONLY ;聲明代碼段Example1 ENTRY ;標(biāo)識(shí)程序入口 CODE32 ;聲明32位ARM指令 START LDR R1, =Mes LDR R2, =Buf LDRB R3, R1,#16 ;裝載Mes數(shù)組的最后一個(gè)字符$ N LDRB R0, R1, #1 ;讀源地址的字符,R1自動(dòng)加1 STRB R0, R2, #1 ;保存字符到目的地址,R2自動(dòng)加1 CMP R0, R3 ;比較,判斷字符是否為$ BNE N ;沒(méi)有碰到$,繼續(xù)傳送字符 B START END,源程序窗口和反匯編窗口,存儲(chǔ)器顯示窗口,1.3 使用斷點(diǎn)進(jìn)行調(diào)試,1斷點(diǎn)的簡(jiǎn)單應(yīng)用 在調(diào)試程序的過(guò)程中,使用斷點(diǎn)是經(jīng)常要使用的方法。, 設(shè)置斷點(diǎn) 在源程序或反匯編程序的窗口中,把光標(biāo)指向要設(shè)置斷點(diǎn)的指令行,雙擊即把這個(gè)選中的指令行標(biāo)注為斷點(diǎn)位置?;蛘邌螕粢O(shè)置為斷點(diǎn)的指令行設(shè)置斷點(diǎn)。 執(zhí)行到斷點(diǎn) 按F9鍵使程序開始運(yùn)行,直到最近一個(gè)斷點(diǎn)。 刪除斷點(diǎn) 刪除斷點(diǎn)跟設(shè)置斷點(diǎn)一樣,最簡(jiǎn)單的方法是:在源文件或反匯編文件的斷點(diǎn)位置雙擊這個(gè)指令行,就可以刪除這個(gè)斷點(diǎn)。,2. 斷點(diǎn)管理窗口,State 斷點(diǎn)狀態(tài); Processor 處理器型號(hào); Position 斷點(diǎn)位置; Count 斷點(diǎn)計(jì)數(shù)器; Condition 斷點(diǎn)計(jì)數(shù)器計(jì)數(shù)條件。 Size 代碼類型。 Action 斷點(diǎn)執(zhí)行動(dòng)作。,Add 增加一個(gè)斷點(diǎn); Disable 關(guān)閉選中的斷點(diǎn); Delete 刪除選中斷點(diǎn); Delete All 刪除斷點(diǎn)管理窗口中所有的斷點(diǎn); Locate Using Address搜索斷點(diǎn)所在指令行的地址; Refresh 斷點(diǎn)管理窗口中的內(nèi)容刷新一次; Properties 設(shè)置斷點(diǎn)的屬性。 Float within main window使斷點(diǎn)管理窗口浮置,浮置的窗口可以懸掛在屏幕的任意位置; Allow

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論