资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,#,TM,Click to Edit Master Title Style,#,122v01 ARM Debug Solutions,ARM,调试方案,议程,基本的调试需求,你需要什么样的功能?,ARM,公司的调试和开发工具。,嵌入式核的调试,实现和利用,JTAG,的调试方案,停止模式和监控模式,嵌入式跟踪,使用,ETM,ARM,开发板,?,基本的调试需求,运行控制,设置数据访问断点,设置指令断点,代码的单步执行,状态控制,处理器状态,读写寄存器值,系统状态,系统内存访问,下载代码,执行历史,执行跟踪信息,内存访问历史,ARM,调试系统组件,执行,AXD,调试器的主机,(ADS,的一部分),和,Multi-ICE server,协议转换器,(Multi-ICE),跟踪接口单元,(MultiTrace),开发板,(Integrator Core Module),Trace Port,JTAG Port,并口,串口,l/,以太网,议程,基本的调试需求,你需要什么样的功能?,ARM,公司的调试和开发组成工具。,嵌入式核调试,实现和利用,JTAG,的调试方案,停止模式和监控模式,嵌入式跟踪,整体化和利用,ETM,ARM,开发板,嵌入式核调试,5 线,JTAG,被调试的系统可以是最终的系统!,也可以用第三方的协议转换工具:,server,(可以运行在不同的机器上,),TAP,EmbeddedICE,Logic-RT,嵌入式,ICE,逻辑,两个观察点单元,可以通过监控地址总线,数据总线和控制信号来探测观察点(,watchpoint),和断点。,每个单元可以用来提供,1,观察点,或,1,个,ROM,或,RAM,里的硬件断点,或,RAM,里的多个软件断点,调试控制和状态寄存器,调试通讯通道,注意:,ARM10,ARM10,家族的调试结构是不同的,虽然原理是一样的。,一共包括8个观察点单元,6,个在指令地址总线上,2,个在数据地址总线上,这个将在另外一个课题中讲解,观察点,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,0,xF000,0,x0,0,xffffffff,Data write,0,xF000,Memory,Location to be watched,一个,观察点,就是一个断点,这个断点在当以某种方式访问特定内存区域时被触发,这个例子里,当向地址,0 xF000,写时,将触发这个观察点,每一个观察点单元可以设置成一个,观察点,,而且只能设置一个,硬件断点,0,x8000,ARM-0 x3Thumb-0 x1,0,xffffffff,Opcode fetch,0,x8000,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,当内核试图执行内存里一个特定地址的指令时,将会触发一个,硬件断点,这个例子里,当要执行从地址,0 x8000,索取的指令时,将会触发一个,硬件断点,硬件断点,可以在,RAM,或,ROM,里设置,每个观察点单元可以被用来设置一个,硬件断点,,而且只能一个,软件断点,Memory,0,xffffffff,0,xeeeeeeee,0,x0,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,1.,Read and store opcode,2.,Write“special”value,一个,软件断点,是当一个特定的指令从任何地址被预取时触发的一个断点,这个例子表明了观察点单元的配置,这对所有的软件断点都是一样的,为了设置一个断点,可以使用,Multi-ICE,在特定的地方写一个特别的指令这些只能在,RAM,里在操作,每一个观察点单元可以用来设置无数的,软件断点,.,(,The“special”value),命中一个断点,停止模式调试,由标准的,EmbeddedICE&EmbeddedICE-RT,支持,内核进入调试状态和停止状态,内核与系统的其余部分分离,发出,DBGACK,信号(调试器通过,JTAG,而检测到),没有中断处理,除非调试器重新启动执行代码,处理器和系统的状态可以通过扫描内核的指令来察看和修改,紧接着执行它们,监控模式调试,只由,增强功能的,EmbeddedICE-RT,支持,在,ARM9E,ARM10,和稍后的,ARM7TDMI,版本上有,内核通过一个异常中断而进入常驻软件监控程序,可以连续处理中断,处理器和系统的状态可以通过,监控程序的调试命令来,察看和修改,读系统状态,(,在停止模式),从地址,0 x8000,向后读,10,个字,MOV r0,#0 x8000LDMIA r0!,r1-r10-system speedSTMIA r0,r1-r10-debug speed,TDI,TCK,Databus,ARMxD,TCK,registers,Debugspeed,Databus,ARMxD,TDO,r1-r10,1,3,MCLK,registers,Systemspeed,Databus,ARMxD,2,F,D,E,Debugger,RMHost,(RealMonitor.dll),主机,RMTarget,ApplicationCode+Data,目标板,经过,DCC,传送的,实时监控协议,监控模式调试,主机-在,AXD,和,Multi-ICE,之间的控制器,实时监控协议,非常简单的协议,快速 没有出错检查,允许后台命令,实际目标板,小的调试监控程序,(2.0V,时工作,在,3.3V,时,启动电流是,400mA,,一般操作时是 120,mA,Multi-ICE 2.1,出售时跟随一个适当的电源,Multi-ICE,用20-针 连接器,多个接地点,灵活的时钟配置,可以与不同的时钟速度设备同步,长,JTAG,电缆,也可以仅仅利用,5,个信号来调试,请小心停止系统时钟,复位考虑,.,TCK,TDI,TMS,TDO,协议转换,接口,TCK,.,nTRST,nRESET,ARM,Reset Circuit,复位,nSRST,nTRST,nTRST,和,nSRST,必须通过一个上拉电阻来连接,Multi-ICE,在,nTRST,有开放的连接,测验,1)EmbeddedICE,逻辑一共包括多少个观察点单元?,2)ROM,上可以设置多少个断点?,3),利用,DCC semihosting,比一般的,semihosting,有什么优势?,4),为了激活,ARM,的调试功能,,DBGEN,的信号应该怎么连接?,5),为什么,Multi-ICE,需要半字访问内存?,6)EmbeddedICE-RT,提供了哪些额外的调试功能?,议程,基本调试需求,你需要什么样的功能?,ARM,公司的调试和开发,集成,工具。,嵌入式核调试,实现和利用,JTAG,的调试方案,停止模式和监控模式,嵌入式跟踪,整体化和利用,ETM,ARM,开发板,ETM,的机制,(,嵌入式跟踪宏单元,),为什么需要实时跟踪功能?,实时系统不允许停止!,传统的调试(断点和单步执行,),不能满足,必须利用捕获的实际代码运行来调试,为什么不用其它的调试工具而用,ETM?,EmbeddedICE-RT,为调试通讯通道提供了低的带宽,只适用于程序状态信息,外部的指令需要写到通讯通道里,独立的处理器比嵌入式处理器容易调试,一个独立的处理器,或者,:,用外部的,ICE,单元代替处理器,或者,用逻辑分析仪探测处理器的信号,当用嵌入式,ARM,内核时两个都不可能时怎么办啊?,16,bit wide,RAM,8,bit wide,ROM,20,bit Address,16,bit Data,带嵌入式处理器的典型,ASIC,Serial,Ports,ARM,Data,Address,Display,Control,Timer,32,bit wide,Internal,Memory,External,Bus,Interface,问题,没有外部可见的片上,ASIC,总线,带缓存的处理器,(,例如,ARM920T),带有与设备内部相连的核/缓存总线,ICE,版本必须在全速系统速度下运行,随着处理器速度的增加,,ICE,越来越难,同时必须提供,ICE,工具(例如,触发器,),实时跟踪需要确定的,高带宽的接口,需要地址总线,数据总线和控制信号,对于,ARM7TDMI,,有,80,多个,引脚,很多,ASICs,使用相同的处理器核,ICE,必须为每一个,ASIC,定做,ARM,实时跟踪,嵌入式跟踪单元,(ETM),实时指令跟踪,实时数据访问跟踪,包含,ICE,功能,(,触发和过滤逻辑,),MultiTrace,跟踪端口分析器,(TPA),深度缓冲器捕获跟踪,跟踪调试工具,通过,JTAG/Multi-ICE,配置,ETM,跟踪,从,ETM/MultiTrace,里接收压缩的跟踪数据,利用拷贝原代码映象来对,ETM,跟踪,5,ARM,core,ETM,RAM,ROM,TAP,controller,Trace,Trigger/,Filter,9,13,21 线,跟踪接口,5 线,JTAG,接口,串口,/,以太网口,并口,运行跟踪调试工具的主机,(ADS,的附件),ETM,结构,TRACECLK,3(,ETM v1),4(ETM v2),PIPESTAT 2:0(ETM v1),PIPESTAT 3:0(ETM v2),ARM Core,到和来自,ARM,的数据,可综合的,ETM,块,n=4,8 or 16,跟踪端口,(9,13 or 21,引脚),ETM,监控器和简要的,ARM,总线信号,JTAG,接口,Trigger&Filter Logic,PipelineStatusGeneration,TracePacketCapture,n,TRACEPKTn-1:0,TRACESYNC(ETMv1 only),FIFO,TAP Controller,5,到,ARM,的控制,来自,ARM,的控制,来自,ARM,的地址,确定的,ETM-ARM,接口,(,只在,ETM v2),跟踪端口说明,TRACECLK:,与处理器时钟有相同的频率,PIPESTAT,(,流水线状态),表明,:,程序流,是否有一个相关联的,TRACEPKT,ETM,状态,TRACEPKT,(,跟踪包,),可能包含以下一个或多个特征:,数据地址,数据值,指令地址,TRACESYNC,(,只在,ETM v1,有):,用来在,ETM,和,TPA,之间进行同步,*,可以参考,ETM,规范得到更多的信息,n=4,8 or 16,跟踪端口,(9,13 or 21,引脚),TRACECLK,PIPESTAT 2:0(ETM v1),PIPESTAT 3:0(ETM v2),TRACEPKTn-1:0,TRACESYNC(ETMv1 only),指令跟踪,与指令跟踪有关的跟踪端口部分,:,PIPESTAT,表明内核的流水线状态,(,例如,一个指令是否被执行,),TRACEPKT,当需要时,包含一个跳转目标地址,以上两条和代码映象相结合,就可以进行调试了,指令跟踪能够被高度压缩,典型地,一个 9-位的跟踪端口可以处理只有指令的跟踪,ETM v1,最好的情形,:3,位的跟踪信息来跟踪32位的代码,ETM v2,最好的情形,:4,位的跟踪信息来跟踪64位的代码,可以用过滤和触发器:,只对内存地址和/或区域进行跟踪,只有在特定的,ETM,顺序状态,计数器等才进行跟踪,技术注解:,TraceEnable(,一个,ETM,内部信号,),可以激发指令跟踪。它是由触发器/过滤器事件和资源控制的。,数据跟踪,与数据跟踪有关的跟踪端口部分,:,TRACEPKT,包含数据地址或数据值,只有数据地址改变的位被广播,(,目的是节省带宽,),每一次跟踪运行都可以配置,ETM:,数据地址或数据值(或两个都有),读或写(或两个都有),需要一个高的带宽跟踪所有数据,(,有程序相关,),一个带有45个字节,FIFO,的13-位跟踪端口可以跟踪大部分数据传输,如果想跟踪更多数据访问则需要一个21-位的跟踪端口,过滤器和触发器对保持跟踪数据的管理很重要,如果在跟踪信息里有一个,FIFO,溢出标记,那么就表示有部分的跟踪信息被丢掉,推荐使用可编程的过滤器和触发逻辑,技术注解:,ViewData(,一个,ETM,的内部信号,),激发了数据跟踪,(,如果,TraceEnable,是假时被忽略掉,).,它是由触发器/过滤事件和资源控制的。,跟踪例子,0,x1010 MOV r0,#3,0 x1014 SUBS r0,r0,#1,0 x1018 BNE 0 x1014,0 x101C LDR r1,#0 x4000,.,0 x4000 0 x4321 data,IE,IE,IE,r0=2,IE,IE,IE,IN,ID,.,r0=1,r0=0,0,x101C LDR r1,#0 x4000,r1,ID,0,x1018 BNE 0 x1014,0,x1010 SUBS r0,r0,#1,0,x1018 BNE 0 x1014,0,x1014 SUBS r0,r0,#1,0,x1018 BNE 0 x1014,0,x1014 SUBS r0,r0,#1,0,x1010 MOV r0,#3,Corresponding Instruction,none,none,none,none,none,none,none,TRACEPKT,branch not taken,IN,Comment,PIPESTAT,r0=0,IE,direct branch taken,IE,r0=1,IE,direct branch taken,IE,r0=2,IE,r0=3,IE,假设数据跟踪是激活的,(,ViewData,被声明了,),基本指令和直接跳转的,ETM,跟踪,由,PIPESTAT=IE,或,IN,来解码,直接跳转,指令跟踪局限,调试器需要一个代码的拷贝来做参考,自动修改代码部分将不能和,ETM,一起工作,调试器必须知道代码映象的地址映射,代码必须在连接时的地址执行,带有固定代码地址的虚拟内存配置是可以的,现在不支持动态重定位代码,请注意,“,覆盖,”(,例如:把代码调入片上,RAM),如果有很多代码段运行在相同的地址,跟踪不能区分哪一部分在运行。这个例子里,跟踪解压是不可能的。,解决办法是给内存区域命名,(,见下一页),重叠和命名,硬件的命名将每一个段都映射到相同的实际存储器上,用不同的“别名”连接每一个重叠的段执行,PC,值标识了哪一个段在执行,A,A,A,A,A,A,A,B,C,B,B,B,B,A,B,C,C,C,C,C,A,B,C,外部,ROM,片上,RAM(,命名的),注意:必须用命名的方法设计存储器系统,A,A,A,16,K,片上,RAM,0,16,K,32,K,48,K,64,K,16,K RAM,A13:0,A14,A15,ARM,Decoder,A31:16,SEL,IGNORED,控制跟踪,ETM,里的资源是可以被过滤和控制的:,要跟踪的指令,要跟踪的数据访问,外部跟踪端口分析器的触发,ETM,的资源由以下部分组成:,8,个数据比较器,8,对全范围地址比较器,16,个地址解码器,4,个16-位计数器,1,个3-状态序列器,对于,ASIC:,最多 4用户输入,4个用户输出,一个事件可以由任何两个资源逻辑组成:例如,“,within address range 1,AND,data value equals 0 xFFFFFFFF,”,不同的,ETM,实现有不同数量的触发资源,可以看技术文档得到更详细的资料,哪一个,ETM?,根据你的,ARM,内核来选择,ETM7,ETM9,或者,ETM10,选择小的,中等的或大的模式,选择跟踪端口的宽度,(4/8/16),如果高的吞吐率(数据跟踪)很重要的时候,可以选择更宽的端口,可以考虑与其它引脚的多路复用技术(例如,GPIO),调试时可以使用大的宽的,产品时可以使用简单的,窄的,ETM,使用,ATPG,和插入扫描来对产品进行测试,ETM,提供了验证环境套件,下一页将总结配置和数据的大小,ETM,配置,4/8/16,4/8/16,4/8,Port width,45,18,or 20,9,or 10,FIFO Depth,60,k,35,k,25,k,Gate count,大的,中等的,小的,ETM v1(ETM7,9),60,30,15,FIFO Depth,4/8/16,4/8/16,4/8/16,Port width,75,k,50,k,35,k,Gate count,大的,中等的,小的,ETM v2(ETM10),16,8,4,8,4,1,16,8,2,Addr Comparators,大的,中等的,小的,功能,Range Comparators,Addr Decoders,Counters,Ext.Outputs,1,2,4,0,1,4,8,2,0,Data Comparators,Sequencers,0,1,1,Ext.Inputs,2,4,4,实现跟踪(1),所有需要的信号连接到,ARM,核,没有缓存的内核与地址/数据总线和控制信号相连,有缓存的内核输出内核信号到宏单元边缘,(,例如:,ARM920T,版本1),ASIC,上提供跟踪端口,经过基座上输出的最高频率是多少?,ASIC,上要支持多个,ARM,内核吗?,考虑跟踪端口与别的引脚多路复用吗?,最终产品中去除以减少引脚数量吗?,ARM,跟踪捕获和,JTAG,的标准连接器,38-,路的,AMP MICTOR,连接器(高密度),ARM7TDMI,ARM7TDMI-S,ARM720T rev3,ARM7EJ,ARM9TDMI,ARM9E-S/9EJ-S,ARM920T rev1/922T,ARM966E-S,ARM946E-S,ARM926EJ-S,ETM7,ETM9,ARM1020E,ETM10,实现跟踪(2),对,ARM7,和,ARM9,内核,:,CPU,时钟应该自由运行,(,利用,nWAIT,而不是时钟延长,),但不是至关重要的,FIFO FULL,信号可以被用来停止处理器,但是如果,FIFO,满了时,将影响实时性能,ETM,设计的目标不是低功耗,在正常运行操作(没有跟踪)模式下,,ETM,不应该被时钟驱动,ETM,CLK,PWRDOWN,(,通过,JTAG,控制,),ARM,CLK,JTAG,更多更详细的信息请看:,ETM,规范,ETM7/9/10,技术参考手册,(TRMs),ETMEN,跟踪捕获,需要一个外部的跟踪端口分析仪,(TPA),来捕获,ETM,的输出,TPAs,可以在触发事件之前,发生时或之后来跟踪,TPAs,带有很深的跟踪捕获缓冲器,TPA,的缓冲器通过很高速度的上行连接(通常是以太网)来把数据返回给主机,PC,当前可选择的,TPA,:,Multi-Trace,*,Agilent,逻辑分析仪,(,需要,Multi-ICE,或者,Agilent JTAG,探测器,),Agilent ARM(E5904B),的跟踪端口分析仪,2.0,或 更新的,Lauterbach,也提供跟踪工具、仿真器、调试器,MultiTrace,与,Multi-ICE(2.0+),连接一起工作,通过以太网跟踪,通过,JTAG,口控制运行,支持 9,13 和,21,引脚的跟踪端口,频率可高达,200 MHz,1.0V-3.3V,目标电压,支持将跟踪时钟速率降低一半,在上升和下降沿捕获数据,也可以从第三方那获得跟踪分析仪方案,访问:,Multi,ICE,PC,Target,Board,JTAG,Multi,Trace,LAN,跟踪调试工具概况,ADS 1.1/1.2-TDT 1.1.1,作为附加工具加到,AXD,里,有额外的用户接口功能来支持跟踪,通过,JTAG,配置,ETM,收集跟踪信息,解码跟踪信息,跟踪配置,ETM,寄存器设置的,GUI,接口,对所有可能的跟踪和触发,ETM,配置进行全权访问,适合于已实现的资源对话窗口,存储,/,恢复 触发器的例子,跟踪输出,映射回执行窗口,产生交叉源码察看,问题,1),跟踪需要多少个引脚?,2),跟踪输出应该使用什么样的物理连接器,?,3),跟踪端口,(TRACECLK),的速度是多少?,4),大量的数据跟踪需要什么大小的跟踪端口?,5),怎么更好地减少跟踪引脚的多少?,6),什么类型的程序不能被跟踪?,7),如果需要覆盖跟踪,应该需要什么样的硬件功能?,议程,基本调试需求,你需要什么样的功能?,ARM,公司的调试和开发组成工具。,嵌入式核调试,实现和利用,JTAG,的调试方案,停止模式和监控模式,嵌入式跟踪,整体化和利用,ETM,ARM,开发板,Evaluator-7T,ARM,技术的简单介绍,价格低,包括:,Samsung KS32C50100,控制器,512k,闪存,512,k SRAM,2,串口,7个,LED,显示,复位和中断开关,Multi-ICE,连接器,板上,Angel,调试监控工具,ADS,评估版,电压和电缆线,可以从网上购买,Integrator,平台,核模块,ARM,内核,至少 256,kb SSRAM,多达 256,Mb SDRAM,可以叠 4 层,逻辑模块,多达 2,M,门的,FPGA,1Mb SRAM,分析仪/跟踪,连接器,时钟发生器,ASIC,平台,可达5 个核,/,逻辑 模块,系统总线时钟,32Mb,闪存,FPGA,系统控制器,AMBA,和,PCI,扩展,还有接口模块,,分析器模块和,移植模块,请访问:,参考资料,Multi-ICE,Multi-ICE,用户手册,附录,readme.txt,和,troubleshoot.txt,ADS 1.2:AXD,和,armsd,调试器手册,ADS 1.2:,调试目标手册,(,第5章:,Semihosting SWIs),应用注释 31:使用,EmbeddedICE,MultiTrace,ETM7,ETM9,ETM10,技术参考手册,嵌入式跟踪宏单元规范,MultiTrace,用户手册,跟踪调试工具用户手册,通用,你使用的,ARM,内核的调试信息,开发板,
展开阅读全文