嵌入式系统8(ARM程序调试)_第1页
嵌入式系统8(ARM程序调试)_第2页
嵌入式系统8(ARM程序调试)_第3页
嵌入式系统8(ARM程序调试)_第4页
嵌入式系统8(ARM程序调试)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式系统8(ARM程序调试)第一页,共34页。本节内容调试的基本要求调试方法简介基于JTAG的片上ICE2第二页,共34页。1调试的基本要求使程序能够在用户控制下运行对感兴趣的数据进行访问和观察(WatchPoint)对感兴趣的指令设置断点(BreakPoint)单步执行检查与改变处理器的状态对各寄存器进行读写检查与改变系统的状态对系统存储器的访问下载代码(DownloadCode)保存存储器内容(SaveAs)3第三页,共34页。2.1PC上的调试程序编写、项目管理、编译、调试都在同一台计算机上完成(IDE,IntegratedDesignEnvironment集成设计环境)MSVC++MSVBBorlandC++Builder一般是通过在断点插入相关的调试软件指令来实现调试功能的4第四页,共34页。2.2基于模拟器的调试方法定义:使用模拟器对复杂的系统进行建模,用软件来模拟硬件系统的功能。没有硬件的情况下在PC机上模拟系统运行相应程序用途:用于系统的前期算法分析和体系结构设计。用于应用程序的开发。缺点:难以真实反映SOC芯片的所有外设:中断无法处理。通过PC的外设模拟系统外设,有一定的限制。难以进行实时性的系统仿真。难以进行设备驱动开发。5第五页,共34页。I指令集模拟器的调试方法利用主机(一般是PC)的资源构建一个虚拟的目标机系统,该系统通过解释执行目标处理器的二进制代码来仿真运行目标程序VM为指令集综合模拟器ARMArmulator-模拟运行ARM指令系统PalmOS的模拟器-模拟运行68K指令系统PCPCOS(MSWindows)VM(虚拟机)虚拟机构建的环境:寄存器,存储器等等目标机的RTOSApp1App2Appn….6第六页,共34页。II

操作系统模拟器的调试方法除了指令集模拟器还有操作系统模拟器ASIXOS模拟器SybianOS模拟器AndroidOS模拟器由于在OS层面上进行仿真,应用程序运行在PC的二进制代码(不是ARM指令),所以在目标系统上需要重新编译PCPCOS(MSWindows)RTOSAPI封装App1App2Appn….由PCOS模拟的RTOS环境:任务,任务间通信7第七页,共34页。IIIARMulator(模拟器的改进-虚拟原型)ARMADSRDI接口ArmulatorMultiICEServerAngleArmulatorMem接口虚拟的AMBA总线C语言模型EMI模型SDRAM模型中断控制器模型其他模块模型用户自己编写的模型ARMIDE本质上还是指令级,节拍精度的模拟器,但是通过用户扩展的外围模型,极大增加了系统的真实性。8第八页,共34页。Armulator指令集模拟器功能ARMulator是一个指令级的仿真程序,运行在主机上。由于ARMulator可以报告各指令执行时的机器周期,它还可以用来进行应用程序的性能分析。ARMulator被设计为允许容易地扩展软件模型,使之包括诸如Cache(高速缓冲存储器)、特殊存储器时序特性等系统特征。9第九页,共34页。Armulator指令集模拟器优缺点优点是目前无硬件调试的最真实、最细致、最通用的方法。可模拟所有指令,甚至可模拟到指令的执行时序。对用户全开放,用户可按其规则自己创建模拟的对象。缺点模拟器难以真实反映所有的外设,对外部中断将更困难。难以实时仿真,仿真的时序和硬件时序有差异。不能很好进行外设的驱动开发。10第十页,共34页。2.3在目标机上驻留监控软件1、原理(大使兼间谍)被调试的应用程序放在RAM中;监控程序(Monitor)放在ROM(flash)中;监控程序负责按主机的要求控制应用程序的执行节奏;并随时将目标机上的各种状态报告给主机。需要时可将控制权全部交给应用程序。通信接口flashsdramHostPC&Debugger串口电缆以太网USBCPUQ:单步调试怎么实现?11第十一页,共34页。2、基于调试代理(Angel)的调试方法驻留Angel是一段驻留在开发板ROM中的一段程序,系统Boot后,Angle接管整个系统并初始化系统和通信接口。通信Angel通过一定的通信协议与主机的Debugger通信。下载和移交Debugger通过特定的命令通知Angel将用户调试的程序下载到目标板的SDRAM中的特定地址,并可以按照Debugger的要求将控制权交给相应的代码地址。断点和数据上传的实现对于用户设置的断点,Angel会在断点的位置插入一条软陷指令,当用户的程序执行到断点时,系统会产生一个软陷异常。中断后可以由Angel接管系统,并将系统当前的寄存器和某些内存值传给主机Debugger。12第十二页,共34页。Angel调试的优缺点Angel调试的缺点:需要占用目标板的资源:处理器,存储器和通信接口没有办法在ROM区设置断点难以跟踪数据变化Angel调试的优点:不需额外的调试硬件,成本低廉13第十三页,共34页。2.4基于仿真器(在线调试)的调试方法1、目标系统中的处理器被取掉,代之以与仿真器的连接2、仿真器上的处理器可以相同,也可以是一个有更多引脚的变型芯片(对内部状态有更高的可观察性)。3、仿真器上还有缓冲器,以及各种硬件资源,可以用来观察系统运行状态。4、跟踪缓冲器和硬件资源由运行在主机上的软件来管理。

仿真器flashsdramHostPC&DebuggerCPU插座通信接口CPU控制逻辑监测数据总线和控制总线CPU电缆14第十四页,共34页。采用在线调试方法的优缺点优点可以设置ROM断点可以观测数据总线的变化从而实现观测点不占用目标板资源这种调试方法在单片机系统中得到广泛的采用缺点为了观测一个深嵌入的核心的信号,需要引出许多管脚。在线仿真器中的嵌入式微处理器并不是目标系统中的处理器,所以传统的在线仿真器无法真是仿真目标系统的嵌入式微处理器。在线仿真器拥有自己的目标处理器、RAM、ROM和自己的嵌入式软件,所以是非常昂贵的(尤其对于高速设备而言)。15第十五页,共34页。2.5基于片上在线调试器的调试方法1、Debugger将调试命令通过通信接口传给协议转换器。2、协议转换器将PC的通信协议转换成为JTAG的协议,并和片内的ICE逻辑进行通信,从而实现调试的功能。JTAG接口flashsdramHostPC&DebuggerCPU协议转换器并口以太网口USB口ICE16第十六页,共34页。2.5.1基于JTAG的片上ICE1、扫描链0可以用来访问ARM7TDMI的所有外围部件和嵌入式微处理器核心的所有输入输出管脚,包含下面几部分:数据总线;控制信号;地址总线;各寄存器值。2、扫描链1的扫描单元共33个,为扫描链0的一个子集,包括了数据总线的31位到0位,接下来是DBGBREAK信号。3、扫描链2主要用于访问ICE逻辑部件中的各寄存器。4、EmbeddedICE逻辑电路包括一组寄存器和比较器,它可以用来产生调试时需要的异常中断,如产生断点等。5、TAP控制器可以通过JTAG接口控制各个硬件扫描链。待调试的CPU内核TAP控制器ICE电路处理器芯片Scan0Scan1Scan2JTAG的5根信号线17第十七页,共34页。2.5.2CPU核、ICE和TAP之间的关系18第十八页,共34页。2.5.3ICE模块主要功能和原理产生BREAKPT和DBGRQI信号送给CPU核当发生指令断点或数据断点则BREAKPT信号有效当有调试请求时,则DBGRQI信号有效这两个信号的产生是通过比较数据总线、地址总线、控制总线上的值和对应的断点寄存器的值产生的CPU进入仿真状态后DBGACK信号为高;进入仿真状态后,CPU时钟会切换为DCLKDCLK是由JTAG接口的TCK产生的时钟。19第十九页,共34页。2.5.4片上在线调试器的优点通过标准的JTAG接口来访问芯片上的ICE模块,不需要目标资源或者特殊硬件。这种芯片上在线仿真器的处理器是用户所使用的实际处理器,可以发现一些实际的问题。(不是仿真了,就是真的!!)芯片上在线仿真的成本比传统的在线仿真器要低许多。20第二十页,共34页。2.5.5ADS调试环境(IDE)ARMAXDRDI接口ArmulatorMultiICEServerAngleArmulatorMem接口ARMIDE并行口串行口CodeWorrier仿真器目标板JTAG接口串口编译器汇编器联接器CPUflashsdram虽然传统上这个协议转换器还被称为仿真器但是含义已经不一样了21第二十一页,共34页。ADSSemiHost(半主机)功能ANSIC中有很多设计到输入输出的标准C函数,这些函数如何在嵌入式系统中实现?比如最常用的printf()函数ARM给出了一个解决方案,即函数在目标机上运行,利用调试主机的屏幕(控制台)作为这些函数的输出。flashsdramHostPC&DebuggerCPU协议转换器printf(“HelloWorld!”);HelloWorld!22第二十二页,共34页。目标可以是最终的系统HostPC&Debugger并口以太网口USB口23第二十三页,共34页。3JTAGJTAG是JointTestActionGroup的缩写是IEEE1149.1标准JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线,I/O口等,从而达到调试的目的24第二十四页,共34页。JTAG接口定义20针接口定义14针接口定义25第二十五页,共34页。JTAG典型接口TMS:测试模式选择(TestModeSelect),通过TMS信号控制JTAG状态机的状态TCK:JTAG的时钟信号TDI:数据输入信号TDO:数据输出信号nTRST:JTAG复位信号,复位JTAG的状态机和内部的宏单元(Macrocell)26第二十六页,共34页。嵌入式ICE逻辑两个观察点单元可以通过监控地址总线,数据总线和控制信号来探测观察点(watchpoint)和断点。每个单元可以用来提供1观察点,或1个ROM或RAM里的硬件断点,或RAM里的多个软件断点调试控制和状态寄存器调试通讯通道27第二十七页,共34页。观察点ControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA[31:0]ComparatorWatchpointD[31:0]0xF0000x00xffffffffDatawrite0xF000MemoryLocationtobewatched一个观察点就是一个断点,这个断点在当以某种方式访问特定内存区域时被触发这个例子里,当向地址0xF000写时,将触发这个观察点每一个观察点单元可以设置成一个观察点,而且只能设置一个28第二十八页,共34页。硬件断点0x8000ARM-0x3

Thumb-0x10xffffffffOpcodefetch0x8000MemoryBreakpointtobesethereControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA[31:0]ComparatorBreakpointD[31:0]当内核试图执行内存里一个特定地址的指令时,将会触发一个硬件断点.这个例子里,当要执行从地址0x8000索取的指令时,将会触发一个硬件断点.硬件断点可以在RAM或ROM里设置.每个观察点单元可以被用来设置一个硬件断点,而且只能一个.第二十九页,共34页。软件断点Memory0xffffffff0xeeeeeeee0x0OpcodefetchControlAddrValueDataValueControlValueAddrMaskDataMaskControlMaskA[31:0]ComparatorBreakpointD[31:0]1.Readandstoreopcode2.Write“special”value一个软件断点是当一个特定的指令从任何地址被预取时触发的一个断点.这个例子表明了观察点单元的配置–这对所有的软件断点都是一样的.为了设置一个断点,可以使用Multi-ICE在特定的地方写一个特别的指令.这些只能在RAM里在操作.每一个观察点单元可以用来设置无数的软件断点.(The“special”value)第三十页,共34页。命中一个断点停止模式调试(由标准

温馨提示

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

评论

0/150

提交评论