第六講 ARM處理器調(diào)試原理(2013)_第1頁
第六講 ARM處理器調(diào)試原理(2013)_第2頁
第六講 ARM處理器調(diào)試原理(2013)_第3頁
第六講 ARM處理器調(diào)試原理(2013)_第4頁
第六講 ARM處理器調(diào)試原理(2013)_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、No. 1Sep 2013 復(fù)習(xí)第四講:復(fù)習(xí)第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調(diào)試原理介紹嵌入式系統(tǒng)調(diào)試原理介紹 基于基于ARM7 內(nèi)核微處理器調(diào)試原理內(nèi)核微處理器調(diào)試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調(diào)試原理嵌入式系統(tǒng)開發(fā)和調(diào)試原理No. 2Sep 2013ARM指令集的特點(diǎn)指令集的特點(diǎn) 所有的所有的ARM指令都是指令都是32位寬,在存儲器中以位寬,在存儲器中以4字節(jié)的邊界對齊字節(jié)的邊

2、界對齊 3地址的數(shù)據(jù)處理指令(即兩個(gè)源操作數(shù)和結(jié)果寄存器都獨(dú)立設(shè)定)地址的數(shù)據(jù)處理指令(即兩個(gè)源操作數(shù)和結(jié)果寄存器都獨(dú)立設(shè)定) LOAD/STORE架構(gòu),包含非常強(qiáng)大的多寄存器架構(gòu),包含非常強(qiáng)大的多寄存器Load和和Store指令指令 能夠在單時(shí)鐘周期的單條指令來完曾一項(xiàng)普通移位操作和一項(xiàng)普通的能夠在單時(shí)鐘周期的單條指令來完曾一項(xiàng)普通移位操作和一項(xiàng)普通的ALU操作操作 可以通過協(xié)處理器來擴(kuò)展新的寄存器和數(shù)據(jù)類型可以通過協(xié)處理器來擴(kuò)展新的寄存器和數(shù)據(jù)類型 指令可條件執(zhí)行指令可條件執(zhí)行 ARM指令的分類指令的分類p 數(shù)據(jù)處理指令(數(shù)據(jù)處理指令( 16條數(shù)據(jù)處理和乘法)條數(shù)據(jù)處理和乘法)p 分支指令

3、分支指令 (B,BL,BX)p 數(shù)據(jù)傳送指令(訪問存儲器)數(shù)據(jù)傳送指令(訪問存儲器)LDR/STR, 批量傳送批量傳送p 其他指令其他指令l 軟件中斷軟件中斷SWI指令指令l 程序狀態(tài)寄存器指令程序狀態(tài)寄存器指令No. 3Sep 2013ARM匯編語言偽操作匯編語言偽操作在在ARM匯編語言程序中,有一些特殊的助記符,這些助記匯編語言程序中,有一些特殊的助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,通常符與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,通常稱這些特殊助記符為偽操作標(biāo)示符(稱這些特殊助記符為偽操作標(biāo)示符(directive),其完成),其完成的操作稱為偽操作。的操作稱為

4、偽操作。 符號定義(符號定義(Symbol Definition)偽操作)偽操作 數(shù)據(jù)定義(數(shù)據(jù)定義(Data Definition)偽操作)偽操作 匯編控制(匯編控制(Assembly Control)偽操作)偽操作 信息報(bào)告(信息報(bào)告(Reporting)偽操作)偽操作 其他(其他(Miscellaneous)偽操作)偽操作 No. 4Sep 2013ARM匯編語言偽指令匯編語言偽指令偽指令語法格式作 用ADRA D R c o n d register , expr將基于PC或基于寄存器的地址值讀取到寄存器中。小范圍的地址讀取。ADRLADRL cond register,expr將基于

5、PC或基于寄存器的地址值讀取到寄存器中。中等范圍的地址讀取。LDRL D R c o n d register,=expr | label-expr將一個(gè)32位的立即數(shù)或者一個(gè)地址值讀取到寄存器中。大范圍的地址讀取。NOPNOP在匯編時(shí)將被替換成ARM中的空操作。No. 5Sep 2013ATPCS介紹寄存器的使用規(guī)則介紹寄存器的使用規(guī)則 定義:定義:p ATPCS(arm-thumb procedure call standard)是)是 子程序之間的調(diào)用設(shè)定一定的規(guī)子程序之間的調(diào)用設(shè)定一定的規(guī)則,則,ATPCS就是就是ARM 程序中的子程序調(diào)用的基本規(guī)則程序中的子程序調(diào)用的基本規(guī)則 PCS

6、:p 規(guī)定了應(yīng)用程序的函數(shù)可以如何分開地寫,分開地編譯,最后將它們連接在一起規(guī)定了應(yīng)用程序的函數(shù)可以如何分開地寫,分開地編譯,最后將它們連接在一起p 定義了一套有關(guān)過程(函數(shù))調(diào)用者與被調(diào)用者之間的協(xié)議。定義了一套有關(guān)過程(函數(shù))調(diào)用者與被調(diào)用者之間的協(xié)議。p PCS規(guī)范強(qiáng)制實(shí)現(xiàn)如下約定:調(diào)用函數(shù)如何傳參(即壓棧方法,以何種方式存放參數(shù)規(guī)范強(qiáng)制實(shí)現(xiàn)如下約定:調(diào)用函數(shù)如何傳參(即壓棧方法,以何種方式存放參數(shù)),被調(diào)用函數(shù)如何獲取參數(shù),以何種方式傳遞函數(shù)返回值。),被調(diào)用函數(shù)如何獲取參數(shù),以何種方式傳遞函數(shù)返回值。 基本的基本的ATPCS包含的內(nèi)容包含的內(nèi)容p 各個(gè)寄存器的使用規(guī)則和相應(yīng)的名稱:各

7、個(gè)寄存器的使用規(guī)則和相應(yīng)的名稱:l R0R3 參數(shù)寄存器參數(shù)寄存器l R4R11 通用變量寄存器通用變量寄存器p 數(shù)據(jù)棧的使用規(guī)則:數(shù)據(jù)棧是數(shù)據(jù)棧的使用規(guī)則:數(shù)據(jù)棧是FD(滿遞減堆棧)(滿遞減堆棧)p 參數(shù)傳遞的規(guī)則:對于參數(shù)個(gè)數(shù)可變的子程序,但參數(shù)不超過參數(shù)傳遞的規(guī)則:對于參數(shù)個(gè)數(shù)可變的子程序,但參數(shù)不超過4個(gè)時(shí),可以使用寄存器個(gè)時(shí),可以使用寄存器R0R3來傳遞參數(shù);當(dāng)參數(shù)超過來傳遞參數(shù);當(dāng)參數(shù)超過4個(gè)時(shí),還可以使用數(shù)據(jù)棧來傳遞參數(shù)。個(gè)時(shí),還可以使用數(shù)據(jù)棧來傳遞參數(shù)。No. 6Sep 2013 復(fù)習(xí)第四講:復(fù)習(xí)第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:

8、交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調(diào)試原理介紹嵌入式系統(tǒng)調(diào)試原理介紹 基于基于ARM7 內(nèi)核微處理器調(diào)試原理內(nèi)核微處理器調(diào)試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調(diào)試原理嵌入式系統(tǒng)開發(fā)和調(diào)試原理No. 7Sep 2013嵌入式系統(tǒng)的開發(fā)過程嵌入式系統(tǒng)的開發(fā)過程N(yùn)o. 8Sep 2013PC 上的調(diào)試上的調(diào)試程序編寫,項(xiàng)目管理,編譯,調(diào)試都在同一臺計(jì)算機(jī)上完程序編寫,項(xiàng)目管理,編譯,調(diào)試都在同一臺計(jì)算機(jī)上完成(成(IDE, Integrated Design Environ

9、ment)pMS VCpMS VBpBorland C+ Builder一般是通過在斷點(diǎn)插入相關(guān)的調(diào)試軟陷指令來實(shí)現(xiàn)調(diào)試功一般是通過在斷點(diǎn)插入相關(guān)的調(diào)試軟陷指令來實(shí)現(xiàn)調(diào)試功能的能的.No. 9Sep 2013交叉編譯環(huán)境交叉編譯環(huán)境 宿主機(jī)宿主機(jī)p 開發(fā)機(jī)器開發(fā)機(jī)器(包含開發(fā)用軟件編輯器包含開發(fā)用軟件編輯器,調(diào)試器調(diào)試器 ,編譯器編譯器,匯編器匯編器) 目標(biāo)機(jī)目標(biāo)機(jī)p 程序運(yùn)行的機(jī)器程序運(yùn)行的機(jī)器 宿主機(jī)宿主機(jī)=目標(biāo)機(jī)目標(biāo)機(jī) 稱為本地編譯稱為本地編譯 (VB編寫應(yīng)用程序編寫應(yīng)用程序) “交叉編譯交叉編譯”是指是指 宿主機(jī)和目標(biāo)機(jī)是不同的系統(tǒng)宿主機(jī)和目標(biāo)機(jī)是不同的系統(tǒng)p 使用使用PC 機(jī)是機(jī)是X

10、86系統(tǒng)系統(tǒng),而目標(biāo)機(jī)是而目標(biāo)機(jī)是ARM,單片機(jī)或者其他系統(tǒng)單片機(jī)或者其他系統(tǒng)嵌入式應(yīng)用軟件開發(fā)要使用交叉嵌入式應(yīng)用軟件開發(fā)要使用交叉開發(fā)環(huán)境。開發(fā)環(huán)境。p 交叉開發(fā)環(huán)境集成了編輯器、交叉編譯器、交叉調(diào)試器、仿真軟件交叉開發(fā)環(huán)境集成了編輯器、交叉編譯器、交叉調(diào)試器、仿真軟件(simulator)、工程管理器、工程管理器于一體于一體 p 商業(yè)化的界面友好的同商業(yè)化的界面友好的同Microsoft Visual Studio可視化開發(fā)環(huán)境相似,免費(fèi)如可視化開發(fā)環(huán)境相似,免費(fèi)如GNU工具鏈運(yùn)工具鏈運(yùn)行在字符界面下行在字符界面下 p 交叉開發(fā)的硬件環(huán)境包括宿主機(jī)和目標(biāo)板。交叉開發(fā)的硬件環(huán)境包括宿主機(jī)和

11、目標(biāo)板。No. 10Sep 2013?嵌入式系統(tǒng)調(diào)試的需求嵌入式系統(tǒng)調(diào)試的需求 Run Control(運(yùn)行控制)(運(yùn)行控制)p Set watchpoints on data accesses(觀察感(觀察感興趣的數(shù)據(jù))興趣的數(shù)據(jù))p Set breakpoints on instructions(指令斷點(diǎn)(指令斷點(diǎn))p Single step through code(單步調(diào)試)(單步調(diào)試) State Control(狀態(tài)控制)(狀態(tài)控制)p Processor state(處理器狀態(tài))(處理器狀態(tài))l Read and write register valuesp System sta

12、te(系統(tǒng)狀態(tài))(系統(tǒng)狀態(tài))l Access to system memoryl Download code Execution History(執(zhí)行過程)(執(zhí)行過程)p Execution trace information(跟蹤程序信息(跟蹤程序信息)p Memory access history(存儲器訪問歷史數(shù)(存儲器訪問歷史數(shù)據(jù))據(jù))No. 11Sep 2013嵌入式系統(tǒng)調(diào)試的一般方法嵌入式系統(tǒng)調(diào)試的一般方法基于交叉編譯環(huán)境下的調(diào)試基于交叉編譯環(huán)境下的調(diào)試調(diào)試方法解決調(diào)試器與被調(diào)試程序之間如何通信以達(dá)到調(diào)試目標(biāo)p能夠獲取處理器數(shù)據(jù)總線、地址總線,處能夠獲取處理器數(shù)據(jù)總線、地址總線,處

13、理器狀態(tài)等信息,以便在選中的數(shù)據(jù)點(diǎn)(理器狀態(tài)等信息,以便在選中的數(shù)據(jù)點(diǎn)( watchpoints)和指令點(diǎn)(和指令點(diǎn)(breakpoints)進(jìn)入調(diào)試狀態(tài))進(jìn)入調(diào)試狀態(tài)p能夠獲取處理器內(nèi)核寄存器的信息能夠獲取處理器內(nèi)核寄存器的信息p能夠插入指令運(yùn)行能夠插入指令運(yùn)行p能夠訪問存儲器的內(nèi)容能夠訪問存儲器的內(nèi)容p記錄指令記錄指令/數(shù)據(jù)的執(zhí)行和訪問記錄數(shù)據(jù)的執(zhí)行和訪問記錄No. 12Sep 2013ARM 調(diào)試系統(tǒng)組件調(diào)試系統(tǒng)組件執(zhí)行AXD調(diào)試器的主機(jī) (ADS的一部分)和 Multi-ICE server協(xié)議轉(zhuǎn)換器(Multi-ICE)跟蹤接口單元(MultiTrace)開發(fā)板(Integrator

14、 Core Module)Trace PortJTAG Port并口串口l/以太網(wǎng)No. 13Sep 2013交叉編譯環(huán)境的內(nèi)容交叉編譯環(huán)境的內(nèi)容 集成開發(fā)系統(tǒng)提供高效明晰的圖形化的嵌入式應(yīng)用軟件開發(fā)平臺,包括集成開發(fā)系統(tǒng)提供高效明晰的圖形化的嵌入式應(yīng)用軟件開發(fā)平臺,包括一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調(diào)試工具一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調(diào)試工具 。 一般包括編輯器、編譯器、連接器、調(diào)試器、工程管理器和底層調(diào)試接一般包括編輯器、編譯器、連接器、調(diào)試器、工程管理器和底層調(diào)試接口設(shè)備(口設(shè)備(BDM/JTAG仿真器)等仿真器)等 No. 14Sep 2013 復(fù)習(xí)第四講:復(fù)習(xí)第四講:ARM

15、指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調(diào)試原理介紹嵌入式系統(tǒng)調(diào)試原理介紹 基于基于ARM7 內(nèi)核微處理器調(diào)試原理內(nèi)核微處理器調(diào)試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調(diào)試原理嵌入式系統(tǒng)開發(fā)和調(diào)試原理No. 15Sep 2013調(diào)試方法調(diào)試方法調(diào)試有四種基本方法調(diào)試有四種基本方法p模擬調(diào)試(模擬調(diào)試(Simulator)p軟件調(diào)試(軟件調(diào)試(Debugger)p全仿真調(diào)試(全仿真調(diào)試(Emulator)pJTA

16、G調(diào)試(調(diào)試(JTAG Debugger)調(diào)試輔助工具調(diào)試輔助工具示波器、邏輯分析儀示波器、邏輯分析儀與硬件關(guān)系密切與硬件關(guān)系密切No. 16Sep 2013模擬調(diào)試方法模擬調(diào)試方法調(diào)試工具和待調(diào)試的嵌入式軟件都在主機(jī)上運(yùn)行,由主機(jī)調(diào)試工具和待調(diào)試的嵌入式軟件都在主機(jī)上運(yùn)行,由主機(jī)提供一個(gè)模擬的目標(biāo)運(yùn)行環(huán)境,可以進(jìn)行語法和邏輯上的提供一個(gè)模擬的目標(biāo)運(yùn)行環(huán)境,可以進(jìn)行語法和邏輯上的調(diào)試。調(diào)試。p優(yōu)點(diǎn):簡單方便,不需要目標(biāo)板,成本低優(yōu)點(diǎn):簡單方便,不需要目標(biāo)板,成本低p缺點(diǎn):功能非常有限,無法實(shí)時(shí)調(diào)試缺點(diǎn):功能非常有限,無法實(shí)時(shí)調(diào)試大多數(shù)調(diào)試工具都提供大多數(shù)調(diào)試工具都提供Simulator功能功能

17、No. 17Sep 2013指令集模擬器指令集模擬器 利用在宿主機(jī)(一般是利用在宿主機(jī)(一般是PC)的資源構(gòu)建一個(gè)虛擬的目標(biāo)的資源構(gòu)建一個(gè)虛擬的目標(biāo)機(jī)系統(tǒng),該系統(tǒng)通過解釋執(zhí)機(jī)系統(tǒng),該系統(tǒng)通過解釋執(zhí)行目標(biāo)處理器的二進(jìn)制代碼行目標(biāo)處理器的二進(jìn)制代碼來仿真運(yùn)行目標(biāo)程序來仿真運(yùn)行目標(biāo)程序pARM Armulator模擬運(yùn)模擬運(yùn)行行ARM指令系統(tǒng)指令系統(tǒng)虛擬機(jī)構(gòu)建的環(huán)境:寄存器,存儲器等等目標(biāo)機(jī)的RTOSApp1App2App n.No. 18Sep 2013模擬器的改進(jìn)虛擬原型模擬器的改進(jìn)虛擬原型ARM ADSRDI接口接口ArmulatorMultiICE ServerAngleArmulator

18、Mem 接口虛擬的虛擬的AMBA C語言模型語言模型EMI 模型模型SDRAM 模型模型中斷控制器模型中斷控制器模型其他模塊模型其他模塊模型用戶自己編寫的模型用戶自己編寫的模型No. 19Sep 2013ARMULATOR 軟件仿真器軟件仿真器ARMulator(ARM仿真器):是一個(gè)指令級的仿真程序,仿真器):是一個(gè)指令級的仿真程序,運(yùn)行在主機(jī)上運(yùn)行在主機(jī)上p沒有硬件的情況下,調(diào)試應(yīng)用程序沒有硬件的情況下,調(diào)試應(yīng)用程序pARMulator可以報(bào)告各指令執(zhí)行時(shí)的機(jī)器周期,所以也可以用來進(jìn)行應(yīng)用可以報(bào)告各指令執(zhí)行時(shí)的機(jī)器周期,所以也可以用來進(jìn)行應(yīng)用程序的性能分析。程序的性能分析。ARMulato

19、r 提供了一套擴(kuò)展機(jī)制提供了一套擴(kuò)展機(jī)制p處理器核模型:能夠仿真現(xiàn)有的各種處理器核模型:能夠仿真現(xiàn)有的各種ARM核,包括核,包括Thumb指令集指令集p存儲器接口:它能夠模擬目標(biāo)存儲器系統(tǒng)的各種特征。提供各種原型以支存儲器接口:它能夠模擬目標(biāo)存儲器系統(tǒng)的各種特征。提供各種原型以支持快速建模,但接口需要全定制以實(shí)現(xiàn)需要的細(xì)節(jié)持快速建模,但接口需要全定制以實(shí)現(xiàn)需要的細(xì)節(jié)p協(xié)處理器接口:它支持定制的協(xié)處理器模型協(xié)處理器接口:它支持定制的協(xié)處理器模型p操作系統(tǒng)接口:使個(gè)別系統(tǒng)調(diào)用可以由主機(jī)處理,或在操作系統(tǒng)接口:使個(gè)別系統(tǒng)調(diào)用可以由主機(jī)處理,或在ARM模型上模擬模型上模擬實(shí)現(xiàn)了完整的片上系統(tǒng)(SOC)

20、的軟硬件協(xié)同設(shè)計(jì)驗(yàn)證No. 20Sep 2013OS 模擬器的調(diào)試方法模擬器的調(diào)試方法 除了指令集模擬器還有除了指令集模擬器還有操作系統(tǒng)模擬器操作系統(tǒng)模擬器pSymbian OS 模擬器模擬器pPocketPC 模擬器模擬器p由于在由于在OS層面上進(jìn)層面上進(jìn)行仿真,應(yīng)用程序運(yùn)行仿真,應(yīng)用程序運(yùn)行在行在PC的二進(jìn)制代的二進(jìn)制代碼,所以在目標(biāo)系統(tǒng)碼,所以在目標(biāo)系統(tǒng)上需要重新編譯上需要重新編譯App1App2App n.由PC OS模擬的RTOS環(huán)境:任務(wù),任務(wù)間通信No. 21Sep 2013軟件調(diào)試方法軟件調(diào)試方法(DebuggerDebugger) 主機(jī)和目標(biāo)板通過某種接口(通常是串口)連接,

21、主機(jī)上提主機(jī)和目標(biāo)板通過某種接口(通常是串口)連接,主機(jī)上提供調(diào)試界面,待調(diào)試軟件下載到目標(biāo)板上運(yùn)行。供調(diào)試界面,待調(diào)試軟件下載到目標(biāo)板上運(yùn)行。 這種方式的先決條件是要在這種方式的先決條件是要在Host和和Target之間建立起通信之間建立起通信聯(lián)系(目標(biāo)板上稱為監(jiān)控程序聯(lián)系(目標(biāo)板上稱為監(jiān)控程序Monitor)p優(yōu)點(diǎn):優(yōu)點(diǎn):純軟件,價(jià)格較低,簡單,軟件調(diào)試能力較強(qiáng)純軟件,價(jià)格較低,簡單,軟件調(diào)試能力較強(qiáng)p缺點(diǎn):缺點(diǎn):需要事先燒制需要事先燒制Monitor(往往需多次試驗(yàn)才能成功(往往需多次試驗(yàn)才能成功)且目標(biāo)板工作正常,功能有限,特別是硬件調(diào)試能力較)且目標(biāo)板工作正常,功能有限,特別是硬件調(diào)

22、試能力較差。差。PCTargetMonitor串口No. 22Sep 2013基于調(diào)試代理基于調(diào)試代理(Angel)的調(diào)試方法的調(diào)試方法 Angel是一段駐留在開發(fā)板ROM中的一段程序,系統(tǒng)Boot后,Angle接管整個(gè)系統(tǒng)并初始化系統(tǒng)和通信接口. Angel通過一定的通信協(xié)議(ADP協(xié)議)與主機(jī)的Debugger通信. Debugger通過特定的命令通知Angel將用戶調(diào)試的程序下載到目標(biāo)板的SDRAM中的特定地址,并可以按照Debugger的要求將控制權(quán)交給相應(yīng)的代碼地址 對于用戶設(shè)置的斷點(diǎn),Angel會在斷點(diǎn)的位置插入一條軟陷指令(當(dāng)然在插入之前會保存原來的那條指令),當(dāng)用戶的程序執(zhí)行到

23、斷點(diǎn)時(shí),系統(tǒng)會產(chǎn)生一個(gè)軟陷異常,這時(shí)可以由Angel接管系統(tǒng),并將系統(tǒng)當(dāng)前的寄存器的值傳給主機(jī)Debugger 如果主機(jī)Debugger需要查看內(nèi)存,也將通過Angel讀取后將存儲器的值上傳給主機(jī)。通信接口flashsdram串口電纜以太網(wǎng)USBCPUNo. 23Sep 2013Angel調(diào)試的優(yōu)缺點(diǎn)調(diào)試的優(yōu)缺點(diǎn) Angel調(diào)試的缺點(diǎn):調(diào)試的缺點(diǎn):p 需要占用目標(biāo)板的資源:處理器,存儲器和通信接口需要占用目標(biāo)板的資源:處理器,存儲器和通信接口p 沒有辦法在沒有辦法在ROM區(qū)設(shè)置斷點(diǎn)區(qū)設(shè)置斷點(diǎn)p 難以跟蹤數(shù)據(jù)變化難以跟蹤數(shù)據(jù)變化 Angel調(diào)試的優(yōu)點(diǎn):調(diào)試的優(yōu)點(diǎn):p 不需要外的調(diào)試硬件,成本低廉

24、不需要外的調(diào)試硬件,成本低廉No. 24Sep 2013全仿真調(diào)試方法全仿真調(diào)試方法全仿真調(diào)試(全仿真調(diào)試(EmulatorEmulator) 這種方式用仿真器完全取代目標(biāo)板上的這種方式用仿真器完全取代目標(biāo)板上的MCU,因而目標(biāo)系,因而目標(biāo)系統(tǒng)對開發(fā)者來說完全是透明的、可控的。仿真器與目標(biāo)板通統(tǒng)對開發(fā)者來說完全是透明的、可控的。仿真器與目標(biāo)板通過仿真頭連接,與主機(jī)有串口、并口、網(wǎng)口或過仿真頭連接,與主機(jī)有串口、并口、網(wǎng)口或USB口等連接口等連接方式。由于仿真器自成體系,調(diào)試時(shí)既可以連接目標(biāo)板,也方式。由于仿真器自成體系,調(diào)試時(shí)既可以連接目標(biāo)板,也可以不連接目標(biāo)板(可以不連接目標(biāo)板(Stand

25、alone)。)。p優(yōu)點(diǎn):優(yōu)點(diǎn):功能非常強(qiáng)大,軟硬件均可做到完全實(shí)時(shí)在線調(diào)功能非常強(qiáng)大,軟硬件均可做到完全實(shí)時(shí)在線調(diào)試試p缺點(diǎn):缺點(diǎn):價(jià)格昂貴。價(jià)格昂貴。No. 25Sep 2013采用采用在線調(diào)試方法的優(yōu)缺點(diǎn)在線調(diào)試方法的優(yōu)缺點(diǎn) 優(yōu)點(diǎn)p 一般內(nèi)存采用雙口內(nèi)存,能在執(zhí)行時(shí)同時(shí)看到數(shù)據(jù)的變化p 內(nèi)部附有功能強(qiáng)大的分析器,可以分析狀態(tài),效率和時(shí)序等p 采用存儲器斷點(diǎn)技術(shù)實(shí)現(xiàn)硬件斷點(diǎn),數(shù)量不受限制p 它不但可以往前執(zhí)行,還可以倒退執(zhí)行,所有信息都可以記錄起來,包括計(jì)時(shí)器狀態(tài)、工作切換狀態(tài)、內(nèi)存狀態(tài)、寄存器狀態(tài)和變量等信息,而且全部是實(shí)時(shí)的。p 這種調(diào)試方法在沒有片內(nèi)調(diào)試邏輯的微處理器中,尤其式單片機(jī)

26、系統(tǒng)中得到廣泛的采用. 缺點(diǎn)p在線仿真器具有侵入性,其中的嵌入式微處理器并不在線仿真器具有侵入性,其中的嵌入式微處理器并不是目標(biāo)系統(tǒng)中的處理器,電氣特性不同,無法真實(shí)反是目標(biāo)系統(tǒng)中的處理器,電氣特性不同,無法真實(shí)反映實(shí)際時(shí)序。映實(shí)際時(shí)序。p在線仿真器擁有自己的目標(biāo)處理器、在線仿真器擁有自己的目標(biāo)處理器、RAM、ROM和自和自己的嵌入式軟件,所以是非常昂貴的己的嵌入式軟件,所以是非常昂貴的(由其對于高速設(shè)由其對于高速設(shè)備而言備而言)。No. 26Sep 2013基于在線仿真器(在線調(diào)試)的調(diào)試方法基于在線仿真器(在線調(diào)試)的調(diào)試方法 在線仿真器提供自己的處理器和存儲器不依賴目標(biāo)系統(tǒng)的處理器和內(nèi)存

27、 仿真器上的處理器可以是一個(gè)相同的芯片,也可以是一個(gè)有更多引腳的變型芯片(對內(nèi)部狀態(tài)有更高的可觀察性)。 仿真器上還有NMI(不可屏蔽中斷) 控制邏輯,存儲器控制邏輯,映象ROM,映象RAM等其他各種硬件資源, 所有的硬件資源由運(yùn)行在主桌面系統(tǒng)上的軟件來管理。 flashsdramCPU插座通信接口仿真器仿真器CPU控制邏輯CPU電纜No. 27Sep 2013關(guān)于在線調(diào)試的進(jìn)一步的思考關(guān)于在線調(diào)試的進(jìn)一步的思考 既然通過片外的控制邏輯可以實(shí)現(xiàn)對芯片的調(diào)試既然通過片外的控制邏輯可以實(shí)現(xiàn)對芯片的調(diào)試,為什么為什么不把這個(gè)控制邏輯作在片內(nèi)不把這個(gè)控制邏輯作在片內(nèi),從而省掉仿真器呢從而省掉仿真器呢?

28、p At Speed 調(diào)試方案:調(diào)試方案:因?yàn)檎{(diào)試邏輯在片上p 增加芯片成本:增加芯片成本:對于32位處理器,增加比例有限!p 如何從芯片外獲得調(diào)試的控制權(quán)如何從芯片外獲得調(diào)試的控制權(quán)?會不會增加額外的封裝成本會不會增加額外的封裝成本?:可以復(fù)用JTAG測試接口No. 28Sep 2013JTAG調(diào)試方法調(diào)試方法JTAGJTAG調(diào)試調(diào)試 這種方式有一個(gè)硬件調(diào)試體。該硬件調(diào)試體與目標(biāo)板通過這種方式有一個(gè)硬件調(diào)試體。該硬件調(diào)試體與目標(biāo)板通過JTAG調(diào)試接口相連,與主機(jī)通過串口、并口、網(wǎng)口或調(diào)試接口相連,與主機(jī)通過串口、并口、網(wǎng)口或USB口相連。待調(diào)試軟件通過口相連。待調(diào)試軟件通過JTAG調(diào)試器下載

29、到目標(biāo)板上運(yùn)行。調(diào)試器下載到目標(biāo)板上運(yùn)行。p優(yōu)點(diǎn):優(yōu)點(diǎn):方便、簡單,無須制作方便、簡單,無須制作Monitor,軟硬件均可調(diào)試,軟硬件均可調(diào)試p缺點(diǎn):缺點(diǎn):需要目標(biāo)板,且目標(biāo)板工作基本正常(至少需要目標(biāo)板,且目標(biāo)板工作基本正常(至少M(fèi)CU工作正常),僅適用于有調(diào)試接口的芯片工作正常),僅適用于有調(diào)試接口的芯片TargetPC接口JTAG DebuggerNo. 29Sep 2013JTAG 基本原理基本原理IEEE Standard 1149.1(JOINT TEST ACTION GROUP) - Test Access Port and Boundary-Scan Architecture

30、邊界掃描(邊界掃描(Boundary-Scan):):基本思想:在靠近芯片輸入基本思想:在靠近芯片輸入/輸出管腳上增加一個(gè)移位寄存輸出管腳上增加一個(gè)移位寄存器單元(邊界掃描寄存器)。器單元(邊界掃描寄存器)。正常狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正正常狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正常的運(yùn)行不會受到任何的影響。常的運(yùn)行不會受到任何的影響。 TAP :控制邊界掃描鏈:控制邊界掃描鏈No. 30Sep 2013 調(diào)試狀態(tài)下,邊界掃描寄存器將芯片和外的輸入輸出隔調(diào)試狀態(tài)下,邊界掃描寄存器將芯片和外的輸入輸出隔離開,通過這些邊界掃描寄存器可以實(shí)現(xiàn)對芯片輸入輸出離開,通過這些

31、邊界掃描寄存器可以實(shí)現(xiàn)對芯片輸入輸出信號的控制。具體控制過程如下:信號的控制。具體控制過程如下: 、輸入管腳:通過與之相連的邊界掃描寄存器把輸入管腳:通過與之相連的邊界掃描寄存器把信號(數(shù)據(jù))加載到該管腳中去。信號(數(shù)據(jù))加載到該管腳中去。 、輸出管腳:通過與之相連的邊界掃描輸出管腳:通過與之相連的邊界掃描 寄存器寄存器“捕獲捕獲”該管腳上的輸出信號。該管腳上的輸出信號。JTAG 基本原理基本原理注意:注意: 芯片芯片輸入輸出管腳上的邊界掃描寄存器單元可以相互連輸入輸出管腳上的邊界掃描寄存器單元可以相互連接起來,在芯片周圍形成一個(gè)邊界掃描鏈。接起來,在芯片周圍形成一個(gè)邊界掃描鏈。該鏈可以實(shí)現(xiàn)該

32、鏈可以實(shí)現(xiàn)串行的輸入輸出,通過相應(yīng)的時(shí)鐘信號和控制信號,可方串行的輸入輸出,通過相應(yīng)的時(shí)鐘信號和控制信號,可方便的觀察和控制在調(diào)試狀態(tài)下的芯片。便的觀察和控制在調(diào)試狀態(tài)下的芯片。No. 31Sep 2013TAP(Test Access Port):):TAP是一個(gè)通用的端口,利用它可以訪問是一個(gè)通用的端口,利用它可以訪問芯片提供的所有芯片提供的所有DR和和IR。對整個(gè)。對整個(gè)TAP的控制是通過的控制是通過TAP Controller來來完成的。完成的。 TAP包括包括5個(gè)信號接口:個(gè)信號接口: TCK(Test Clock Input) JTAG時(shí)鐘信號位。時(shí)鐘信號位。標(biāo)準(zhǔn)強(qiáng)制要求標(biāo)準(zhǔn)強(qiáng)制要

33、求 TMS(Test Mode Select) 測試模式選擇,通過該信號控制測試模式選擇,通過該信號控制JTAG狀態(tài)機(jī)的狀態(tài)。狀態(tài)機(jī)的狀態(tài)。TMS在在TCK的上的上升沿有效。升沿有效。標(biāo)準(zhǔn)強(qiáng)制要求標(biāo)準(zhǔn)強(qiáng)制要求 TDI(Test Data Input) 數(shù)據(jù)輸入口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過數(shù)據(jù)輸入口。所有要輸入到特定寄存器的數(shù)據(jù)都是通過TDI口一位一位串口一位一位串行輸入的(行輸入的(TCK驅(qū)動)。驅(qū)動)。標(biāo)準(zhǔn)里強(qiáng)制要求標(biāo)準(zhǔn)里強(qiáng)制要求TDO(Test Data Output) 數(shù)據(jù)輸出口。所有要從特定的寄存器中輸出的數(shù)據(jù)都是通過數(shù)據(jù)輸出口。所有要從特定的寄存器中輸出的數(shù)據(jù)都是通過TD

34、O口串行的口串行的一位一位輸出的(一位一位輸出的(TCK驅(qū)動)。驅(qū)動)。標(biāo)準(zhǔn)里強(qiáng)制要求標(biāo)準(zhǔn)里強(qiáng)制要求TRST(Test Reset Input) JTAG復(fù)位信號。復(fù)位信號。標(biāo)準(zhǔn)里是可選的標(biāo)準(zhǔn)里是可選的JTAG 基本原理基本原理No. 32Sep 2013JTAG的工作狀態(tài)機(jī)的工作狀態(tài)機(jī)No. 33Sep 2013JTAG的工作過程的工作過程 通過TAP接口,對數(shù)據(jù)寄存器(DR)進(jìn)行訪問的一般過程是: 通過指令寄存器(IR),選定一個(gè)需要訪問的數(shù)據(jù)寄存器; 把選定的數(shù)據(jù)寄存器連接到TDI和TDO之間; 由TCK驅(qū)動,通過TDI,把需要的數(shù)據(jù)輸入到選定的數(shù)據(jù)寄存器當(dāng)中去;同時(shí)把選定的數(shù)據(jù)寄存器中

35、的數(shù)據(jù)通過TDO讀出來No. 34Sep 2013 復(fù)習(xí)第四講:復(fù)習(xí)第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調(diào)試原理介紹嵌入式系統(tǒng)調(diào)試原理介紹 基于基于ARM7 內(nèi)核微處理器調(diào)試原理內(nèi)核微處理器調(diào)試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調(diào)試原理嵌入式系統(tǒng)開發(fā)和調(diào)試原理No. 35Sep 2013ARM Debug System ComponentsEmbeddedICELogicARM CoreS

36、OCJTAGPortRunControlUnitTAPe.g. Multi-ICE, RVIHost computer runningAXD (+TDT for trace) or RVDAddressControlEmbeddedICELogicARM CoreSOCEmbeddedTraceMacrocellTracePortJTAGPortTraceCapture UnitRunControlUnitDataTAPe.g. Multi-ICE, RVIe.g. MultiTrace, RVTHost computer runningAXD (+TDT for trace) or RVDA

37、ddressControlEmbeddedICELogicARM CoreSOCEmbeddedTraceMacrocellTracePortJTAGPortRunControlUnitDataTAPEmbeddedTrace Buffere.g. Multi-ICE, RVIHost computer runningAXD (+TDT for trace) or RVDAddressControlEmbeddedICELogicARM CoreSOCEmbeddedTraceMacrocellTracePortJTAGPortTraceCapture UnitRunControlUnitDa

38、taTAPEmbeddedTrace Buffere.g. Multi-ICE, RVIe.g. MultiTrace, RVTHost computer runningAXD (+TDT for trace) or RVDARM7TDMI處理器包括三大部分:處理器包括三大部分:ARM CPU Main Processor Logic 包括了對調(diào)試的硬件支持包括了對調(diào)試的硬件支持Embedded ICE-RT Logic 包括一組寄存器和比較器,用來產(chǎn)生調(diào)試異包括一組寄存器和比較器,用來產(chǎn)生調(diào)試異常,設(shè)置斷點(diǎn)和觀察點(diǎn)。常,設(shè)置斷點(diǎn)和觀察點(diǎn)。TAP Controller 通過通過JTAG接口來控

39、制和操作掃描鏈接口來控制和操作掃描鏈No. 36Sep 2013基于基于JTAG的片上的片上ICE 掃描鏈掃描鏈0:113位,包含數(shù)據(jù)總位,包含數(shù)據(jù)總線、控制信號、地址總線線、控制信號、地址總線 掃描鏈掃描鏈1:33位,為掃描鏈位,為掃描鏈0子子集,包括數(shù)據(jù)總線和集,包括數(shù)據(jù)總線和DBGBREAK信號信號 掃描鏈掃描鏈2:38位,主要用于訪問位,主要用于訪問ICE 邏輯部件中的各寄存器邏輯部件中的各寄存器 掃瞄鏈掃瞄鏈3: ARM7TDMI 和外圍設(shè)和外圍設(shè)備備 EmbeddedICE邏輯電路包括一邏輯電路包括一組寄存器和比較器,組寄存器和比較器,3個(gè)附件信個(gè)附件信號號p DBGREQ:調(diào)試請

40、求:調(diào)試請求p DBGACK:調(diào)試確認(rèn):調(diào)試確認(rèn)p BREAKPT:斷點(diǎn)信號:斷點(diǎn)信號 TAP控制器可以通過控制器可以通過JTAG接口接口控制各個(gè)硬件掃描鏈控制各個(gè)硬件掃描鏈 調(diào)試原理:調(diào)試原理: 如何設(shè)置斷點(diǎn)?,如何進(jìn)入如何設(shè)置斷點(diǎn)?,如何進(jìn)入調(diào)試狀態(tài),和正常運(yùn)行狀態(tài)有調(diào)試狀態(tài),和正常運(yùn)行狀態(tài)有什么區(qū)別?在調(diào)試狀態(tài)下如何訪問內(nèi)部什么區(qū)別?在調(diào)試狀態(tài)下如何訪問內(nèi)部寄存器、如何訪問內(nèi)存?寄存器、如何訪問內(nèi)存?No. 37Sep 2013EmbeddedICE-RT Logic的結(jié)構(gòu)的結(jié)構(gòu) 通過對通過對EmbeddedICE控制,以及通過對控制,以及通過對EmbeddedICE中寄存器的讀取,可以

41、獲得中寄存器的讀取,可以獲得ARM內(nèi)核的內(nèi)核的狀態(tài),為程序設(shè)置斷點(diǎn)觀察點(diǎn)以及讀取狀態(tài),為程序設(shè)置斷點(diǎn)觀察點(diǎn)以及讀取Debug通信通道通信通道(DCC)。)。 這里的這里的斷點(diǎn)斷點(diǎn)用來標(biāo)識某個(gè)地址上的一條指令,而用來標(biāo)識某個(gè)地址上的一條指令,而觀察點(diǎn)觀察點(diǎn)用來觀察某個(gè)地址上的數(shù)據(jù)變化,所以這二者是用來觀察某個(gè)地址上的數(shù)據(jù)變化,所以這二者是有區(qū)別的。有區(qū)別的。DCC用來完成主調(diào)試器和目標(biāo)機(jī)間的信息用來完成主調(diào)試器和目標(biāo)機(jī)間的信息發(fā)送。發(fā)送。No. 38Sep 2013EmbeddedICE的結(jié)構(gòu)的結(jié)構(gòu)EmbeddedICE的長度是的長度是38位,位,包括:包括: 32位數(shù)據(jù)位數(shù)據(jù) 5位地址,訪問寄

42、存器位地址,訪問寄存器 1個(gè)讀寫控制位個(gè)讀寫控制位EmbeddedICE的寄存器主要包的寄存器主要包括括Debug狀態(tài)和控制寄存器狀態(tài)和控制寄存器,Debug通信寄存器和斷點(diǎn)通信寄存器和斷點(diǎn)設(shè)置相關(guān)的寄存器設(shè)置相關(guān)的寄存器No. 39Sep 2013The EmbeddedICE Logic 通過掃瞄鏈2訪問ICE的寄存器,ICE包含三個(gè)部分 Debug Control and Status registers(調(diào)試寄存器(調(diào)試寄存器)p 控制ICE-RT p ICE的狀態(tài)p 判斷異常產(chǎn)生的原因 Two watchpoint units(觀察點(diǎn)單元)(觀察點(diǎn)單元)p 2組,每組3個(gè)寄存器(數(shù)據(jù)

43、,地址,控制)p 通過監(jiān)控?cái)?shù)據(jù)、地址和控制信號,判斷數(shù)據(jù)觀數(shù)據(jù)觀察點(diǎn)察點(diǎn)watchpointwatchpoint和程序斷點(diǎn)程序斷點(diǎn)breakpointbreakpointp 每一個(gè)組單元可以提供l 1 watchpoint,l 1 hardware breakpointhardware breakpoint in ROM or RAM, orl Multiple software breakpointssoftware breakpoints in RAM Debug Communications Channel(調(diào)試通信通道(調(diào)試通信通道)No. 40Sep 2013EmbeddedICE寄

44、存器格式及含義寄存器格式及含義Debug Control Register 格式:格式: DBGACK:用來控制用來控制DBGACK信號的值信號的值 DBGRQ:是是調(diào)試請求信號調(diào)試請求信號,通過將該信號置,通過將該信號置“1”,可以強(qiáng)制,可以強(qiáng)制ARM7TDMI暫停當(dāng)前的指令,進(jìn)入調(diào)試狀態(tài)暫停當(dāng)前的指令,進(jìn)入調(diào)試狀態(tài) INTDIS:用來控制中斷用來控制中斷 SBZ/RAZ:任何時(shí)候都必須被置任何時(shí)候都必須被置“0” Monitor Mode Enable:用來控制用來控制是否進(jìn)入是否進(jìn)入Monitor模式模式 EmbeddedICE-RT Disable:用來控制整個(gè)用來控制整個(gè)Embedd

45、edICE-RT,是啟是啟用還是禁用用還是禁用No. 41Sep 2013Debug Status Register 格式:格式: DBGACK:用來標(biāo)識當(dāng)前系統(tǒng)是否處于調(diào)試狀態(tài)。用來標(biāo)識當(dāng)前系統(tǒng)是否處于調(diào)試狀態(tài)。1,表示進(jìn)入,表示進(jìn)入;0,表示未進(jìn)入。,表示未進(jìn)入。 DBGRQ:用來標(biāo)識用來標(biāo)識DBGRQ信號的當(dāng)前狀態(tài)信號的當(dāng)前狀態(tài) IFEN:用來標(biāo)識系統(tǒng)的中斷控制狀態(tài):啟用還是禁用用來標(biāo)識系統(tǒng)的中斷控制狀態(tài):啟用還是禁用 cgenL:用來判斷當(dāng)前對調(diào)試器在調(diào)試狀態(tài)下用來判斷當(dāng)前對調(diào)試器在調(diào)試狀態(tài)下 對內(nèi)存的訪問是否對內(nèi)存的訪問是否完成完成 TBIT:該位用來判斷該位用來判斷ARM7TDMI

46、是從是從ARM 狀態(tài)還是狀態(tài)還是THUMB狀態(tài)狀態(tài)進(jìn)入到調(diào)試狀態(tài)的進(jìn)入到調(diào)試狀態(tài)的EmbeddedICE寄存器格式及含義寄存器格式及含義Abort Status Register 格式該寄存器的長度為該寄存器的長度為1,來判斷一個(gè)異常的產(chǎn)生的原因:斷點(diǎn)觸發(fā)?,來判斷一個(gè)異常的產(chǎn)生的原因:斷點(diǎn)觸發(fā)?觀察點(diǎn)觸發(fā)?還是一個(gè)真的異常?觀察點(diǎn)觸發(fā)?還是一個(gè)真的異常? No. 42Sep 2013實(shí)例實(shí)例:用用Scan Chain 2 設(shè)置設(shè)置Debug Control Register 第一步:選擇掃描鏈第一步:選擇掃描鏈2,將其連接到,將其連接到TDI,TDO 之間:之間: 通過通過TAP將將SCAN

47、_N指令寫入到指令寄存器當(dāng)中去,指令寫入到指令寄存器當(dāng)中去, TAP狀態(tài)轉(zhuǎn)狀態(tài)轉(zhuǎn)換如下:換如下:RUN-TEST/IDLESELECT-DR-SCAN SELECT-IR-SCAN CAPTURE-IR SHIFT-IR EXIT1-IR UPDATE-IR RUN-TEST/IDLE,在,在SHIFT-IR狀態(tài)下,將狀態(tài)下,將SCAN_N通過通過TDI寫到指寫到指令寄存器中去;接下來,訪問被令寄存器中去;接下來,訪問被SCAN_N指令連接到指令連接到TDI 和和TDO之間之間的的掃描鏈選擇寄存器掃描鏈選擇寄存器,通過將,通過將2寫入到掃描鏈選擇寄存器當(dāng)中去,以寫入到掃描鏈選擇寄存器當(dāng)中去,以

48、將掃描鏈將掃描鏈2連接到連接到TDI和和TDO之間。將之間。將2寫入掃描鏈選擇寄存器的狀態(tài)寫入掃描鏈選擇寄存器的狀態(tài)轉(zhuǎn)換如下:轉(zhuǎn)換如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在在SHIFT-DR狀態(tài)下,將數(shù)值狀態(tài)下,將數(shù)值2通過通過TDI寫到掃描鏈選擇寄存器當(dāng)中去寫到掃描鏈選擇寄存器當(dāng)中去。第二步:將第二步:將Scan Chain 2置為內(nèi)測試模式置為內(nèi)測試模式 用用INTEST 指令實(shí)現(xiàn)該操作,指令寫入與指令實(shí)現(xiàn)該操作,指令寫入與SCAN_N指令的過程類似指令的過程

49、類似No. 43Sep 2013第三步:第三步: 寫寫Debug Control Register 假設(shè)要將假設(shè)要將Debug Control Register的的6位全部置位全部置“1”,按照掃描鏈按照掃描鏈2的格式,需要寫入到掃描鏈的格式,需要寫入到掃描鏈2第序列應(yīng)該為:第序列應(yīng)該為: 1,00000,0000,0000,0000,0000,0000,0000,0011,1111 1表示寫操作,表示寫操作,00000標(biāo)識的是標(biāo)識的是Debug Control Register的地址,中間的地址,中間32位是要寫入到位是要寫入到Debug Control Register的數(shù)據(jù)。因的數(shù)據(jù)。因

50、Debug Control Register長度為長度為6,所,所以只有低以只有低6位的數(shù)據(jù)序列位的數(shù)據(jù)序列111111有效。有效。在在SHIFT-DR狀態(tài)下,通過狀態(tài)下,通過38個(gè)個(gè)TCK時(shí)鐘驅(qū)動,就可以時(shí)鐘驅(qū)動,就可以將上面的序列串行輸入到掃描鏈將上面的序列串行輸入到掃描鏈2當(dāng)中去。當(dāng)中去。實(shí)例實(shí)例:用用Scan Chain 2 設(shè)置設(shè)置Debug Control RegisterNo. 44Sep 2013 EmbeddedICE有兩個(gè)WtchPoint單元。下面介紹一下WatchPoint寄存器的使用: EmbeddedICE的一個(gè)主要作用是可以在ARM程序中設(shè)置軟件或硬件斷點(diǎn)。在Em

51、beddedICE中,集成了一個(gè)比較器,負(fù)責(zé)把ARM處理器取指的地址A31:0,數(shù)據(jù) D31:0以及一些控制信號與EmbeddedICE中WatchPoint寄存器中設(shè)置的數(shù)值相比較(具體說應(yīng)該是進(jìn)行與或運(yùn)算),比較結(jié)果用來確定輸出一個(gè)ARM斷點(diǎn)(BreakPoint)信號。具體運(yùn)算關(guān)系如下公式所描述:EmbeddedICE的斷點(diǎn)的斷點(diǎn)/觀察點(diǎn)設(shè)置觀察點(diǎn)設(shè)置Av31:0,Cv4:0 XOR A31:0,C4:0 ORAm31:0,Cm4:0 = 0 xFFFFFFFF當(dāng)上述表達(dá)式值為真時(shí),斷點(diǎn)/觀察點(diǎn)信號有效,ARM內(nèi)核進(jìn)入Debug模式No. 45Sep 2013Watchpoints(數(shù)據(jù)

52、觀察點(diǎn))(數(shù)據(jù)觀察點(diǎn))ControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorWatchpointD31:00 xF0000 x00 xffffffffData write0 xF000MemoryLocation to be watched讀寫完成訪問的數(shù)據(jù)以后進(jìn)入調(diào)試狀態(tài):A watchpoint :當(dāng)約定存儲器被約定的方式訪問以后觸發(fā)斷點(diǎn);這個(gè)例子說明當(dāng)?shù)刂? xF000 被寫入的時(shí)候產(chǎn)生的觀察點(diǎn)每一個(gè)觀察點(diǎn)單元可以產(chǎn)生一個(gè)數(shù)據(jù)觀察點(diǎn)斷點(diǎn)No. 46Sep 2013Hardware Br

53、eakpoints(硬件斷點(diǎn))(硬件斷點(diǎn))0 x8000ARM - 0 x3Thumb - 0 x10 xffffffffOpcode fetch0 x8000MemoryBreakpoint to be set hereControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:0A hardware breakpoint :當(dāng)程序再約定地址的取出指令時(shí)候,觸發(fā)斷點(diǎn)這個(gè)例子說明:在0 x8000地址取指令的時(shí)候產(chǎn)生程序斷點(diǎn) Hardware breakpoints c

54、an can be set in RAM or ROM.Each watchpoint unit can be used to set one (and only one) hardware breakpoint.No. 47Sep 2013Software Breakpoints(軟件斷點(diǎn))軟件斷點(diǎn))Memory0 xffffffff0 xeeeeeeee0 x0Opcode fetchControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:01. Read an

55、d store opcode2. Write “special” valueA software breakpoint:軟:軟件斷點(diǎn)是約定的一條指令被件斷點(diǎn)是約定的一條指令被取指的時(shí)候觸發(fā)程序斷點(diǎn)(取指的時(shí)候觸發(fā)程序斷點(diǎn)(這條指令可以在任何地址)這條指令可以在任何地址) i這個(gè)例子說明了軟件斷點(diǎn)實(shí)現(xiàn)的過程首先在Data mask寄存器中寫入特定指令,Addr Mask為0 xffffffff ,當(dāng)取值到特殊指令的時(shí)候產(chǎn)生斷點(diǎn)。只能在RAM中產(chǎn)生。Each watchpoint unit can be used to set an unlimited number of software bre

56、akpoints.(The “special” value)當(dāng)需要在某地址代碼處設(shè)置軟件斷點(diǎn)的時(shí)候,仿真器會先將此處代碼進(jìn)行備份保護(hù),然后將預(yù)先設(shè)定好的斷點(diǎn)特征值(一般為0 x0000等不易與代碼混淆的值)寫入此地址,覆蓋原來的代碼數(shù)據(jù)。 No. 48Sep 2013產(chǎn)生硬件斷點(diǎn):產(chǎn)生硬件斷點(diǎn):p觸發(fā),取指地址觸發(fā)觸發(fā),取指地址觸發(fā)p屏蔽數(shù)據(jù),存入地址屏蔽數(shù)據(jù),存入地址p2個(gè)點(diǎn)個(gè)點(diǎn)產(chǎn)生數(shù)據(jù)觀察點(diǎn)產(chǎn)生數(shù)據(jù)觀察點(diǎn)p對應(yīng)地址數(shù)據(jù)讀取完成以后觸發(fā)對應(yīng)地址數(shù)據(jù)讀取完成以后觸發(fā)p屏蔽數(shù)據(jù),存入地址屏蔽數(shù)據(jù),存入地址p2個(gè)點(diǎn)個(gè)點(diǎn)產(chǎn)生軟件斷點(diǎn)產(chǎn)生軟件斷點(diǎn)p對應(yīng)數(shù)據(jù)觸發(fā)對應(yīng)數(shù)據(jù)觸發(fā)p屏蔽地址,存入特殊數(shù)據(jù)屏蔽地

57、址,存入特殊數(shù)據(jù)Xp斷點(diǎn)地址插入特殊數(shù)據(jù)斷點(diǎn)地址插入特殊數(shù)據(jù)X,改寫存儲器,所以只能在改寫存儲器,所以只能在RAM中設(shè)置中設(shè)置p無窮多的無窮多的No. 49Sep 2013在調(diào)試狀態(tài)訪問寄存器和存儲空間在調(diào)試狀態(tài)訪問寄存器和存儲空間ARM7TDMI已經(jīng)進(jìn)入到調(diào)試狀態(tài)(DBGRQ、斷點(diǎn)、觀察點(diǎn))。通過掃瞄鏈1 在流水線中插入指令,系統(tǒng)運(yùn)行在DCLK,不是MCLK(系統(tǒng)正常時(shí)鐘)在調(diào)試狀態(tài)下支持?jǐn)?shù)據(jù)處理指令、Load/Store指令、MSR,MRS指令。掃描鏈1中的第33位,BREAKPT輸入,在調(diào)試過程當(dāng)中有很重要的作用重要的作用p如果BREAKPT置0,意味著下一條指令以調(diào)試速度執(zhí)行(DCLK

58、驅(qū)動)p如果BREAKPT置1,意味著下一條指令以系統(tǒng)速度執(zhí)行(MCLK驅(qū)動)No. 50Sep 2013在調(diào)試狀態(tài)讀取在調(diào)試狀態(tài)讀取/修改寄存器修改寄存器讀取讀取R0的值的值p插入指令STR R0, R0 & BREAKPT = 0: 這步相當(dāng)于指令STR R0, R0的取指令周期(3級流水線); p 插入空指令MOV R0, R0 & BREAKPT = 0: 這一步讀取新指令MOV R0, R0,同時(shí),相當(dāng)于指令STR R0, R0的譯指令周期(3級流水線); p插入空指令MOV R0, R0 & BREAKPT = 0: 這一步讀取新指令MOV R0, R0,同時(shí),插入的STR R0,

59、 R0指令開始執(zhí)行(3級流水線)。p通過掃描鏈1讀出捕獲的數(shù)據(jù)總線上的數(shù)據(jù): 修改R0的值p插入指令LDR R0, R0& BREAKPT = 0: p插入兩條空指令p通過掃瞄鏈1放數(shù)據(jù)在數(shù)據(jù)總線上p插入一條空指令No. 51Sep 2013調(diào)試狀態(tài)下讀寫內(nèi)存調(diào)試狀態(tài)下讀寫內(nèi)存Read 10 words from address 0 x8000 onwardsMOV r0, #0 x8000LDMIA r0!, r1-r10 - system speedSTMIA r0, r1-r10 - debug speedTDITCKDatabusARMTCKregistersDebugspeedDat

60、abusARMxDTDOr1-r1013MCLKSystemspeedDatabusARM2registersPipelineNo. 52Sep 2013 復(fù)習(xí)第四講:復(fù)習(xí)第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調(diào)試原理介紹嵌入式系統(tǒng)調(diào)試原理介紹 基于基于ARM7 內(nèi)核微處理器調(diào)試原理內(nèi)核微處理器調(diào)試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調(diào)試原理嵌入式系統(tǒng)開發(fā)和調(diào)試原理No. 53Sep 2013

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論