第六讲 ARM处理器调试原理(2013)_第1页
第六讲 ARM处理器调试原理(2013)_第2页
第六讲 ARM处理器调试原理(2013)_第3页
第六讲 ARM处理器调试原理(2013)_第4页
第六讲 ARM处理器调试原理(2013)_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、No. 1Sep 2013 复习第四讲:复习第四讲:ARM指令集和汇编语言概述指令集和汇编语言概述 嵌入式系统的一般开发过程:交叉编译嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍嵌入式系统调试原理介绍 基于基于ARM7 内核微处理器调试原理内核微处理器调试原理 开发工具开发工具 ADS1.2 介绍介绍ARM7 开发工具开发工具uVision4.0 介绍介绍CM3第第 六六 讲讲 嵌入式系统开发和调试原理嵌入式系统开发和调试原理No. 2Sep 2013ARM指令集的特点指令集的特点 所有的所有的ARM指令都是指令都是32位宽,在存储器中以位宽,在存储器中以4字节的边界对齐字节的边

2、界对齐 3地址的数据处理指令(即两个源操作数和结果寄存器都独立设定)地址的数据处理指令(即两个源操作数和结果寄存器都独立设定) LOAD/STORE架构,包含非常强大的多寄存器架构,包含非常强大的多寄存器Load和和Store指令指令 能够在单时钟周期的单条指令来完曾一项普通移位操作和一项普通的能够在单时钟周期的单条指令来完曾一项普通移位操作和一项普通的ALU操作操作 可以通过协处理器来扩展新的寄存器和数据类型可以通过协处理器来扩展新的寄存器和数据类型 指令可条件执行指令可条件执行 ARM指令的分类指令的分类p 数据处理指令(数据处理指令( 16条数据处理和乘法)条数据处理和乘法)p 分支指令

3、分支指令 (B,BL,BX)p 数据传送指令(访问存储器)数据传送指令(访问存储器)LDR/STR, 批量传送批量传送p 其他指令其他指令l 软件中断软件中断SWI指令指令l 程序状态寄存器指令程序状态寄存器指令No. 3Sep 2013ARM汇编语言伪操作汇编语言伪操作在在ARM汇编语言程序中,有一些特殊的助记符,这些助记汇编语言程序中,有一些特殊的助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊助记符为伪操作标示符(称这些特殊助记符为伪操作标示符(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介绍寄存器的使用规则介绍寄存器的使用规则 定义:定义:p ATPCS(arm-thumb procedure call standard)是)是 子程序之间的调用设定一定的规子程序之间的调用设定一定的规则,则,ATPCS就是就是ARM 程序中的子程序调用的基本规则程序中的子程序调用的基本规则 PCS

6、:p 规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起p 定义了一套有关过程(函数)调用者与被调用者之间的协议。定义了一套有关过程(函数)调用者与被调用者之间的协议。p PCS规范强制实现如下约定:调用函数如何传参(即压栈方法,以何种方式存放参数规范强制实现如下约定:调用函数如何传参(即压栈方法,以何种方式存放参数),被调用函数如何获取参数,以何种方式传递函数返回值。),被调用函数如何获取参数,以何种方式传递函数返回值。 基本的基本的ATPCS包含的内容包含的内容p 各个寄存器的使用规则和相应的名称:各

7、个寄存器的使用规则和相应的名称:l R0R3 参数寄存器参数寄存器l R4R11 通用变量寄存器通用变量寄存器p 数据栈的使用规则:数据栈是数据栈的使用规则:数据栈是FD(满递减堆栈)(满递减堆栈)p 参数传递的规则:对于参数个数可变的子程序,但参数不超过参数传递的规则:对于参数个数可变的子程序,但参数不超过4个时,可以使用寄存器个时,可以使用寄存器R0R3来传递参数;当参数超过来传递参数;当参数超过4个时,还可以使用数据栈来传递参数。个时,还可以使用数据栈来传递参数。No. 6Sep 2013 复习第四讲:复习第四讲:ARM指令集和汇编语言概述指令集和汇编语言概述 嵌入式系统的一般开发过程:

8、交叉编译嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍嵌入式系统调试原理介绍 基于基于ARM7 内核微处理器调试原理内核微处理器调试原理 开发工具开发工具 ADS1.2 介绍介绍ARM7 开发工具开发工具uVision4.0 介绍介绍CM3第第 六六 讲讲 嵌入式系统开发和调试原理嵌入式系统开发和调试原理No. 7Sep 2013嵌入式系统的开发过程嵌入式系统的开发过程No. 8Sep 2013PC 上的调试上的调试程序编写,项目管理,编译,调试都在同一台计算机上完程序编写,项目管理,编译,调试都在同一台计算机上完成(成(IDE, Integrated Design Environ

9、ment)pMS VCpMS VBpBorland C+ Builder一般是通过在断点插入相关的调试软陷指令来实现调试功一般是通过在断点插入相关的调试软陷指令来实现调试功能的能的.No. 9Sep 2013交叉编译环境交叉编译环境 宿主机宿主机p 开发机器开发机器(包含开发用软件编辑器包含开发用软件编辑器,调试器调试器 ,编译器编译器,汇编器汇编器) 目标机目标机p 程序运行的机器程序运行的机器 宿主机宿主机=目标机目标机 称为本地编译称为本地编译 (VB编写应用程序编写应用程序) “交叉编译交叉编译”是指是指 宿主机和目标机是不同的系统宿主机和目标机是不同的系统p 使用使用PC 机是机是X

10、86系统系统,而目标机是而目标机是ARM,单片机或者其他系统单片机或者其他系统嵌入式应用软件开发要使用交叉嵌入式应用软件开发要使用交叉开发环境。开发环境。p 交叉开发环境集成了编辑器、交叉编译器、交叉调试器、仿真软件交叉开发环境集成了编辑器、交叉编译器、交叉调试器、仿真软件(simulator)、工程管理器、工程管理器于一体于一体 p 商业化的界面友好的同商业化的界面友好的同Microsoft Visual Studio可视化开发环境相似,免费如可视化开发环境相似,免费如GNU工具链运工具链运行在字符界面下行在字符界面下 p 交叉开发的硬件环境包括宿主机和目标板。交叉开发的硬件环境包括宿主机和

11、目标板。No. 10Sep 2013?嵌入式系统调试的需求嵌入式系统调试的需求 Run Control(运行控制)(运行控制)p Set watchpoints on data accesses(观察感(观察感兴趣的数据)兴趣的数据)p Set breakpoints on instructions(指令断点(指令断点)p Single step through code(单步调试)(单步调试) State Control(状态控制)(状态控制)p Processor state(处理器状态)(处理器状态)l Read and write register valuesp System sta

12、te(系统状态)(系统状态)l Access to system memoryl Download code Execution History(执行过程)(执行过程)p Execution trace information(跟踪程序信息(跟踪程序信息)p Memory access history(存储器访问历史数(存储器访问历史数据)据)No. 11Sep 2013嵌入式系统调试的一般方法嵌入式系统调试的一般方法基于交叉编译环境下的调试基于交叉编译环境下的调试调试方法解决调试器与被调试程序之间如何通信以达到调试目标p能够获取处理器数据总线、地址总线,处能够获取处理器数据总线、地址总线,处

13、理器状态等信息,以便在选中的数据点(理器状态等信息,以便在选中的数据点( watchpoints)和指令点(和指令点(breakpoints)进入调试状态)进入调试状态p能够获取处理器内核寄存器的信息能够获取处理器内核寄存器的信息p能够插入指令运行能够插入指令运行p能够访问存储器的内容能够访问存储器的内容p记录指令记录指令/数据的执行和访问记录数据的执行和访问记录No. 12Sep 2013ARM 调试系统组件调试系统组件执行AXD调试器的主机 (ADS的一部分)和 Multi-ICE server协议转换器(Multi-ICE)跟踪接口单元(MultiTrace)开发板(Integrator

14、 Core Module)Trace PortJTAG Port并口串口l/以太网No. 13Sep 2013交叉编译环境的内容交叉编译环境的内容 集成开发系统提供高效明晰的图形化的嵌入式应用软件开发平台,包括集成开发系统提供高效明晰的图形化的嵌入式应用软件开发平台,包括一整套完备的面向嵌入式系统的开发和调试工具一整套完备的面向嵌入式系统的开发和调试工具 。 一般包括编辑器、编译器、连接器、调试器、工程管理器和底层调试接一般包括编辑器、编译器、连接器、调试器、工程管理器和底层调试接口设备(口设备(BDM/JTAG仿真器)等仿真器)等 No. 14Sep 2013 复习第四讲:复习第四讲:ARM

15、指令集和汇编语言概述指令集和汇编语言概述 嵌入式系统的一般开发过程:交叉编译嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍嵌入式系统调试原理介绍 基于基于ARM7 内核微处理器调试原理内核微处理器调试原理 开发工具开发工具 ADS1.2 介绍介绍ARM7 开发工具开发工具uVision4.0 介绍介绍CM3第第 六六 讲讲 嵌入式系统开发和调试原理嵌入式系统开发和调试原理No. 15Sep 2013调试方法调试方法调试有四种基本方法调试有四种基本方法p模拟调试(模拟调试(Simulator)p软件调试(软件调试(Debugger)p全仿真调试(全仿真调试(Emulator)pJTA

16、G调试(调试(JTAG Debugger)调试辅助工具调试辅助工具示波器、逻辑分析仪示波器、逻辑分析仪与硬件关系密切与硬件关系密切No. 16Sep 2013模拟调试方法模拟调试方法调试工具和待调试的嵌入式软件都在主机上运行,由主机调试工具和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。调试。p优点:简单方便,不需要目标板,成本低优点:简单方便,不需要目标板,成本低p缺点:功能非常有限,无法实时调试缺点:功能非常有限,无法实时调试大多数调试工具都提供大多数调试工具都提供Simulator功能功能

17、No. 17Sep 2013指令集模拟器指令集模拟器 利用在宿主机(一般是利用在宿主机(一般是PC)的资源构建一个虚拟的目标的资源构建一个虚拟的目标机系统,该系统通过解释执机系统,该系统通过解释执行目标处理器的二进制代码行目标处理器的二进制代码来仿真运行目标程序来仿真运行目标程序pARM Armulator模拟运模拟运行行ARM指令系统指令系统虚拟机构建的环境:寄存器,存储器等等目标机的RTOSApp1App2App n.No. 18Sep 2013模拟器的改进虚拟原型模拟器的改进虚拟原型ARM ADSRDI接口接口ArmulatorMultiICE ServerAngleArmulator

18、Mem 接口虚拟的虚拟的AMBA C语言模型语言模型EMI 模型模型SDRAM 模型模型中断控制器模型中断控制器模型其他模块模型其他模块模型用户自己编写的模型用户自己编写的模型No. 19Sep 2013ARMULATOR 软件仿真器软件仿真器ARMulator(ARM仿真器):是一个指令级的仿真程序,仿真器):是一个指令级的仿真程序,运行在主机上运行在主机上p没有硬件的情况下,调试应用程序没有硬件的情况下,调试应用程序pARMulator可以报告各指令执行时的机器周期,所以也可以用来进行应用可以报告各指令执行时的机器周期,所以也可以用来进行应用程序的性能分析。程序的性能分析。ARMulato

19、r 提供了一套扩展机制提供了一套扩展机制p处理器核模型:能够仿真现有的各种处理器核模型:能够仿真现有的各种ARM核,包括核,包括Thumb指令集指令集p存储器接口:它能够模拟目标存储器系统的各种特征。提供各种原型以支存储器接口:它能够模拟目标存储器系统的各种特征。提供各种原型以支持快速建模,但接口需要全定制以实现需要的细节持快速建模,但接口需要全定制以实现需要的细节p协处理器接口:它支持定制的协处理器模型协处理器接口:它支持定制的协处理器模型p操作系统接口:使个别系统调用可以由主机处理,或在操作系统接口:使个别系统调用可以由主机处理,或在ARM模型上模拟模型上模拟实现了完整的片上系统(SOC)

20、的软硬件协同设计验证No. 20Sep 2013OS 模拟器的调试方法模拟器的调试方法 除了指令集模拟器还有除了指令集模拟器还有操作系统模拟器操作系统模拟器pSymbian OS 模拟器模拟器pPocketPC 模拟器模拟器p由于在由于在OS层面上进层面上进行仿真,应用程序运行仿真,应用程序运行在行在PC的二进制代的二进制代码,所以在目标系统码,所以在目标系统上需要重新编译上需要重新编译App1App2App n.由PC OS模拟的RTOS环境:任务,任务间通信No. 21Sep 2013软件调试方法软件调试方法(DebuggerDebugger) 主机和目标板通过某种接口(通常是串口)连接,

21、主机上提主机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,待调试软件下载到目标板上运行。供调试界面,待调试软件下载到目标板上运行。 这种方式的先决条件是要在这种方式的先决条件是要在Host和和Target之间建立起通信之间建立起通信联系(目标板上称为监控程序联系(目标板上称为监控程序Monitor)p优点:优点:纯软件,价格较低,简单,软件调试能力较强纯软件,价格较低,简单,软件调试能力较强p缺点:缺点:需要事先烧制需要事先烧制Monitor(往往需多次试验才能成功(往往需多次试验才能成功)且目标板工作正常,功能有限,特别是硬件调试能力较)且目标板工作正常,功能有限,特别是硬件调

22、试能力较差。差。PCTargetMonitor串口No. 22Sep 2013基于调试代理基于调试代理(Angel)的调试方法的调试方法 Angel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口. Angel通过一定的通信协议(ADP协议)与主机的Debugger通信. Debugger通过特定的命令通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址 对于用户设置的断点,Angel会在断点的位置插入一条软陷指令(当然在插入之前会保存原来的那条指令),当用户的程序执行到

23、断点时,系统会产生一个软陷异常,这时可以由Angel接管系统,并将系统当前的寄存器的值传给主机Debugger 如果主机Debugger需要查看内存,也将通过Angel读取后将存储器的值上传给主机。通信接口flashsdram串口电缆以太网USBCPUNo. 23Sep 2013Angel调试的优缺点调试的优缺点 Angel调试的缺点:调试的缺点:p 需要占用目标板的资源:处理器,存储器和通信接口需要占用目标板的资源:处理器,存储器和通信接口p 没有办法在没有办法在ROM区设置断点区设置断点p 难以跟踪数据变化难以跟踪数据变化 Angel调试的优点:调试的优点:p 不需要外的调试硬件,成本低廉

24、不需要外的调试硬件,成本低廉No. 24Sep 2013全仿真调试方法全仿真调试方法全仿真调试(全仿真调试(EmulatorEmulator) 这种方式用仿真器完全取代目标板上的这种方式用仿真器完全取代目标板上的MCU,因而目标系,因而目标系统对开发者来说完全是透明的、可控的。仿真器与目标板通统对开发者来说完全是透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、网口或过仿真头连接,与主机有串口、并口、网口或USB口等连接口等连接方式。由于仿真器自成体系,调试时既可以连接目标板,也方式。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板(可以不连接目标板(Stand

25、alone)。)。p优点:优点:功能非常强大,软硬件均可做到完全实时在线调功能非常强大,软硬件均可做到完全实时在线调试试p缺点:缺点:价格昂贵。价格昂贵。No. 25Sep 2013采用采用在线调试方法的优缺点在线调试方法的优缺点 优点p 一般内存采用双口内存,能在执行时同时看到数据的变化p 内部附有功能强大的分析器,可以分析状态,效率和时序等p 采用存储器断点技术实现硬件断点,数量不受限制p 它不但可以往前执行,还可以倒退执行,所有信息都可以记录起来,包括计时器状态、工作切换状态、内存状态、寄存器状态和变量等信息,而且全部是实时的。p 这种调试方法在没有片内调试逻辑的微处理器中,尤其式单片机

26、系统中得到广泛的采用. 缺点p在线仿真器具有侵入性,其中的嵌入式微处理器并不在线仿真器具有侵入性,其中的嵌入式微处理器并不是目标系统中的处理器,电气特性不同,无法真实反是目标系统中的处理器,电气特性不同,无法真实反映实际时序。映实际时序。p在线仿真器拥有自己的目标处理器、在线仿真器拥有自己的目标处理器、RAM、ROM和自和自己的嵌入式软件,所以是非常昂贵的己的嵌入式软件,所以是非常昂贵的(由其对于高速设由其对于高速设备而言备而言)。No. 26Sep 2013基于在线仿真器(在线调试)的调试方法基于在线仿真器(在线调试)的调试方法 在线仿真器提供自己的处理器和存储器不依赖目标系统的处理器和内存

27、 仿真器上的处理器可以是一个相同的芯片,也可以是一个有更多引脚的变型芯片(对内部状态有更高的可观察性)。 仿真器上还有NMI(不可屏蔽中断) 控制逻辑,存储器控制逻辑,映象ROM,映象RAM等其他各种硬件资源, 所有的硬件资源由运行在主桌面系统上的软件来管理。 flashsdramCPU插座通信接口仿真器仿真器CPU控制逻辑CPU电缆No. 27Sep 2013关于在线调试的进一步的思考关于在线调试的进一步的思考 既然通过片外的控制逻辑可以实现对芯片的调试既然通过片外的控制逻辑可以实现对芯片的调试,为什么为什么不把这个控制逻辑作在片内不把这个控制逻辑作在片内,从而省掉仿真器呢从而省掉仿真器呢?

28、p At Speed 调试方案:调试方案:因为调试逻辑在片上p 增加芯片成本:增加芯片成本:对于32位处理器,增加比例有限!p 如何从芯片外获得调试的控制权如何从芯片外获得调试的控制权?会不会增加额外的封装成本会不会增加额外的封装成本?:可以复用JTAG测试接口No. 28Sep 2013JTAG调试方法调试方法JTAGJTAG调试调试 这种方式有一个硬件调试体。该硬件调试体与目标板通过这种方式有一个硬件调试体。该硬件调试体与目标板通过JTAG调试接口相连,与主机通过串口、并口、网口或调试接口相连,与主机通过串口、并口、网口或USB口相连。待调试软件通过口相连。待调试软件通过JTAG调试器下载

29、到目标板上运行。调试器下载到目标板上运行。p优点:优点:方便、简单,无须制作方便、简单,无须制作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):):基本思想:在靠近芯片输入基本思想:在靠近芯片输入/输出管脚上增加一个移位寄存输出管脚上增加一个移位寄存器单元(边界扫描寄存器)。器单元(边界扫描寄存器)。正常状态下,边界扫描寄存器对芯片来说是透明的,所以正正常状态下,边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何的影响。常的运行不会受到任何的影响。 TAP :控制边界扫描链:控制边界扫描链No. 30Sep 2013 调试状态下,边界扫描寄存器将芯片和外的输入输出隔调试状态下,边界扫描寄存器将芯片和外的输入输出隔离开,通过这些边界扫描寄存器可以实现对芯片输入输出离开,通过这些

31、边界扫描寄存器可以实现对芯片输入输出信号的控制。具体控制过程如下:信号的控制。具体控制过程如下: 、输入管脚:通过与之相连的边界扫描寄存器把输入管脚:通过与之相连的边界扫描寄存器把信号(数据)加载到该管脚中去。信号(数据)加载到该管脚中去。 、输出管脚:通过与之相连的边界扫描输出管脚:通过与之相连的边界扫描 寄存器寄存器“捕获捕获”该管脚上的输出信号。该管脚上的输出信号。JTAG 基本原理基本原理注意:注意: 芯片芯片输入输出管脚上的边界扫描寄存器单元可以相互连输入输出管脚上的边界扫描寄存器单元可以相互连接起来,在芯片周围形成一个边界扫描链。接起来,在芯片周围形成一个边界扫描链。该链可以实现该

32、链可以实现串行的输入输出,通过相应的时钟信号和控制信号,可方串行的输入输出,通过相应的时钟信号和控制信号,可方便的观察和控制在调试状态下的芯片。便的观察和控制在调试状态下的芯片。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状态机的状态。状态机的状态。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的工作状态机的工作状态机No. 33Sep 2013JTAG的工作过程的工作过程 通过TAP接口,对数据寄存器(DR)进行访问的一般过程是: 通过指令寄存器(IR),选定一个需要访问的数据寄存器; 把选定的数据寄存器连接到TDI和TDO之间; 由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中

35、的数据通过TDO读出来No. 34Sep 2013 复习第四讲:复习第四讲:ARM指令集和汇编语言概述指令集和汇编语言概述 嵌入式系统的一般开发过程:交叉编译嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍嵌入式系统调试原理介绍 基于基于ARM7 内核微处理器调试原理内核微处理器调试原理 开发工具开发工具 ADS1.2 介绍介绍ARM7 开发工具开发工具uVision4.0 介绍介绍CM3第第 六六 讲讲 嵌入式系统开发和调试原理嵌入式系统开发和调试原理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接口接口控制各个硬件扫描链控制各个硬件扫描链 调试原理:调试原理: 如何设置断点?,如何进入如何设置断点?,如何进入调试状态,和正常运行状态有调试状态,和正常运行状态有什么区别?在调试状态下如何访问内部什么区别?在调试状态下如何访问内部寄存器、如何访问内存?寄存器、如何访问内存?No. 37Sep 2013EmbeddedICE-RT Logic的结构的结构 通过对通过对EmbeddedICE控制,以及通过对控制,以及通过对EmbeddedICE中寄存器的读取,可以

41、获得中寄存器的读取,可以获得ARM内核的内核的状态,为程序设置断点观察点以及读取状态,为程序设置断点观察点以及读取Debug通信通道通信通道(DCC)。)。 这里的这里的断点断点用来标识某个地址上的一条指令,而用来标识某个地址上的一条指令,而观察点观察点用来观察某个地址上的数据变化,所以这二者是用来观察某个地址上的数据变化,所以这二者是有区别的。有区别的。DCC用来完成主调试器和目标机间的信息用来完成主调试器和目标机间的信息发送。发送。No. 38Sep 2013EmbeddedICE的结构的结构EmbeddedICE的长度是的长度是38位,位,包括:包括: 32位数据位数据 5位地址,访问寄

42、存器位地址,访问寄存器 1个读写控制位个读写控制位EmbeddedICE的寄存器主要包的寄存器主要包括括Debug状态和控制寄存器状态和控制寄存器,Debug通信寄存器和断点通信寄存器和断点设置相关的寄存器设置相关的寄存器No. 39Sep 2013The EmbeddedICE Logic 通过扫瞄链2访问ICE的寄存器,ICE包含三个部分 Debug Control and Status registers(调试寄存器(调试寄存器)p 控制ICE-RT p ICE的状态p 判断异常产生的原因 Two watchpoint units(观察点单元)(观察点单元)p 2组,每组3个寄存器(数据

43、,地址,控制)p 通过监控数据、地址和控制信号,判断数据观数据观察点察点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暂停当前的指令,进入调试状态暂停当前的指令,进入调试状态 INTDIS:用来控制中断用来控制中断 SBZ/RAZ:任何时候都必须被置任何时候都必须被置“0” Monitor Mode Enable:用来控制用来控制是否进入是否进入Monitor模式模式 EmbeddedICE-RT Disable:用来控制整个用来控制整个Embedd

45、edICE-RT,是启是启用还是禁用用还是禁用No. 41Sep 2013Debug Status Register 格式:格式: DBGACK:用来标识当前系统是否处于调试状态。用来标识当前系统是否处于调试状态。1,表示进入,表示进入;0,表示未进入。,表示未进入。 DBGRQ:用来标识用来标识DBGRQ信号的当前状态信号的当前状态 IFEN:用来标识系统的中断控制状态:启用还是禁用用来标识系统的中断控制状态:启用还是禁用 cgenL:用来判断当前对调试器在调试状态下用来判断当前对调试器在调试状态下 对内存的访问是否对内存的访问是否完成完成 TBIT:该位用来判断该位用来判断ARM7TDMI

46、是从是从ARM 状态还是状态还是THUMB状态状态进入到调试状态的进入到调试状态的EmbeddedICE寄存器格式及含义寄存器格式及含义Abort Status Register 格式该寄存器的长度为该寄存器的长度为1,来判断一个异常的产生的原因:断点触发?,来判断一个异常的产生的原因:断点触发?观察点触发?还是一个真的异常?观察点触发?还是一个真的异常? No. 42Sep 2013实例实例:用用Scan Chain 2 设置设置Debug Control Register 第一步:选择扫描链第一步:选择扫描链2,将其连接到,将其连接到TDI,TDO 之间:之间: 通过通过TAP将将SCAN

47、_N指令写入到指令寄存器当中去,指令写入到指令寄存器当中去, TAP状态转状态转换如下:换如下:RUN-TEST/IDLESELECT-DR-SCAN SELECT-IR-SCAN CAPTURE-IR SHIFT-IR EXIT1-IR UPDATE-IR RUN-TEST/IDLE,在,在SHIFT-IR状态下,将状态下,将SCAN_N通过通过TDI写到指写到指令寄存器中去;接下来,访问被令寄存器中去;接下来,访问被SCAN_N指令连接到指令连接到TDI 和和TDO之间之间的的扫描链选择寄存器扫描链选择寄存器,通过将,通过将2写入到扫描链选择寄存器当中去,以写入到扫描链选择寄存器当中去,以

48、将扫描链将扫描链2连接到连接到TDI和和TDO之间。将之间。将2写入扫描链选择寄存器的状态写入扫描链选择寄存器的状态转换如下:转换如下: RUN-TEST/IDLE SELECT-DR-SCAN CAPTURE-DR SHIFT-DR EXIT1-DR UPDATE-DR RUN-TEST/IDLE 在在SHIFT-DR状态下,将数值状态下,将数值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状态下,通过状态下,通过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读写完成访问的数据以后进入调试状态:A watchpoint :当约定存储器被约定的方式访问以后触发断点;这个例子说明当地址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 :当程序再约定地址的取出指令时候,触发断点这个例子说明:在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:软:软件断点是约定的一条指令被件断点是约定的一条指令被取指的时候触发程序断点(取指的时候触发程序断点(这条指令可以在任何地址)这条指令可以在任何地址) 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触发,取指地址触发触发,取指地址触发p屏蔽数据,存入地址屏蔽数据,存入地址p2个点个点产生数据观察点产生数据观察点p对应地址数据读取完成以后触发对应地址数据读取完成以后触发p屏蔽数据,存入地址屏蔽数据,存入地址p2个点个点产生软件断点产生软件断点p对应数据触发对应数据触发p屏蔽地址,存入特殊数据屏蔽地

57、址,存入特殊数据Xp断点地址插入特殊数据断点地址插入特殊数据X,改写存储器,所以只能在改写存储器,所以只能在RAM中设置中设置p无穷多的无穷多的No. 49Sep 2013在调试状态访问寄存器和存储空间在调试状态访问寄存器和存储空间ARM7TDMI已经进入到调试状态(DBGRQ、断点、观察点)。通过扫瞄链1 在流水线中插入指令,系统运行在DCLK,不是MCLK(系统正常时钟)在调试状态下支持数据处理指令、Load/Store指令、MSR,MRS指令。扫描链1中的第33位,BREAKPT输入,在调试过程当中有很重要的作用重要的作用p如果BREAKPT置0,意味着下一条指令以调试速度执行(DCLK

58、驱动)p如果BREAKPT置1,意味着下一条指令以系统速度执行(MCLK驱动)No. 50Sep 2013在调试状态读取在调试状态读取/修改寄存器修改寄存器读取读取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,同

59、时,插入的STR R0, R0指令开始执行(3级流水线)。p通过扫描链1读出捕获的数据总线上的数据: 修改R0的值p插入指令LDR R0, R0& BREAKPT = 0: p插入两条空指令p通过扫瞄链1放数据在数据总线上p插入一条空指令No. 51Sep 2013调试状态下读写内存调试状态下读写内存Read 10 words from address 0 x8000 onwardsMOV r0, #0 x8000LDMIA r0!, r1-r10 - system speedSTMIA r0, r1-r10 - debug speedTDITCKDatabusARMTCKregist

60、ersDebugspeedDatabusARMxDTDOr1-r1013MCLKSystemspeedDatabusARM2registersPipelineNo. 52Sep 2013 复习第四讲:复习第四讲:ARM指令集和汇编语言概述指令集和汇编语言概述 嵌入式系统的一般开发过程:交叉编译嵌入式系统的一般开发过程:交叉编译 嵌入式系统调试原理介绍嵌入式系统调试原理介绍 基于基于ARM7 内核微处理器调试原理内核微处理器调试原理 开发工具开发工具 ADS1.2 介绍介绍ARM7 开发工具开发工具uVision4.0 介绍介绍CM3第第 六六 讲讲 嵌入式系统开发和调试原理嵌入式系统开发和调试原理No. 53Sep 201

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论