收藏 分销(赏)

嵌入式系统8ARM程序的调试剖析.pptx

上传人:胜**** 文档编号:996902 上传时间:2024-04-10 格式:PPTX 页数:33 大小:336.16KB
下载 相关 举报
嵌入式系统8ARM程序的调试剖析.pptx_第1页
第1页 / 共33页
嵌入式系统8ARM程序的调试剖析.pptx_第2页
第2页 / 共33页
嵌入式系统8ARM程序的调试剖析.pptx_第3页
第3页 / 共33页
嵌入式系统8ARM程序的调试剖析.pptx_第4页
第4页 / 共33页
嵌入式系统8ARM程序的调试剖析.pptx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、嵌入式系统嵌入式系统第八讲第八讲第八讲第八讲ARMARM程序的调试程序的调试程序的调试程序的调试西安电子科技大学计算机学院2本节内容本节内容调试的基本要求调试的基本要求调试方法简介调试方法简介基于基于JTAG的片上的片上ICE1 1 调试的基本要求调试的基本要求使程序能够在用户控制下运行使程序能够在用户控制下运行q对感兴趣的数据进行访问和观察(WatchPoint)q对感兴趣的指令设置断点(BreakPoint)q单步执行检查与改变处理器的状态检查与改变处理器的状态q对各寄存器进行读写检查与改变系统的状态检查与改变系统的状态q对系统存储器的访问q下载代码(Download Code)q保存存储

2、器内容(Save As)32.1 PC 2.1 PC 上的调试上的调试程序编写、项目管理、编译、调试都在同程序编写、项目管理、编译、调试都在同一台计算机上完成(一台计算机上完成(IDE,Integrated Design Environment 集成设计环境)集成设计环境)qMS VCqMS VBqBorland C+Builder一般是通过在断点插入相关的调试软件指一般是通过在断点插入相关的调试软件指令来实现调试功能的令来实现调试功能的42.2 2.2 基于模拟器的调试方法基于模拟器的调试方法定义:定义:q使用模拟器对复杂的系统进行建模,用软件来模拟硬件系统的功能。q没有硬件的情况下在PC机

3、上模拟系统运行相应程序用途:用途:q用于系统的前期算法分析和体系结构设计。q用于应用程序的开发。缺点:缺点:q难以真实反映SOC芯片的所有外设:中断无法处理。q通过PC的外设模拟系统外设,有一定的限制。q难以进行实时性的系统仿真。q难以进行设备驱动开发。5I I 指令集模拟器的调试方法指令集模拟器的调试方法利用主机(一般是利用主机(一般是PC)的资源构建一个虚拟的目的资源构建一个虚拟的目标机系统,该系统通过解标机系统,该系统通过解释执行目标处理器的二进释执行目标处理器的二进制代码来仿真运行目标程制代码来仿真运行目标程序序VM为指令集综合模拟器为指令集综合模拟器qARM Armulator模拟运

4、行ARM指令系统qPalm OS 的模拟器模拟运行68K指令系统6PCPCPC OS(MS Windows)PC OS(MS Windows)VM(VM(虚拟机虚拟机虚拟机虚拟机)虚拟机构建的环境:寄存器,存储器等等目标机的RTOSApp1App2App n.II II 操作系统模拟器的调试方法操作系统模拟器的调试方法除了指令集模拟器还除了指令集模拟器还有操作系统模拟器有操作系统模拟器qASIX OS模拟器qSybian OS 模拟器qAndroid OS模拟器q由于在OS层面上进行仿真,应用程序运行在PC的二进制代码(不是ARM指令),所以在目标系统上需要重新编译7PCPCPC OS(MS

5、Windows)PC OS(MS Windows)RTOS API RTOS API 封装封装封装封装App1App2App n.由PC OS模拟的RTOS环境:任务,任务间通信III ARMulator(III ARMulator(模拟器的改进虚拟原型模拟器的改进虚拟原型)8ARM ADSRDI接口接口ArmulatorMultiICE ServerAngleArmulator Mem 接口虚拟的虚拟的AMBA总线总线 C语言模型语言模型EMI 模型模型SDRAM 模型模型中断控制器模型中断控制器模型其他模块模型其他模块模型用户自己编写的模型ARM IDEARM IDE本本本本质质质质上上上

6、上还还还还是是是是指指指指令令令令级级级级,节节节节拍拍拍拍精精精精度度度度的的的的模模模模拟拟拟拟器器器器,但但但但是是是是通通通通过过过过用用用用户户户户扩扩扩扩展展展展的的的的外围模型外围模型外围模型外围模型,极大增加了系统的真实性。极大增加了系统的真实性。极大增加了系统的真实性。极大增加了系统的真实性。ArmulatorArmulator指令集模拟器功能指令集模拟器功能ARMulator是一个指令级的仿真程序,运是一个指令级的仿真程序,运行在主机上。行在主机上。由于由于ARMulator可以报告各指令执行时的可以报告各指令执行时的机器周期,它还可以用来进行应用程序的机器周期,它还可以用

7、来进行应用程序的性能分析。性能分析。ARMulator被设计为允许容易地扩展软件被设计为允许容易地扩展软件模型,使之包括诸如模型,使之包括诸如Cache(高速缓冲存(高速缓冲存储器)、特殊存储器时序特性等系统特征。储器)、特殊存储器时序特性等系统特征。9ArmulatorArmulator指令集模拟器优缺点指令集模拟器优缺点优点优点q是目前无硬件调试的最真实、最细致、最通用的方法。q可模拟所有指令,甚至可模拟到指令的执行时序。q对用户全开放,用户可按其规则自己创建模拟的对象。缺点缺点q模拟器难以真实反映所有的外设,对外部中断将更困难。q难以实时仿真,仿真的时序和硬件时序有差异。q不能很好进行外

8、设的驱动开发。102.32.3 在目标机上驻留监控软件在目标机上驻留监控软件1、原理(大使兼间谍)、原理(大使兼间谍)q被调试的应用程序放在RAM中;q监控程序(Monitor)放在ROM(flash)中;q监控程序负责按主机的要求控制应用程序的执行节奏;并随时将目标机上的各种状态报告给主机。q需要时可将控制权全部交给应用程序。11通信接口flashsdramHost PC&Host PC&DebuggerDebugger串口电缆以太网USBCPUQQ:单步调试怎么实现?:单步调试怎么实现?:单步调试怎么实现?:单步调试怎么实现?2 2、基于调试代理、基于调试代理(Angel)(Angel)的

9、调试方法的调试方法驻留驻留qAngel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口。通信通信qAngel通过一定的通信协议与主机的Debugger通信。下载和移交下载和移交qDebugger通过特定的命令通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址。断点和数据上传的实现断点和数据上传的实现q对于用户设置的断点,Angel会在断点的位置插入一条软陷指令,当用户的程序执行到断点时,系统会产生一个软陷异常。中断后可以由Angel接管系统,并将系统当前的寄存器和某些内

10、存值传给主机Debugger。12AngelAngel调试的优缺点调试的优缺点Angel调试的缺点:调试的缺点:q需要占用目标板的资源:处理器,存储器和通信接口q没有办法在ROM区设置断点q难以跟踪数据变化Angel调试的优点:调试的优点:q不需额外的调试硬件,成本低廉132.4 2.4 基于仿真器(在线调试)的调试方法基于仿真器(在线调试)的调试方法1、目标系统中的处理器被取掉,代之以与仿真器的连接2、仿真器上的处理器可以相同,也可以是一个有更多引脚的变型芯片(对内部状态有更高的可观察性)。3、仿真器上还有缓冲器,以及各种硬件资源,可以用来观察系统运行状态。4、跟踪缓冲器和硬件资源由运行在主

11、机上的软件来管理。14仿真器flashsdramHost PC&Host PC&DebuggerDebuggerCPU插座通信接口CPU控制逻辑监测数据总线监测数据总线监测数据总线监测数据总线和控制总线和控制总线和控制总线和控制总线CPU电缆采用在线调试方法的优缺点采用在线调试方法的优缺点优点优点q可以设置ROM断点q可以观测数据总线的变化从而实现观测点q不占用目标板资源q这种调试方法在单片机系统中得到广泛的采用缺点缺点q为了观测一个深嵌入的核心的信号,需要引出许多管脚。q在线仿真器中的嵌入式微处理器并不是目标系统中的处理器,所以传统的在线仿真器无法真是仿真目标系统的嵌入式微处理器。q在线仿真

12、器拥有自己的目标处理器、RAM、ROM和自己的嵌入式软件,所以是非常昂贵的(尤其对于高速设备而言)。152.5 2.5 基于片上在线调试器的调试方法基于片上在线调试器的调试方法1、Debugger将调试命令将调试命令通过通信接口传给协议通过通信接口传给协议转换器。转换器。2、协议转换器将、协议转换器将PC的通的通信协议转换成为信协议转换成为JTAG的协议,并和片内的的协议,并和片内的ICE逻辑进行通信,从逻辑进行通信,从而实现调试的功能。而实现调试的功能。16JTAGJTAG接口接口接口接口flashsdramHost PC&Host PC&DebuggerDebuggerCPU协议转换器并口

13、以太网口USB口ICEICE2.5.1 2.5.1 基于基于JTAGJTAG的片上的片上ICEICE1 1、扫描链、扫描链0 0可以用来访问可以用来访问ARM7TDMIARM7TDMI的所有外围部件和嵌入的所有外围部件和嵌入式微处理器核心的所有输入输出式微处理器核心的所有输入输出管脚,包含下面几部分:数据总管脚,包含下面几部分:数据总线;控制信号;地址总线;各寄线;控制信号;地址总线;各寄存器值。存器值。2 2、扫描链、扫描链1 1的扫描单元共的扫描单元共3333个,个,为扫描链为扫描链0 0的一个子集,包括了的一个子集,包括了数据总线的数据总线的3131位到位到0 0位,接下来位,接下来是是

14、DBGBREAKDBGBREAK信号。信号。3 3、扫描链、扫描链2 2主要用于访问主要用于访问ICE ICE 逻逻辑部件中的各寄存器。辑部件中的各寄存器。4 4、EmbeddedICEEmbeddedICE逻辑电路包括一逻辑电路包括一组寄存器和比较器,它可以用来组寄存器和比较器,它可以用来产生调试时需要的异常中断,如产生调试时需要的异常中断,如产生断点等。产生断点等。5 5、TAPTAP控制器可以通过控制器可以通过JTAGJTAG接口接口控制各个硬件扫描链。控制各个硬件扫描链。17待调试的待调试的待调试的待调试的CPUCPU内核内核内核内核TAPTAP控制器控制器控制器控制器ICEICE电路

15、电路电路电路处理器芯片处理器芯片处理器芯片处理器芯片Scan 0Scan 1Scan 2JTAG的5根信号线2.5.2 CPU2.5.2 CPU核、核、ICEICE和和TAPTAP之间的关系之间的关系182.5.3 ICE2.5.3 ICE模块主要功能和原理模块主要功能和原理产生产生BREAKPT和和DBGRQI信号送给信号送给CPU核核当发生指令断点或数据断点则当发生指令断点或数据断点则BREAKPT信信号有效号有效当有调试请求时,则当有调试请求时,则DBGRQI信号有效信号有效这两个信号的产生是通过比较数据总线、地这两个信号的产生是通过比较数据总线、地址总线、控制总线上的值和对应的断点寄存

16、址总线、控制总线上的值和对应的断点寄存器的值产生的器的值产生的CPU进入仿真状态后进入仿真状态后DBGACK信号为高;进信号为高;进入仿真状态后,入仿真状态后,CPU时钟会切换为时钟会切换为DCLK DCLK是由是由JTAG接口的接口的TCK产生的时钟。产生的时钟。192.5.42.5.4 片上在线调试器的优点片上在线调试器的优点通过标准的通过标准的JTAG接口来访问芯片上的接口来访问芯片上的ICE模块,不需要目标资源或者特殊硬件。模块,不需要目标资源或者特殊硬件。这种芯片上在线仿真器的处理器是用户所这种芯片上在线仿真器的处理器是用户所使用的实际处理器,可以发现一些实际的使用的实际处理器,可以

17、发现一些实际的问题。(问题。(不是仿真了,就是真的!不是仿真了,就是真的!)芯片上在线仿真的成本比传统的在线仿真芯片上在线仿真的成本比传统的在线仿真器要低许多。器要低许多。202.5.5 ADS2.5.5 ADS调试环境(调试环境(IDEIDE)21ARM AXDRDI接口接口ArmulatorMultiICE ServerAngleArmulator Mem 接口ARM IDEARM IDE并行口串行口Code WorrierCode Worrier仿真器目标板目标板目标板目标板JTAG接口串口编译器汇编器联接器CPUflashsdram虽然传统上这个协议虽然传统上这个协议虽然传统上这个协议

18、虽然传统上这个协议转换器还被称为仿真器转换器还被称为仿真器转换器还被称为仿真器转换器还被称为仿真器但是含义已经不一样了但是含义已经不一样了但是含义已经不一样了但是含义已经不一样了ADS SemiHost(ADS SemiHost(半主机半主机)功能功能ANSI C 中有很多设计到输入输出的标准C函数,这些函数如何在嵌入式系统中实现?比如最常用的 printf()函数ARM给出了一个解决方案,即函数在目标机上运行,利用调试主机的屏幕(控制台)作为这些函数的输出。22flashsdramHost PC&Host PC&DebuggerDebuggerCPU协议转换器printf(“Hello Wo

19、rld!”);Hello World!目标可以是最终的系统目标可以是最终的系统23Host PC&Host PC&DebuggerDebugger并口以太网口USB口西安电子科技大学计算机学院243 JTAG3 JTAGJTAG是是Joint Test Action Group的缩写是的缩写是IEEE1149.1标准标准JTAG的建立使得集成电路固定在的建立使得集成电路固定在PCB上,只上,只通过边界扫描便可以被测试通过边界扫描便可以被测试在在ARM7TDMI处理器中,可以通过处理器中,可以通过JTAG直直接控制接控制ARM的内部总线,的内部总线,I/O口等,从而达口等,从而达到调试的目的到调

20、试的目的西安电子科技大学计算机学院25JTAGJTAG接口定义接口定义20针接口定义14针接口定义西安电子科技大学计算机学院26JTAGJTAG典型接口典型接口TMS:测试模式选择(:测试模式选择(Test Mode Select),),通过通过TMS信号控制信号控制JTAG状态机的状态状态机的状态TCK:JTAG的时钟信号的时钟信号 TDI:数据输入信号:数据输入信号 TDO:数据输出信号:数据输出信号 nTRST:JTAG复位信号,复位复位信号,复位JTAG的状的状态机和内部的宏单元(态机和内部的宏单元(Macrocell)西安电子科技大学计算机学院27嵌入式嵌入式ICEICE逻辑逻辑两个

21、观察点单元q可以通过监控地址总线,数据总线和控制信号来探测观察点(watchpoint)和断点。q每个单元可以用来提供1 观察点,或1个 ROM或RAM里的硬件断点,或RAM里的多个软件断点调试控制和状态寄存器调试通讯通道西安电子科技大学计算机学院28观察点观察点ControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorWatchpointD31:00 xF0000 x00 xffffffffData write0 xF000MemoryLocation to be watched一个观察点就是

22、一个断点,这个断点在当以某种方式访问特定内存区域时被触发这个例子里,当向地址0 xF000 写时,将触发这个观察点每一个观察点单元可以设置成一个观察点,而且只能设置一个硬件断点硬件断点0 x8000ARM-0 x3Thumb-0 x10 xffffffffOpcode fetch0 x8000MemoryBreakpoint to be set hereControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:0当内核试图执行内存里一个特定地址的指令时,将会触发一个硬

23、件断点硬件断点这个例子里,当要执行从地址0 x8000索取的指令时,将会触发一个硬硬件断点件断点硬件断点硬件断点可以在RAM或ROM里设置每个观察点单元可以被用来设置一个硬件断点硬件断点,而且只能一个软件断点软件断点Memory0 xffffffff0 xeeeeeeee0 x0Opcode fetchControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA31:0ComparatorBreakpointD31:01.Read and store opcode2.Write“special”value一个软件断点软件断点

24、是当一个特定的指令从任何地址被预取时触发的一个断点这个例子表明了观察点单元的配置 这对所有的软件断点都是一样的为了设置一个断点,可以使用Multi-ICE在特定的地方写一个特别的指令这些只能在RAM里在操作每一个观察点单元可以用来设置无数的软件断点软件断点.(The“special”value)西安电子科技大学计算机学院31命中一个断点命中一个断点停止模式调试停止模式调试(由标准的由标准的 EmbeddedICE&EmbeddedICE-RT支持支持)q内核进入调试状态和停止状态q内核与系统的其余部分分离q发出DBGACK信号(调试器通过JTAG而检测到)q没有中断处理,除非调试器重新启动执行

25、代码q处理器和系统的状态可以通过扫描内核的指令来察看和修改,紧接着执行它们监控模式调试监控模式调试(只由增强功能的只由增强功能的 EmbeddedICE-RT支持支持)q在ARM9E,ARM10 和稍后的ARM7TDMI版本上有q内核通过一个异常中断而进入常驻软件监控程序q可以连续处理中断q处理器和系统的状态可以通过监控程序的调试命令来察看和修改西安电子科技大学计算机学院32断点的类型断点的类型硬件断点硬件断点q在ARM中直接设定watchpoint中的地址,当ARM运行到指定的地址时,就进入Debug状态q数目受EmbeddedICE中的Watchpoint数目(2个)的限制;但是,可以在任何地方设置断点软件断点软件断点q改变存储器中的ARM指令为一个特殊的数据X(ARM的未定义指令),同时,设置watchpoint中的断点数据也为X,当ARM把X数据作为指令读入的时候,ARM就进入Debug状态q数目不受限制,但是,软件断点是通过替换系统的断点地址的指令实现的,所以,软件断点只能在可写的存储器的地址中设置(比如:RAM),而不能在ROM(比如:Flash)中设置西安电子科技大学计算机学院33谢谢!谢谢!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服