嵌入式系统8(arm程序的调试)

上传人:今*** 文档编号:105869694 上传时间:2019-10-13 格式:PPT 页数:33 大小:872KB
返回 下载 相关 举报
嵌入式系统8(arm程序的调试)_第1页
第1页 / 共33页
嵌入式系统8(arm程序的调试)_第2页
第2页 / 共33页
嵌入式系统8(arm程序的调试)_第3页
第3页 / 共33页
嵌入式系统8(arm程序的调试)_第4页
第4页 / 共33页
嵌入式系统8(arm程序的调试)_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《嵌入式系统8(arm程序的调试)》由会员分享,可在线阅读,更多相关《嵌入式系统8(arm程序的调试)(33页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统,第八讲 ARM程序的调试,西安电子科技大学计算机学院,2,本节内容,调试的基本要求 调试方法简介 基于JTAG的片上ICE,1 调试的基本要求,使程序能够在用户控制下运行 对感兴趣的数据进行访问和观察(WatchPoint) 对感兴趣的指令设置断点(BreakPoint) 单步执行 检查与改变处理器的状态 对各寄存器进行读写 检查与改变系统的状态 对系统存储器的访问 下载代码(Download Code) 保存存储器内容(Save As),3,2.1 PC 上的调试,程序编写、项目管理、编译、调试都在同一台计算机上完成(IDE, Integrated Design Environm

2、ent 集成设计环境) MS VC MS VB Borland C+ Builder 一般是通过在断点插入相关的调试软件指令来实现调试功能的,4,2.2 基于模拟器的调试方法,定义: 使用模拟器对复杂的系统进行建模,用软件来模拟硬件系统的功能。 没有硬件的情况下在PC机上模拟系统运行相应程序 用途: 用于系统的前期算法分析和体系结构设计。 用于应用程序的开发。 缺点: 难以真实反映SOC芯片的所有外设:中断无法处理。 通过PC的外设模拟系统外设,有一定的限制。 难以进行实时性的系统仿真。 难以进行设备驱动开发。,5,I 指令集模拟器的调试方法,利用主机(一般是PC)的资源构建一个虚拟的目标机系

3、统,该系统通过解释执行目标处理器的二进制代码来仿真运行目标程序 VM为指令集综合模拟器 ARM Armulator模拟运行ARM指令系统 Palm OS 的模拟器模拟运行68K指令系统,6,II 操作系统模拟器的调试方法,除了指令集模拟器还有操作系统模拟器 ASIX OS模拟器 Sybian OS 模拟器 Android OS模拟器 由于在OS层面上进行仿真,应用程序运行在PC的二进制代码(不是ARM指令),所以在目标系统上需要重新编译,7,III ARMulator(模拟器的改进虚拟原型),8,本质上还是指令级,节拍精度的模拟器,但是通过用户扩展的外围模型,极大增加了系统的真实性。,Armu

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

5、能很好进行外设的驱动开发。,10,2.3 在目标机上驻留监控软件,1、原理(大使兼间谍) 被调试的应用程序放在RAM中; 监控程序(Monitor)放在ROM(flash)中; 监控程序负责按主机的要求控制应用程序的执行节奏;并随时将目标机上的各种状态报告给主机。 需要时可将控制权全部交给应用程序。,11,Q:单步调试怎么实现?,2、基于调试代理(Angel)的调试方法,驻留 Angel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口。 通信 Angel通过一定的通信协议与主机的Debugger通信。 下载和移交 Debugger通过特定的命令

6、通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址。 断点和数据上传的实现 对于用户设置的断点,Angel会在断点的位置插入一条软陷指令,当用户的程序执行到断点时,系统会产生一个软陷异常。中断后可以由Angel接管系统,并将系统当前的寄存器和某些内存值传给主机Debugger。,12,Angel调试的优缺点,Angel调试的缺点: 需要占用目标板的资源:处理器,存储器和通信接口 没有办法在ROM区设置断点 难以跟踪数据变化 Angel调试的优点: 不需额外的调试硬件,成本低廉,13,2.4 基于仿真器(在线调试)的调试

7、方法,1、目标系统中的处理器被取掉,代之以与仿真器的连接 2、仿真器上的处理器可以相同,也可以是一个有更多引脚的变型芯片(对内部状态有更高的可观察性)。 3、仿真器上还有缓冲器,以及各种硬件资源,可以用来观察系统运行状态。 4、跟踪缓冲器和硬件资源由运行在主机上的软件来管理。,14,仿真器,采用在线调试方法的优缺点,优点 可以设置ROM断点 可以观测数据总线的变化从而实现观测点 不占用目标板资源 这种调试方法在单片机系统中得到广泛的采用 缺点 为了观测一个深嵌入的核心的信号,需要引出许多管脚。 在线仿真器中的嵌入式微处理器并不是目标系统中的处理器,所以传统的在线仿真器无法真是仿真目标系统的嵌入

8、式微处理器。 在线仿真器拥有自己的目标处理器、RAM、ROM和自己的嵌入式软件,所以是非常昂贵的(尤其对于高速设备而言)。,15,2.5 基于片上在线调试器的调试方法,1、Debugger将调试命令通过通信接口传给协议转换器。 2、协议转换器将PC的通信协议转换成为JTAG的协议,并和片内的ICE逻辑进行通信,从而实现调试的功能。,16,2.5.1 基于JTAG的片上ICE,1、扫描链0可以用来访问ARM7TDMI的所有外围部件和嵌入式微处理器核心的所有输入输出管脚,包含下面几部分:数据总线;控制信号;地址总线;各寄存器值。 2、扫描链1的扫描单元共33个,为扫描链0的一个子集,包括了数据总线

9、的31位到0位,接下来是DBGBREAK信号。 3、扫描链2主要用于访问ICE 逻辑部件中的各寄存器。 4、EmbeddedICE逻辑电路包括一组寄存器和比较器,它可以用来产生调试时需要的异常中断,如产生断点等。 5、TAP控制器可以通过JTAG接口控制各个硬件扫描链。,17,2.5.2 CPU核、ICE和TAP之间的关系,18,2.5.3 ICE模块主要功能和原理,产生BREAKPT和DBGRQI信号送给CPU核 当发生指令断点或数据断点则BREAKPT信号有效 当有调试请求时,则DBGRQI信号有效 这两个信号的产生是通过比较数据总线、地址总线、控制总线上的值和对应的断点寄存器的值产生的

10、CPU进入仿真状态后DBGACK信号为高;进入仿真状态后,CPU时钟会切换为DCLK DCLK是由JTAG接口的TCK产生的时钟。,19,2.5.4 片上在线调试器的优点,通过标准的JTAG接口来访问芯片上的ICE模块,不需要目标资源或者特殊硬件。 这种芯片上在线仿真器的处理器是用户所使用的实际处理器,可以发现一些实际的问题。(不是仿真了,就是真的!) 芯片上在线仿真的成本比传统的在线仿真器要低许多。,20,2.5.5 ADS调试环境(IDE),21,ADS SemiHost(半主机)功能,ANSI C 中有很多设计到输入输出的标准C函数,这些函数如何在嵌入式系统中实现?比如最常用的 prin

11、tf( )函数 ARM给出了一个解决方案,即函数在目标机上运行,利用调试主机的屏幕(控制台)作为这些函数的输出。,22,目标可以是最终的系统,23,Host PC & Debugger,并口 以太网口 USB口,西安电子科技大学计算机学院,24,3 JTAG,JTAG是Joint Test Action Group的缩写是IEEE1149.1标准 JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试 在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线,I/O口等,从而达到调试的目的,西安电子科技大学计算机学院,25,JTAG接口定义,20针接口定义,14针接口

12、定义,西安电子科技大学计算机学院,26,JTAG典型接口,TMS:测试模式选择(Test Mode Select),通过TMS信号控制JTAG状态机的状态 TCK :JTAG的时钟信号 TDI:数据输入信号 TDO :数据输出信号 nTRST:JTAG复位信号,复位JTAG的状态机和内部的宏单元(Macrocell),西安电子科技大学计算机学院,27,嵌入式ICE逻辑,两个观察点单元 可以通过监控地址总线,数据总线和控制信号来探测观察点(watchpoint)和断点。 每个单元可以用来提供 1 观察点, 或 1个 ROM或RAM里的硬件断点,或 RAM里的多个软件断点 调试控制和状态寄存器 调

13、试通讯通道,西安电子科技大学计算机学院,28,观察点,Control,Addr Value,Data Value,Control Value,Addr Mask,Data Mask,Control Mask,A31:0,C o m p a r a t o r,Watchpoint,D31:0,0xF000,0x0,0xffffffff,Data write,0xF000,Memory,Location to be watched,一个观察点就是一个断点,这个断点在当以某种方式访问特定内存区域时被触发 这个例子里,当向地址0xF000 写时,将触发这个观察点 每一个观察点单元可以设置成一个观察点

14、,而且只能设置一个,硬件断点,0x8000,ARM - 0x3 Thumb - 0x1,0xffffffff,Opcode fetch,0x8000,Memory,Breakpoint to be set here,Control,Addr Value,Data Value,Control Value,Addr Mask,Data Mask,Control Mask,A31:0,C o m p a r a t o r,Breakpoint,D31:0,当内核试图执行内存里一个特定地址的指令时,将会触发一个硬件断点 这个例子里,当要执行从地址0x8000索取的指令时,将会触发一个硬件断点 硬件断

15、点可以在RAM或ROM里设置 每个观察点单元可以被用来设置一个硬件断点,而且只能一个,软件断点,Memory,0xffffffff,0xeeeeeeee,0x0,Opcode fetch,Control,Addr Value,Data Value,Control Value,Addr Mask,Data Mask,Control Mask,A31:0,C o m p a r a t o r,Breakpoint,D31:0,一个软件断点是当一个特定的指令从任何地址被预取时触发的一个断点 这个例子表明了观察点单元的配置 这对所有的软件断点都是一样的 为了设置一个断点,可以使用Multi-ICE在

16、特定的地方写一个特别的指令这些只能在RAM里在操作 每一个观察点单元可以用来设置无数的软件断点.,(The “special” value),西安电子科技大学计算机学院,31,命中一个断点,停止模式调试(由标准的 EmbeddedICE & EmbeddedICE-RT支持) 内核进入调试状态和停止状态 内核与系统的其余部分分离 发出DBGACK信号 ( 调试器通过JTAG而检测到) 没有中断处理,除非调试器重新启动执行代码 处理器和系统的状态可以通过扫描内核的指令来察看和修改,紧接着执行它们 监控模式调试(只由增强功能的 EmbeddedICE-RT支持) 在ARM9E, ARM10 和稍后的ARM7TDMI版本上有 内核通过一个异常中断而进入常驻软件监控程序 可以连续处理中断 处理器和系统的状态可以通过监控程序的调试命令来察看和修改,西安电子科技大学计算机学院

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号