![第六講 ARM處理器調試原理(2013)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/d90d2011-6fcd-4dc5-9948-b1557634f711/d90d2011-6fcd-4dc5-9948-b1557634f7111.gif)
![第六講 ARM處理器調試原理(2013)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/d90d2011-6fcd-4dc5-9948-b1557634f711/d90d2011-6fcd-4dc5-9948-b1557634f7112.gif)
![第六講 ARM處理器調試原理(2013)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/d90d2011-6fcd-4dc5-9948-b1557634f711/d90d2011-6fcd-4dc5-9948-b1557634f7113.gif)
![第六講 ARM處理器調試原理(2013)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/d90d2011-6fcd-4dc5-9948-b1557634f711/d90d2011-6fcd-4dc5-9948-b1557634f7114.gif)
![第六講 ARM處理器調試原理(2013)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/d90d2011-6fcd-4dc5-9948-b1557634f711/d90d2011-6fcd-4dc5-9948-b1557634f7115.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、No. 1Sep 2013 復習第四講:復習第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調試原理介紹嵌入式系統(tǒng)調試原理介紹 基于基于ARM7 內核微處理器調試原理內核微處理器調試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調試原理嵌入式系統(tǒng)開發(fā)和調試原理No. 2Sep 2013ARM指令集的特點指令集的特點 所有的所有的ARM指令都是指令都是32位寬,在存儲器中以位寬,在存儲器中以4字節(jié)的邊界對齊字節(jié)的邊
2、界對齊 3地址的數據處理指令(即兩個源操作數和結果寄存器都獨立設定)地址的數據處理指令(即兩個源操作數和結果寄存器都獨立設定) LOAD/STORE架構,包含非常強大的多寄存器架構,包含非常強大的多寄存器Load和和Store指令指令 能夠在單時鐘周期的單條指令來完曾一項普通移位操作和一項普通的能夠在單時鐘周期的單條指令來完曾一項普通移位操作和一項普通的ALU操作操作 可以通過協(xié)處理器來擴展新的寄存器和數據類型可以通過協(xié)處理器來擴展新的寄存器和數據類型 指令可條件執(zhí)行指令可條件執(zhí)行 ARM指令的分類指令的分類p 數據處理指令(數據處理指令( 16條數據處理和乘法)條數據處理和乘法)p 分支指令
3、分支指令 (B,BL,BX)p 數據傳送指令(訪問存儲器)數據傳送指令(訪問存儲器)LDR/STR, 批量傳送批量傳送p 其他指令其他指令l 軟件中斷軟件中斷SWI指令指令l 程序狀態(tài)寄存器指令程序狀態(tài)寄存器指令No. 3Sep 2013ARM匯編語言偽操作匯編語言偽操作在在ARM匯編語言程序中,有一些特殊的助記符,這些助記匯編語言程序中,有一些特殊的助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對應的操作碼,通常符與指令系統(tǒng)的助記符不同,沒有相對應的操作碼,通常稱這些特殊助記符為偽操作標示符(稱這些特殊助記符為偽操作標示符(directive),其完成),其完成的操作稱為偽操作。的操作稱為
4、偽操作。 符號定義(符號定義(Symbol Definition)偽操作)偽操作 數據定義(數據定義(Data Definition)偽操作)偽操作 匯編控制(匯編控制(Assembly Control)偽操作)偽操作 信息報告(信息報告(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將一個32位的立即數或者一個地址值讀取到寄存器中。大范圍的地址讀取。NOPNOP在匯編時將被替換成ARM中的空操作。No. 5Sep 2013ATPCS介紹寄存器的使用規(guī)則介紹寄存器的使用規(guī)則 定義:定義:p ATPCS(arm-thumb procedure call standard)是)是 子程序之間的調用設定一定的規(guī)子程序之間的調用設定一定的規(guī)則,則,ATPCS就是就是ARM 程序中的子程序調用的基本規(guī)則程序中的子程序調用的基本規(guī)則 PCS
6、:p 規(guī)定了應用程序的函數可以如何分開地寫,分開地編譯,最后將它們連接在一起規(guī)定了應用程序的函數可以如何分開地寫,分開地編譯,最后將它們連接在一起p 定義了一套有關過程(函數)調用者與被調用者之間的協(xié)議。定義了一套有關過程(函數)調用者與被調用者之間的協(xié)議。p PCS規(guī)范強制實現如下約定:調用函數如何傳參(即壓棧方法,以何種方式存放參數規(guī)范強制實現如下約定:調用函數如何傳參(即壓棧方法,以何種方式存放參數),被調用函數如何獲取參數,以何種方式傳遞函數返回值。),被調用函數如何獲取參數,以何種方式傳遞函數返回值。 基本的基本的ATPCS包含的內容包含的內容p 各個寄存器的使用規(guī)則和相應的名稱:各
7、個寄存器的使用規(guī)則和相應的名稱:l R0R3 參數寄存器參數寄存器l R4R11 通用變量寄存器通用變量寄存器p 數據棧的使用規(guī)則:數據棧是數據棧的使用規(guī)則:數據棧是FD(滿遞減堆棧)(滿遞減堆棧)p 參數傳遞的規(guī)則:對于參數個數可變的子程序,但參數不超過參數傳遞的規(guī)則:對于參數個數可變的子程序,但參數不超過4個時,可以使用寄存器個時,可以使用寄存器R0R3來傳遞參數;當參數超過來傳遞參數;當參數超過4個時,還可以使用數據棧來傳遞參數。個時,還可以使用數據棧來傳遞參數。No. 6Sep 2013 復習第四講:復習第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:
8、交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調試原理介紹嵌入式系統(tǒng)調試原理介紹 基于基于ARM7 內核微處理器調試原理內核微處理器調試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調試原理嵌入式系統(tǒng)開發(fā)和調試原理No. 7Sep 2013嵌入式系統(tǒng)的開發(fā)過程嵌入式系統(tǒng)的開發(fā)過程No. 8Sep 2013PC 上的調試上的調試程序編寫,項目管理,編譯,調試都在同一臺計算機上完程序編寫,項目管理,編譯,調試都在同一臺計算機上完成(成(IDE, Integrated Design Environ
9、ment)pMS VCpMS VBpBorland C+ Builder一般是通過在斷點插入相關的調試軟陷指令來實現調試功一般是通過在斷點插入相關的調試軟陷指令來實現調試功能的能的.No. 9Sep 2013交叉編譯環(huán)境交叉編譯環(huán)境 宿主機宿主機p 開發(fā)機器開發(fā)機器(包含開發(fā)用軟件編輯器包含開發(fā)用軟件編輯器,調試器調試器 ,編譯器編譯器,匯編器匯編器) 目標機目標機p 程序運行的機器程序運行的機器 宿主機宿主機=目標機目標機 稱為本地編譯稱為本地編譯 (VB編寫應用程序編寫應用程序) “交叉編譯交叉編譯”是指是指 宿主機和目標機是不同的系統(tǒng)宿主機和目標機是不同的系統(tǒng)p 使用使用PC 機是機是X
10、86系統(tǒng)系統(tǒng),而目標機是而目標機是ARM,單片機或者其他系統(tǒng)單片機或者其他系統(tǒng)嵌入式應用軟件開發(fā)要使用交叉嵌入式應用軟件開發(fā)要使用交叉開發(fā)環(huán)境。開發(fā)環(huán)境。p 交叉開發(fā)環(huán)境集成了編輯器、交叉編譯器、交叉調試器、仿真軟件交叉開發(fā)環(huán)境集成了編輯器、交叉編譯器、交叉調試器、仿真軟件(simulator)、工程管理器、工程管理器于一體于一體 p 商業(yè)化的界面友好的同商業(yè)化的界面友好的同Microsoft Visual Studio可視化開發(fā)環(huán)境相似,免費如可視化開發(fā)環(huán)境相似,免費如GNU工具鏈運工具鏈運行在字符界面下行在字符界面下 p 交叉開發(fā)的硬件環(huán)境包括宿主機和目標板。交叉開發(fā)的硬件環(huán)境包括宿主機和
11、目標板。No. 10Sep 2013?嵌入式系統(tǒng)調試的需求嵌入式系統(tǒng)調試的需求 Run Control(運行控制)(運行控制)p Set watchpoints on data accesses(觀察感(觀察感興趣的數據)興趣的數據)p Set breakpoints on instructions(指令斷點(指令斷點)p Single step through code(單步調試)(單步調試) 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(存儲器訪問歷史數(存儲器訪問歷史數據)據)No. 11Sep 2013嵌入式系統(tǒng)調試的一般方法嵌入式系統(tǒng)調試的一般方法基于交叉編譯環(huán)境下的調試基于交叉編譯環(huán)境下的調試調試方法解決調試器與被調試程序之間如何通信以達到調試目標p能夠獲取處理器數據總線、地址總線,處能夠獲取處理器數據總線、地址總線,處
13、理器狀態(tài)等信息,以便在選中的數據點(理器狀態(tài)等信息,以便在選中的數據點( watchpoints)和指令點(和指令點(breakpoints)進入調試狀態(tài))進入調試狀態(tài)p能夠獲取處理器內核寄存器的信息能夠獲取處理器內核寄存器的信息p能夠插入指令運行能夠插入指令運行p能夠訪問存儲器的內容能夠訪問存儲器的內容p記錄指令記錄指令/數據的執(zhí)行和訪問記錄數據的執(zhí)行和訪問記錄No. 12Sep 2013ARM 調試系統(tǒng)組件調試系統(tǒng)組件執(zhí)行AXD調試器的主機 (ADS的一部分)和 Multi-ICE server協(xié)議轉換器(Multi-ICE)跟蹤接口單元(MultiTrace)開發(fā)板(Integrator
14、 Core Module)Trace PortJTAG Port并口串口l/以太網No. 13Sep 2013交叉編譯環(huán)境的內容交叉編譯環(huán)境的內容 集成開發(fā)系統(tǒng)提供高效明晰的圖形化的嵌入式應用軟件開發(fā)平臺,包括集成開發(fā)系統(tǒng)提供高效明晰的圖形化的嵌入式應用軟件開發(fā)平臺,包括一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調試工具一整套完備的面向嵌入式系統(tǒng)的開發(fā)和調試工具 。 一般包括編輯器、編譯器、連接器、調試器、工程管理器和底層調試接一般包括編輯器、編譯器、連接器、調試器、工程管理器和底層調試接口設備(口設備(BDM/JTAG仿真器)等仿真器)等 No. 14Sep 2013 復習第四講:復習第四講:ARM
15、指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調試原理介紹嵌入式系統(tǒng)調試原理介紹 基于基于ARM7 內核微處理器調試原理內核微處理器調試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調試原理嵌入式系統(tǒng)開發(fā)和調試原理No. 15Sep 2013調試方法調試方法調試有四種基本方法調試有四種基本方法p模擬調試(模擬調試(Simulator)p軟件調試(軟件調試(Debugger)p全仿真調試(全仿真調試(Emulator)pJTA
16、G調試(調試(JTAG Debugger)調試輔助工具調試輔助工具示波器、邏輯分析儀示波器、邏輯分析儀與硬件關系密切與硬件關系密切No. 16Sep 2013模擬調試方法模擬調試方法調試工具和待調試的嵌入式軟件都在主機上運行,由主機調試工具和待調試的嵌入式軟件都在主機上運行,由主機提供一個模擬的目標運行環(huán)境,可以進行語法和邏輯上的提供一個模擬的目標運行環(huán)境,可以進行語法和邏輯上的調試。調試。p優(yōu)點:簡單方便,不需要目標板,成本低優(yōu)點:簡單方便,不需要目標板,成本低p缺點:功能非常有限,無法實時調試缺點:功能非常有限,無法實時調試大多數調試工具都提供大多數調試工具都提供Simulator功能功能
17、No. 17Sep 2013指令集模擬器指令集模擬器 利用在宿主機(一般是利用在宿主機(一般是PC)的資源構建一個虛擬的目標的資源構建一個虛擬的目標機系統(tǒng),該系統(tǒng)通過解釋執(zhí)機系統(tǒng),該系統(tǒng)通過解釋執(zhí)行目標處理器的二進制代碼行目標處理器的二進制代碼來仿真運行目標程序來仿真運行目標程序pARM Armulator模擬運模擬運行行ARM指令系統(tǒng)指令系統(tǒng)虛擬機構建的環(huán)境:寄存器,存儲器等等目標機的RTOSApp1App2App n.No. 18Sep 2013模擬器的改進虛擬原型模擬器的改進虛擬原型ARM ADSRDI接口接口ArmulatorMultiICE ServerAngleArmulator
18、Mem 接口虛擬的虛擬的AMBA C語言模型語言模型EMI 模型模型SDRAM 模型模型中斷控制器模型中斷控制器模型其他模塊模型其他模塊模型用戶自己編寫的模型用戶自己編寫的模型No. 19Sep 2013ARMULATOR 軟件仿真器軟件仿真器ARMulator(ARM仿真器):是一個指令級的仿真程序,仿真器):是一個指令級的仿真程序,運行在主機上運行在主機上p沒有硬件的情況下,調試應用程序沒有硬件的情況下,調試應用程序pARMulator可以報告各指令執(zhí)行時的機器周期,所以也可以用來進行應用可以報告各指令執(zhí)行時的機器周期,所以也可以用來進行應用程序的性能分析。程序的性能分析。ARMulato
19、r 提供了一套擴展機制提供了一套擴展機制p處理器核模型:能夠仿真現有的各種處理器核模型:能夠仿真現有的各種ARM核,包括核,包括Thumb指令集指令集p存儲器接口:它能夠模擬目標存儲器系統(tǒng)的各種特征。提供各種原型以支存儲器接口:它能夠模擬目標存儲器系統(tǒng)的各種特征。提供各種原型以支持快速建模,但接口需要全定制以實現需要的細節(jié)持快速建模,但接口需要全定制以實現需要的細節(jié)p協(xié)處理器接口:它支持定制的協(xié)處理器模型協(xié)處理器接口:它支持定制的協(xié)處理器模型p操作系統(tǒng)接口:使個別系統(tǒng)調用可以由主機處理,或在操作系統(tǒng)接口:使個別系統(tǒng)調用可以由主機處理,或在ARM模型上模擬模型上模擬實現了完整的片上系統(tǒng)(SOC)
20、的軟硬件協(xié)同設計驗證No. 20Sep 2013OS 模擬器的調試方法模擬器的調試方法 除了指令集模擬器還有除了指令集模擬器還有操作系統(tǒng)模擬器操作系統(tǒng)模擬器pSymbian OS 模擬器模擬器pPocketPC 模擬器模擬器p由于在由于在OS層面上進層面上進行仿真,應用程序運行仿真,應用程序運行在行在PC的二進制代的二進制代碼,所以在目標系統(tǒng)碼,所以在目標系統(tǒng)上需要重新編譯上需要重新編譯App1App2App n.由PC OS模擬的RTOS環(huán)境:任務,任務間通信No. 21Sep 2013軟件調試方法軟件調試方法(DebuggerDebugger) 主機和目標板通過某種接口(通常是串口)連接,
21、主機上提主機和目標板通過某種接口(通常是串口)連接,主機上提供調試界面,待調試軟件下載到目標板上運行。供調試界面,待調試軟件下載到目標板上運行。 這種方式的先決條件是要在這種方式的先決條件是要在Host和和Target之間建立起通信之間建立起通信聯系(目標板上稱為監(jiān)控程序聯系(目標板上稱為監(jiān)控程序Monitor)p優(yōu)點:優(yōu)點:純軟件,價格較低,簡單,軟件調試能力較強純軟件,價格較低,簡單,軟件調試能力較強p缺點:缺點:需要事先燒制需要事先燒制Monitor(往往需多次試驗才能成功(往往需多次試驗才能成功)且目標板工作正常,功能有限,特別是硬件調試能力較)且目標板工作正常,功能有限,特別是硬件調
22、試能力較差。差。PCTargetMonitor串口No. 22Sep 2013基于調試代理基于調試代理(Angel)的調試方法的調試方法 Angel是一段駐留在開發(fā)板ROM中的一段程序,系統(tǒng)Boot后,Angle接管整個系統(tǒng)并初始化系統(tǒng)和通信接口. Angel通過一定的通信協(xié)議(ADP協(xié)議)與主機的Debugger通信. Debugger通過特定的命令通知Angel將用戶調試的程序下載到目標板的SDRAM中的特定地址,并可以按照Debugger的要求將控制權交給相應的代碼地址 對于用戶設置的斷點,Angel會在斷點的位置插入一條軟陷指令(當然在插入之前會保存原來的那條指令),當用戶的程序執(zhí)行到
23、斷點時,系統(tǒng)會產生一個軟陷異常,這時可以由Angel接管系統(tǒng),并將系統(tǒng)當前的寄存器的值傳給主機Debugger 如果主機Debugger需要查看內存,也將通過Angel讀取后將存儲器的值上傳給主機。通信接口flashsdram串口電纜以太網USBCPUNo. 23Sep 2013Angel調試的優(yōu)缺點調試的優(yōu)缺點 Angel調試的缺點:調試的缺點:p 需要占用目標板的資源:處理器,存儲器和通信接口需要占用目標板的資源:處理器,存儲器和通信接口p 沒有辦法在沒有辦法在ROM區(qū)設置斷點區(qū)設置斷點p 難以跟蹤數據變化難以跟蹤數據變化 Angel調試的優(yōu)點:調試的優(yōu)點:p 不需要外的調試硬件,成本低廉
24、不需要外的調試硬件,成本低廉No. 24Sep 2013全仿真調試方法全仿真調試方法全仿真調試(全仿真調試(EmulatorEmulator) 這種方式用仿真器完全取代目標板上的這種方式用仿真器完全取代目標板上的MCU,因而目標系,因而目標系統(tǒng)對開發(fā)者來說完全是透明的、可控的。仿真器與目標板通統(tǒng)對開發(fā)者來說完全是透明的、可控的。仿真器與目標板通過仿真頭連接,與主機有串口、并口、網口或過仿真頭連接,與主機有串口、并口、網口或USB口等連接口等連接方式。由于仿真器自成體系,調試時既可以連接目標板,也方式。由于仿真器自成體系,調試時既可以連接目標板,也可以不連接目標板(可以不連接目標板(Stand
25、alone)。)。p優(yōu)點:優(yōu)點:功能非常強大,軟硬件均可做到完全實時在線調功能非常強大,軟硬件均可做到完全實時在線調試試p缺點:缺點:價格昂貴。價格昂貴。No. 25Sep 2013采用采用在線調試方法的優(yōu)缺點在線調試方法的優(yōu)缺點 優(yōu)點p 一般內存采用雙口內存,能在執(zhí)行時同時看到數據的變化p 內部附有功能強大的分析器,可以分析狀態(tài),效率和時序等p 采用存儲器斷點技術實現硬件斷點,數量不受限制p 它不但可以往前執(zhí)行,還可以倒退執(zhí)行,所有信息都可以記錄起來,包括計時器狀態(tài)、工作切換狀態(tài)、內存狀態(tài)、寄存器狀態(tài)和變量等信息,而且全部是實時的。p 這種調試方法在沒有片內調試邏輯的微處理器中,尤其式單片機
26、系統(tǒng)中得到廣泛的采用. 缺點p在線仿真器具有侵入性,其中的嵌入式微處理器并不在線仿真器具有侵入性,其中的嵌入式微處理器并不是目標系統(tǒng)中的處理器,電氣特性不同,無法真實反是目標系統(tǒng)中的處理器,電氣特性不同,無法真實反映實際時序。映實際時序。p在線仿真器擁有自己的目標處理器、在線仿真器擁有自己的目標處理器、RAM、ROM和自和自己的嵌入式軟件,所以是非常昂貴的己的嵌入式軟件,所以是非常昂貴的(由其對于高速設由其對于高速設備而言備而言)。No. 26Sep 2013基于在線仿真器(在線調試)的調試方法基于在線仿真器(在線調試)的調試方法 在線仿真器提供自己的處理器和存儲器不依賴目標系統(tǒng)的處理器和內存
27、 仿真器上的處理器可以是一個相同的芯片,也可以是一個有更多引腳的變型芯片(對內部狀態(tài)有更高的可觀察性)。 仿真器上還有NMI(不可屏蔽中斷) 控制邏輯,存儲器控制邏輯,映象ROM,映象RAM等其他各種硬件資源, 所有的硬件資源由運行在主桌面系統(tǒng)上的軟件來管理。 flashsdramCPU插座通信接口仿真器仿真器CPU控制邏輯CPU電纜No. 27Sep 2013關于在線調試的進一步的思考關于在線調試的進一步的思考 既然通過片外的控制邏輯可以實現對芯片的調試既然通過片外的控制邏輯可以實現對芯片的調試,為什么為什么不把這個控制邏輯作在片內不把這個控制邏輯作在片內,從而省掉仿真器呢從而省掉仿真器呢?
28、p At Speed 調試方案:調試方案:因為調試邏輯在片上p 增加芯片成本:增加芯片成本:對于32位處理器,增加比例有限!p 如何從芯片外獲得調試的控制權如何從芯片外獲得調試的控制權?會不會增加額外的封裝成本會不會增加額外的封裝成本?:可以復用JTAG測試接口No. 28Sep 2013JTAG調試方法調試方法JTAGJTAG調試調試 這種方式有一個硬件調試體。該硬件調試體與目標板通過這種方式有一個硬件調試體。該硬件調試體與目標板通過JTAG調試接口相連,與主機通過串口、并口、網口或調試接口相連,與主機通過串口、并口、網口或USB口相連。待調試軟件通過口相連。待調試軟件通過JTAG調試器下載
29、到目標板上運行。調試器下載到目標板上運行。p優(yōu)點:優(yōu)點:方便、簡單,無須制作方便、簡單,無須制作Monitor,軟硬件均可調試,軟硬件均可調試p缺點:缺點:需要目標板,且目標板工作基本正常(至少需要目標板,且目標板工作基本正常(至少MCU工作正常),僅適用于有調試接口的芯片工作正常),僅適用于有調試接口的芯片TargetPC接口JTAG DebuggerNo. 29Sep 2013JTAG 基本原理基本原理IEEE Standard 1149.1(JOINT TEST ACTION GROUP) - Test Access Port and Boundary-Scan Architecture
30、邊界掃描(邊界掃描(Boundary-Scan):):基本思想:在靠近芯片輸入基本思想:在靠近芯片輸入/輸出管腳上增加一個移位寄存輸出管腳上增加一個移位寄存器單元(邊界掃描寄存器)。器單元(邊界掃描寄存器)。正常狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正正常狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正常的運行不會受到任何的影響。常的運行不會受到任何的影響。 TAP :控制邊界掃描鏈:控制邊界掃描鏈No. 30Sep 2013 調試狀態(tài)下,邊界掃描寄存器將芯片和外的輸入輸出隔調試狀態(tài)下,邊界掃描寄存器將芯片和外的輸入輸出隔離開,通過這些邊界掃描寄存器可以實現對芯片輸入輸出離開,通過這些
31、邊界掃描寄存器可以實現對芯片輸入輸出信號的控制。具體控制過程如下:信號的控制。具體控制過程如下: 、輸入管腳:通過與之相連的邊界掃描寄存器把輸入管腳:通過與之相連的邊界掃描寄存器把信號(數據)加載到該管腳中去。信號(數據)加載到該管腳中去。 、輸出管腳:通過與之相連的邊界掃描輸出管腳:通過與之相連的邊界掃描 寄存器寄存器“捕獲捕獲”該管腳上的輸出信號。該管腳上的輸出信號。JTAG 基本原理基本原理注意:注意: 芯片芯片輸入輸出管腳上的邊界掃描寄存器單元可以相互連輸入輸出管腳上的邊界掃描寄存器單元可以相互連接起來,在芯片周圍形成一個邊界掃描鏈。接起來,在芯片周圍形成一個邊界掃描鏈。該鏈可以實現該
32、鏈可以實現串行的輸入輸出,通過相應的時鐘信號和控制信號,可方串行的輸入輸出,通過相應的時鐘信號和控制信號,可方便的觀察和控制在調試狀態(tài)下的芯片。便的觀察和控制在調試狀態(tài)下的芯片。No. 31Sep 2013TAP(Test Access Port):):TAP是一個通用的端口,利用它可以訪問是一個通用的端口,利用它可以訪問芯片提供的所有芯片提供的所有DR和和IR。對整個。對整個TAP的控制是通過的控制是通過TAP Controller來來完成的。完成的。 TAP包括包括5個信號接口:個信號接口: TCK(Test Clock Input) JTAG時鐘信號位。時鐘信號位。標準強制要求標準強制要
33、求 TMS(Test Mode Select) 測試模式選擇,通過該信號控制測試模式選擇,通過該信號控制JTAG狀態(tài)機的狀態(tài)。狀態(tài)機的狀態(tài)。TMS在在TCK的上的上升沿有效。升沿有效。標準強制要求標準強制要求 TDI(Test Data Input) 數據輸入口。所有要輸入到特定寄存器的數據都是通過數據輸入口。所有要輸入到特定寄存器的數據都是通過TDI口一位一位串口一位一位串行輸入的(行輸入的(TCK驅動)。驅動)。標準里強制要求標準里強制要求TDO(Test Data Output) 數據輸出口。所有要從特定的寄存器中輸出的數據都是通過數據輸出口。所有要從特定的寄存器中輸出的數據都是通過TD
34、O口串行的口串行的一位一位輸出的(一位一位輸出的(TCK驅動)。驅動)。標準里強制要求標準里強制要求TRST(Test Reset Input) JTAG復位信號。復位信號。標準里是可選的標準里是可選的JTAG 基本原理基本原理No. 32Sep 2013JTAG的工作狀態(tài)機的工作狀態(tài)機No. 33Sep 2013JTAG的工作過程的工作過程 通過TAP接口,對數據寄存器(DR)進行訪問的一般過程是: 通過指令寄存器(IR),選定一個需要訪問的數據寄存器; 把選定的數據寄存器連接到TDI和TDO之間; 由TCK驅動,通過TDI,把需要的數據輸入到選定的數據寄存器當中去;同時把選定的數據寄存器中
35、的數據通過TDO讀出來No. 34Sep 2013 復習第四講:復習第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調試原理介紹嵌入式系統(tǒng)調試原理介紹 基于基于ARM7 內核微處理器調試原理內核微處理器調試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調試原理嵌入式系統(tǒng)開發(fā)和調試原理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 包括了對調試的硬件支持包括了對調試的硬件支持Embedded ICE-RT Logic 包括一組寄存器和比較器,用來產生調試異包括一組寄存器和比較器,用來產生調試異常,設置斷點和觀察點。常,設置斷點和觀察點。TAP Controller 通過通過JTAG接口來控
39、制和操作掃描鏈接口來控制和操作掃描鏈No. 36Sep 2013基于基于JTAG的片上的片上ICE 掃描鏈掃描鏈0:113位,包含數據總位,包含數據總線、控制信號、地址總線線、控制信號、地址總線 掃描鏈掃描鏈1:33位,為掃描鏈位,為掃描鏈0子子集,包括數據總線和集,包括數據總線和DBGBREAK信號信號 掃描鏈掃描鏈2:38位,主要用于訪問位,主要用于訪問ICE 邏輯部件中的各寄存器邏輯部件中的各寄存器 掃瞄鏈掃瞄鏈3: ARM7TDMI 和外圍設和外圍設備備 EmbeddedICE邏輯電路包括一邏輯電路包括一組寄存器和比較器,組寄存器和比較器,3個附件信個附件信號號p DBGREQ:調試請
40、求:調試請求p DBGACK:調試確認:調試確認p BREAKPT:斷點信號:斷點信號 TAP控制器可以通過控制器可以通過JTAG接口接口控制各個硬件掃描鏈控制各個硬件掃描鏈 調試原理:調試原理: 如何設置斷點?,如何進入如何設置斷點?,如何進入調試狀態(tài),和正常運行狀態(tài)有調試狀態(tài),和正常運行狀態(tài)有什么區(qū)別?在調試狀態(tài)下如何訪問內部什么區(qū)別?在調試狀態(tài)下如何訪問內部寄存器、如何訪問內存?寄存器、如何訪問內存?No. 37Sep 2013EmbeddedICE-RT Logic的結構的結構 通過對通過對EmbeddedICE控制,以及通過對控制,以及通過對EmbeddedICE中寄存器的讀取,可以
41、獲得中寄存器的讀取,可以獲得ARM內核的內核的狀態(tài),為程序設置斷點觀察點以及讀取狀態(tài),為程序設置斷點觀察點以及讀取Debug通信通道通信通道(DCC)。)。 這里的這里的斷點斷點用來標識某個地址上的一條指令,而用來標識某個地址上的一條指令,而觀察點觀察點用來觀察某個地址上的數據變化,所以這二者是用來觀察某個地址上的數據變化,所以這二者是有區(qū)別的。有區(qū)別的。DCC用來完成主調試器和目標機間的信息用來完成主調試器和目標機間的信息發(fā)送。發(fā)送。No. 38Sep 2013EmbeddedICE的結構的結構EmbeddedICE的長度是的長度是38位,位,包括:包括: 32位數據位數據 5位地址,訪問寄
42、存器位地址,訪問寄存器 1個讀寫控制位個讀寫控制位EmbeddedICE的寄存器主要包的寄存器主要包括括Debug狀態(tài)和控制寄存器狀態(tài)和控制寄存器,Debug通信寄存器和斷點通信寄存器和斷點設置相關的寄存器設置相關的寄存器No. 39Sep 2013The EmbeddedICE Logic 通過掃瞄鏈2訪問ICE的寄存器,ICE包含三個部分 Debug Control and Status registers(調試寄存器(調試寄存器)p 控制ICE-RT p ICE的狀態(tài)p 判斷異常產生的原因 Two watchpoint units(觀察點單元)(觀察點單元)p 2組,每組3個寄存器(數據
43、,地址,控制)p 通過監(jiān)控數據、地址和控制信號,判斷數據觀數據觀察點察點watchpointwatchpoint和程序斷點程序斷點breakpointbreakpointp 每一個組單元可以提供l 1 watchpoint,l 1 hardware breakpointhardware breakpoint in ROM or RAM, orl Multiple software breakpointssoftware breakpoints in RAM Debug Communications Channel(調試通信通道(調試通信通道)No. 40Sep 2013EmbeddedICE寄
44、存器格式及含義寄存器格式及含義Debug Control Register 格式:格式: DBGACK:用來控制用來控制DBGACK信號的值信號的值 DBGRQ:是是調試請求信號調試請求信號,通過將該信號置,通過將該信號置“1”,可以強制,可以強制ARM7TDMI暫停當前的指令,進入調試狀態(tài)暫停當前的指令,進入調試狀態(tài) INTDIS:用來控制中斷用來控制中斷 SBZ/RAZ:任何時候都必須被置任何時候都必須被置“0” Monitor Mode Enable:用來控制用來控制是否進入是否進入Monitor模式模式 EmbeddedICE-RT Disable:用來控制整個用來控制整個Embedd
45、edICE-RT,是啟是啟用還是禁用用還是禁用No. 41Sep 2013Debug Status Register 格式:格式: DBGACK:用來標識當前系統(tǒng)是否處于調試狀態(tài)。用來標識當前系統(tǒng)是否處于調試狀態(tài)。1,表示進入,表示進入;0,表示未進入。,表示未進入。 DBGRQ:用來標識用來標識DBGRQ信號的當前狀態(tài)信號的當前狀態(tài) IFEN:用來標識系統(tǒng)的中斷控制狀態(tài):啟用還是禁用用來標識系統(tǒng)的中斷控制狀態(tài):啟用還是禁用 cgenL:用來判斷當前對調試器在調試狀態(tài)下用來判斷當前對調試器在調試狀態(tài)下 對內存的訪問是否對內存的訪問是否完成完成 TBIT:該位用來判斷該位用來判斷ARM7TDMI
46、是從是從ARM 狀態(tài)還是狀態(tài)還是THUMB狀態(tài)狀態(tài)進入到調試狀態(tài)的進入到調試狀態(tài)的EmbeddedICE寄存器格式及含義寄存器格式及含義Abort Status Register 格式該寄存器的長度為該寄存器的長度為1,來判斷一個異常的產生的原因:斷點觸發(fā)?,來判斷一個異常的產生的原因:斷點觸發(fā)?觀察點觸發(fā)?還是一個真的異常?觀察點觸發(fā)?還是一個真的異常? No. 42Sep 2013實例實例:用用Scan Chain 2 設置設置Debug Control Register 第一步:選擇掃描鏈第一步:選擇掃描鏈2,將其連接到,將其連接到TDI,TDO 之間:之間: 通過通過TAP將將SCAN
47、_N指令寫入到指令寄存器當中去,指令寫入到指令寄存器當中去, TAP狀態(tài)轉狀態(tài)轉換如下:換如下: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寫入到掃描鏈選擇寄存器當中去,以寫入到掃描鏈選擇寄存器當中去,以
48、將掃描鏈將掃描鏈2連接到連接到TDI和和TDO之間。將之間。將2寫入掃描鏈選擇寄存器的狀態(tài)寫入掃描鏈選擇寄存器的狀態(tài)轉換如下:轉換如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在在SHIFT-DR狀態(tài)下,將數值狀態(tài)下,將數值2通過通過TDI寫到掃描鏈選擇寄存器當中去寫到掃描鏈選擇寄存器當中去。第二步:將第二步:將Scan Chain 2置為內測試模式置為內測試模式 用用INTEST 指令實現該操作,指令寫入與指令實現該操作,指令寫入與SCAN_N指令的過程類似指令的過程
49、類似No. 43Sep 2013第三步:第三步: 寫寫Debug Control Register 假設要將假設要將Debug Control Register的的6位全部置位全部置“1”,按照掃描鏈按照掃描鏈2的格式,需要寫入到掃描鏈的格式,需要寫入到掃描鏈2第序列應該為:第序列應該為: 1,00000,0000,0000,0000,0000,0000,0000,0011,1111 1表示寫操作,表示寫操作,00000標識的是標識的是Debug Control Register的地址,中間的地址,中間32位是要寫入到位是要寫入到Debug Control Register的數據。因的數據。因
50、Debug Control Register長度為長度為6,所,所以只有低以只有低6位的數據序列位的數據序列111111有效。有效。在在SHIFT-DR狀態(tài)下,通過狀態(tài)下,通過38個個TCK時鐘驅動,就可以時鐘驅動,就可以將上面的序列串行輸入到掃描鏈將上面的序列串行輸入到掃描鏈2當中去。當中去。實例實例:用用Scan Chain 2 設置設置Debug Control RegisterNo. 44Sep 2013 EmbeddedICE有兩個WtchPoint單元。下面介紹一下WatchPoint寄存器的使用: EmbeddedICE的一個主要作用是可以在ARM程序中設置軟件或硬件斷點。在Em
51、beddedICE中,集成了一個比較器,負責把ARM處理器取指的地址A31:0,數據 D31:0以及一些控制信號與EmbeddedICE中WatchPoint寄存器中設置的數值相比較(具體說應該是進行與或運算),比較結果用來確定輸出一個ARM斷點(BreakPoint)信號。具體運算關系如下公式所描述:EmbeddedICE的斷點的斷點/觀察點設置觀察點設置Av31:0,Cv4:0 XOR A31:0,C4:0 ORAm31:0,Cm4:0 = 0 xFFFFFFFF當上述表達式值為真時,斷點/觀察點信號有效,ARM內核進入Debug模式No. 45Sep 2013Watchpoints(數據
52、觀察點)(數據觀察點)ControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorWatchpointD31:00 xF0000 x00 xffffffffData write0 xF000MemoryLocation to be watched讀寫完成訪問的數據以后進入調試狀態(tài):A watchpoint :當約定存儲器被約定的方式訪問以后觸發(fā)斷點;這個例子說明當地址0 xF000 被寫入的時候產生的觀察點每一個觀察點單元可以產生一個數據觀察點斷點No. 46Sep 2013Hardware Br
53、eakpoints(硬件斷點)(硬件斷點)0 x8000ARM - 0 x3Thumb - 0 x10 xffffffffOpcode fetch0 x8000MemoryBreakpoint to be set hereControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:0A hardware breakpoint :當程序再約定地址的取出指令時候,觸發(fā)斷點這個例子說明:在0 x8000地址取指令的時候產生程序斷點 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(軟件斷點)軟件斷點)Memory0 xffffffff0 xeeeeeeee0 x0Opcode fetchControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:01. Read an
55、d store opcode2. Write “special” valueA software breakpoint:軟:軟件斷點是約定的一條指令被件斷點是約定的一條指令被取指的時候觸發(fā)程序斷點(取指的時候觸發(fā)程序斷點(這條指令可以在任何地址)這條指令可以在任何地址) i這個例子說明了軟件斷點實現的過程首先在Data mask寄存器中寫入特定指令,Addr Mask為0 xffffffff ,當取值到特殊指令的時候產生斷點。只能在RAM中產生。Each watchpoint unit can be used to set an unlimited number of software bre
56、akpoints.(The “special” value)當需要在某地址代碼處設置軟件斷點的時候,仿真器會先將此處代碼進行備份保護,然后將預先設定好的斷點特征值(一般為0 x0000等不易與代碼混淆的值)寫入此地址,覆蓋原來的代碼數據。 No. 48Sep 2013產生硬件斷點:產生硬件斷點:p觸發(fā),取指地址觸發(fā)觸發(fā),取指地址觸發(fā)p屏蔽數據,存入地址屏蔽數據,存入地址p2個點個點產生數據觀察點產生數據觀察點p對應地址數據讀取完成以后觸發(fā)對應地址數據讀取完成以后觸發(fā)p屏蔽數據,存入地址屏蔽數據,存入地址p2個點個點產生軟件斷點產生軟件斷點p對應數據觸發(fā)對應數據觸發(fā)p屏蔽地址,存入特殊數據屏蔽地
57、址,存入特殊數據Xp斷點地址插入特殊數據斷點地址插入特殊數據X,改寫存儲器,所以只能在改寫存儲器,所以只能在RAM中設置中設置p無窮多的無窮多的No. 49Sep 2013在調試狀態(tài)訪問寄存器和存儲空間在調試狀態(tài)訪問寄存器和存儲空間ARM7TDMI已經進入到調試狀態(tài)(DBGRQ、斷點、觀察點)。通過掃瞄鏈1 在流水線中插入指令,系統(tǒng)運行在DCLK,不是MCLK(系統(tǒng)正常時鐘)在調試狀態(tài)下支持數據處理指令、Load/Store指令、MSR,MRS指令。掃描鏈1中的第33位,BREAKPT輸入,在調試過程當中有很重要的作用重要的作用p如果BREAKPT置0,意味著下一條指令以調試速度執(zhí)行(DCLK
58、驅動)p如果BREAKPT置1,意味著下一條指令以系統(tǒng)速度執(zhí)行(MCLK驅動)No. 50Sep 2013在調試狀態(tài)讀取在調試狀態(tài)讀取/修改寄存器修改寄存器讀取讀取R0的值的值p插入指令STR R0, R0 & BREAKPT = 0: 這步相當于指令STR R0, R0的取指令周期(3級流水線); p 插入空指令MOV R0, R0 & BREAKPT = 0: 這一步讀取新指令MOV R0, R0,同時,相當于指令STR R0, R0的譯指令周期(3級流水線); p插入空指令MOV R0, R0 & BREAKPT = 0: 這一步讀取新指令MOV R0, R0,同時,插入的STR R0,
59、 R0指令開始執(zhí)行(3級流水線)。p通過掃描鏈1讀出捕獲的數據總線上的數據: 修改R0的值p插入指令LDR R0, R0& BREAKPT = 0: p插入兩條空指令p通過掃瞄鏈1放數據在數據總線上p插入一條空指令No. 51Sep 2013調試狀態(tài)下讀寫內存調試狀態(tà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 復習第四講:復習第四講:ARM指令集和匯編語言概述指令集和匯編語言概述 嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯嵌入式系統(tǒng)的一般開發(fā)過程:交叉編譯 嵌入式系統(tǒng)調試原理介紹嵌入式系統(tǒng)調試原理介紹 基于基于ARM7 內核微處理器調試原理內核微處理器調試原理 開發(fā)工具開發(fā)工具 ADS1.2 介紹介紹ARM7 開發(fā)工具開發(fā)工具uVision4.0 介紹介紹CM3第第 六六 講講 嵌入式系統(tǒng)開發(fā)和調試原理嵌入式系統(tǒng)開發(fā)和調試原理No. 53Sep 2013
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度父母遺產房產分割與贍養(yǎng)責任合同
- 2025年ET霧狀膜項目投資可行性研究分析報告
- 2025年彈簧緊固件行業(yè)深度研究分析報告
- 2025年度鍋爐房設備定期檢查與維保服務合同
- 2025年炊事機械項目投資可行性研究分析報告-20241226-205218
- 齒紋刀行業(yè)深度研究報告
- 2025-2030年中國二硼化鋯項目投資可行性研究分析報告
- it維修申請書范文
- 2025年度金融科技產品研發(fā)與應用合同
- 2025年度人工智能研發(fā)與應用合作協(xié)議
- 著衣母嬰臥像教學設計
- 維克多高中英語3500詞匯
- 【課件】DNA片段的擴增及電泳鑒定課件高二下學期生物人教版(2019)選擇性必修3
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- 科創(chuàng)板知識測評20個題目的答案
- 2023年湖北成人學位英語考試真題及答案
- 走好群眾路線-做好群眾工作(黃相懷)課件
- NY∕T 4001-2021 高效氯氟氰菊酯微囊懸浮劑
- 《社會主義市場經濟理論(第三版)》第七章社會主義市場經濟規(guī)則論
- 漢聲數學圖畫電子版4冊含媽媽手冊文本不加密可版本-29.統(tǒng)計2500g早教
- 中國監(jiān)察制度史
評論
0/150
提交評論