第三讲嵌入式系统调试方法演示文稿_第1页
第三讲嵌入式系统调试方法演示文稿_第2页
第三讲嵌入式系统调试方法演示文稿_第3页
第三讲嵌入式系统调试方法演示文稿_第4页
第三讲嵌入式系统调试方法演示文稿_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第三讲嵌入式系统调试方法演示文稿目前一页\总数二十九页\编于十七点优选第三讲嵌入式系统调试方法目前二页\总数二十九页\编于十七点调试是嵌入式系统开发过程中必不可少的重要环节,通常计算机应用系统与嵌入式系统的调试环境存在明显差异:◎通用计算机一般采用桌面操作系统,调试器与被调试的程序常常位于同一台计算机上,OS也相同,调试器进程通过OS提供的调用接口(API)来控制被调试的进程;◎嵌入式应用程序通常采用嵌入式操作系统,运行在嵌入式系统上,开发主机常采用通用计算机,开发机和目标机处于不同的机器中,程序在开发主机上开发(编辑、交叉编译、连接定位等),然后下装到目标机(嵌入式系统)进行运行和调试(远程调试)。由于这种差异,导出如下问题:·不同OS之上的调试器与被调试程序之间如何通信;·被调试程序出现异常如何告知调试器;·调试器如何控制及访问被调试程序等。目前采用两种调试方法解决上述问题:monitor方式和片上调试方式。

目前三页\总数二十九页\编于十七点(1)monitor方式monitor方式是在目标OS与调试器内分别内置专用功能模块,用于相互通信从而实现调试功能。两者应通过指定的通信端口并依据相同的远程调试协议来实现通信。目标OS的所有异常处理最终都必须转向通信模块,通知调试器此时的异常号,调试器再依据该异常号向用户显示被调试程序发生了哪一类型的异常现象。调试器控制及访问被调试程序的请求都将被转换为对调试程序的地址空间或目标平台的某些寄存器的访问,目标OS接收到此类请求时可直接进行处理。采用monitor方式,目标OS必须提供支持远程调试协议的通信模块和多任务调试接口,此外还需改写异常处理的有关部分。目标OS需要定义一个设置断点的函数。

目前四页\总数二十九页\编于十七点(2)片上调试方式片上调试方式是在CPU内部嵌入额外的硬件控制模块,当满足了特定的触发条件时进入某种特殊状态。在该状态下,被调试程序停止运行,主机的调试器可以通过CPU外部特设的通信接口来访问系统资源并执行指令。主机通信端口与目标板调试通信接口通过一块简单的信号转换电路板连接。内嵌的控制模块以监控器或纯硬件资源的形式存在,包括一些提供给用户的接口,如JTAG方式和BDM方式。目前五页\总数二十九页\编于十七点3.1基于主机的调试指没有目标机或目标机是通用计算机平台(如PC104)的一种调试。基于C语言可移植性原理,有许多程序模块完全可以在主机上开发和调试,这些模块应该用标准C语言编写,与硬件无关,如各种算法程序。对于汇编语言代码,可以在主机上使用指令模拟器(InstructionSetSimulator,ISS)运行它们,直到需要测试代码与目标系统特殊硬件之间的实时交互操作为止。基于主机的调试主要存在两大问题,一是目标系统外设无法交互,二是两种计算机体系结构特征——字长与字节排序问题。字长问题可以通过定义可移植的数据类型来解决。字节排序问题主要是大小端问题。如果主机不支持大小端配置,那么需要在软件移植到目标系统上之后,调试大小端问题,或者将目标机的大小端配置成与主机的大小端配置相同。目前六页\总数二十九页\编于十七点基于主机的调试方法的例子如基于uC/OS-II操作系统的应用开发。基于uC/OS-II的应用开发可以通过计算机进行,该OS提供了可移植的数据类型定义,兼顾了大小端问题,开发完成后,只需要修改少量的移植代码,就可以把应用移植到目标系统中。基于主机的调试方法的另一个例子是ATI公司的MNT,NucleusPlus是ATI公司的一个商用嵌入式实时多任务操作系统,支持众多的处理器。MNT是一个仿真开发平台,利用MNT,用户可以在基于Windows操作系统的计算机上,开发和调试基于NucleusPlus的应用程序,等目标硬件调试完成后,直接移植到目标机上运行,实现嵌入式软件和硬件的并行开发。目前七页\总数二十九页\编于十七点3.2远程调试器与调试内核嵌入式目标系统平台一般缺少支持具有完整特性的调试器所需的资源,嵌入式系统调试器通过分离自身来避开这种限制。调试器的大部分驻留在主机中,余下部分驻留在目标机中,留在目标系统中的主要是调试代理,即monitor。调试器的两部分(主机部分和目标机部分)通过串口/并口/以太网等端口相互通信。典型调试体系结构如下图所示。目前八页\总数二十九页\编于十七点主机桌面操作系统编译器连接器编辑器调试器(前端)(指令)模拟器目标机嵌入式操作系统调试代理BootLoader文件系统TCP/IPBSPJVMGUI通信端口目前九页\总数二十九页\编于十七点调试器一般具有以下功能:设置断点;从主机中加载程序;显示或修改内存与处理器的寄存器;从某地址开始运行;单步执行;多任务调试;资源查看(包括多任务信箱、信号量、队列、任务状态等);远程调试内核功能与调试器前端的用户界面紧密配合。目前十页\总数二十九页\编于十七点调试代理需要两种目标系统资源:一是中断向量,二是软件中断。调试代理以中断服务程序ISR的方式提供,中断源一般设置成高优先级中断,有时与NMI的中断优先级一样高,通常来自于串口/并口/以太网等设备,由主机控制中断发生与否,以保证调试器访问中断总能被处理到,否则如果某个应用程序关闭了所有中断,那么调试器就再也不能恢复对系统的控制了。当主机发送命令给目标机,目标机就会立即停止应用软件代码的执行并进入调试代理ISR,保存当前CPU的上下文,然后调试器就控制了目标系统。

目前十一页\总数二十九页\编于十七点3.3ROM仿真器3.3.1ROM仿真器概述

ROM仿真器就是仿真ROM,是用RAM以及附加电路制成。ROM仿真器是一个有2个电缆的盒子:一端连接到主机串口,下载新的程序到ROM仿真器;另一端插在目标系统的ROM插座上,目标平台认为它在访问ROM,而它实际访问的是ROM仿真器的RAM,该RAM中含有用户所下载的用于测试的程序。如下图所示。目前十二页\总数二十九页\编于十七点ROM仿真器的用途是为程序开发过程(编辑、编译、下载、调试)节省时间,不用频繁为EPROM进行插拔、擦除、烧写、校验等重复性耗时操作。使用ROM仿真器,可将生成程序用ROM仿真器下载到目标系统,运行它,并根据运行结果对主机程序进行修改,再下载,再运行,以至循环。主机ROM仿真器目标系统用于代替系统ROM简单嵌入式接头串/并/LAN目前十三页\总数二十九页\编于十七点3.3.2ROM仿真器的组成

ROM仿真器包括以下元件:用于匹配目标系统ROM芯片接口的电缆和插座;用于代替目标系统中ROM的快速RAM;本地控制处理器;连接到主机的通信端口;附加特性,如跟踪存储器、闪存编程算法等。目前十四页\总数二十九页\编于十七点3.3.3ROM仿真器的功能(1)缩短调试周期。烧写一个大的EPROM芯片有时长达几个小时。(2)灵活设置断点。EPROM中的程序往往是“干净”的程序,不含调试信息,ROM仿真器实际上是RAM,可以在其中嵌入调试信息,从而轻松设置断点。(3)仿真多种接口。有时目标机的通信端口不够用,ROM仿真器通过建立到主机的虚拟UART端口解决问题。

注意:ROM仿真器不是开发嵌入式系统必需的设备,如果目标系统有JTAG/BDM端口,或目标系统的调试采用monitor方式,则不需要。目前十五页\总数二十九页\编于十七点3.4在线仿真ICE3.4.1概述在线仿真是最直接的仿真调试方法。ICE提供自己的CPU和MEM,不再依赖目标系统的CPU和MEM。电缆或特殊的连接器使ICE的CPU能代替目标系统的CPU。ICE的CPU一般与目标CPU相同。ICE和目标系统通过连接器组合在一起,这个系统在调试时使用ICE的CPU和MEM、目标板上的I/O接口。完成调试之后,再使用目标板上的CPU和MEM实时运行应用程序。目标系统程序驻留在目标内存中,而调试代理存放在ICE的MEM中。当处于正常运行状态时,ICE处理器从目标内存读取指令。当调试代理控制目标系统时,ICE从自己的本地MEM中读取指令。这种设计确保ICE始终保持对系统运行的控制,甚至在目标系统崩溃后也是如此,保护调试代理不受目标系统错误的破坏。目前十六页\总数二十九页\编于十七点3.4.2实时跟踪功能当仿真器连接到目标系统上后,得到实时跟踪信息是一件很容易的事。只需将仿真器连接到所需处理器的三总线(地址总线、数据总线、控制/状态总线)上即可。目前十七页\总数二十九页\编于十七点3.4.3连接方法

ICE的连接器与目标系统的处理器引脚完全对应,ICE与目标系统完成连接后,ICE中的处理器代替了目标系统的处理器,因此,ICE的控制电路必须要插入到CPU引脚与目标系统之间,连接如下:(1)直接连接(适用于ICE的插座能很容易地插入目标系统)如常用的MCS-51单片机的开发模式。其插座引脚设计与微处理器的引脚设计相匹配,实现轻松替换,方法是将目标系统上的CPU拔掉,插上ICE的仿真头。(2)间接连接(适用于ICE的插座不能很轻易地插入目标系统)其原理就是不拔走目标系统的CPU,但使其所有引脚变成开路状态(三态)。某些处理器具有专用输入引脚,能使其进入关闭状态。调试人员就可以把带有仿真器信号的连接器作为覆盖物插入到目标系统中。目前十八页\总数二十九页\编于十七点3.4.4优缺点优点是具有实时跟踪能力,缺点是价格较高,特别是高速CPU在线仿真器。一般用于中低速系统中,如单片机仿真器。目前十九页\总数二十九页\编于十七点3.5BDM

BDM(BackgroundDebugModel,背景调试模式)是Motorola公司的专有调试接口,该公司是第一个把具有CPU调试功能的特殊硬件放在CPU核心中的嵌入式微处理器厂商,BDM开创了片上集成调试资源的趋势。硬件设计仅仅需要把CPU的调试引脚连接到专用连接器(n-wire或Wiggler)与调试工具上。n-wire优点:机械连接较简单,与目标系统上的CPU一起运行,与CPU的变化无关,简化设计工具,低成本、可重用、简单;n-wire缺点:大多数只提供运行控制,特性受限于芯片厂商,非常慢,不支持覆盖内存,不能访问其它总线。目前二十页\总数二十九页\编于十七点BDM首先在Motorola公司的683XX系统上实现,使用在ColdFire系列处理器中。它包括一个安装在目标处理器板上的26针连接器。BDM调试接口的引脚输出表如图。RESERVED12BREAKPOINTGND34DSCLKGND56RESERVEDRESET78DSI+5V910DSOGND1112PST3PST21314PST1PST01516DDATA3DDATA21718DDATA1DDATA01920GNDRESERVED2122RESERVEDGND2324CLK_CPUVcc_CPU2526TEA目前二十一页\总数二十九页\编于十七点BDM同时支持处理器控制和定时跟踪监视方式。4个二进制位DDATA0~DDATA3用于输入调试数据和控制命令;4个二进制位PST0~PST3用于在处理器运行时输出处理器状态;通过分析来自BDM接口的信息流可以为开发人员提供关于处理器核心运行状态的重要信息。BDM中的命令是BDM直接发送到CPU,并且其操作独立于任何用户想要执行的代码(处理器指令系统中的代码)。以下是BDM命令集。

注: 终止——为执行此命令,CPU必须终止运行;

周期窃取——命令产生一个总线周期,把它插入到CPU访问周期中;

并行——命令与CPU活动并行执行。目前二十二页\总数二十九页\编于十七点命令助记符描述对CPU影响ReadA/DRegisterRAREG/RDREG读选择的处理器并通过串行BDM接口返回结果终止WriteA/DRegisterWAREG/WDREG通过串行BDM接口把操作数写到特殊地址或数据寄存器终止ReadMemoryLocationREAD在长地址指定的内存地址读指定字长的数据周期窃取WriteMemoryLocationWRITE在长地址指定的内存地址写指定字长的数据周期窃取DumpMemoryBlockDUMP结合READ命令,转储大块内存周期窃取FillMemoryBlockFILL结合WRITE命令,填充大块内存周期窃取ResumeExecutionGO在恢复程序计数器当前值对应的指令前刷新并填充指令流周期窃取NoOperationNOP执行空操作并行ReadControlRegisterRCREG读控制寄存器终止WriteControlRegisterWCREG写控制寄存器终止WriteDebugModuleRegisterWDMREG写调试模块寄存器终止目前二十三页\总数二十九页\编于十七点3.6JTAG从使用上看,JTAG(JointTestActionGroup,联合测试行动小组)与BDM类似,支持JTAG调试的处理器上集成了符合JTAG协议的硬件调试接口。JTAG仿真器包括硬件和软件两部分。硬件有两个接口,一个接口连接到计算机上,有串口、并口、网络口、USB口等;另一个接口与目标处理器的JTAG引脚相连。软件把调试命令和数据通过仿真器发送到目标处理器中,然后接收目标处理器的状态信息。通过分析状态信息,可以了解目标处理器的工作情况;通过JTAG命令,用户可以控制目标处理器的运行(单步、断点、寄存器检查等)。目前二十四页\总数二十九页\编于十七点与BDM数据传输的并行方式不同,JTAG采用串行方式传输数据,占用较少的引脚。JTAG是一种国际标准测试协议(IEEE1149.1兼容),不同于BDM,JTAG接口是一个开放标准。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。目前二十五页\总数二十九页\编于十七点JTAG最初是用来对芯片进行测试的,基本原理是在器件内部定义一个TAP(TestAccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现ISP(In-SystemProgrammable,在线编程),对FLASH等器件进行编程。JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTA

温馨提示

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

评论

0/150

提交评论