ARM调试方案-某科技公司arm培训.ppt
《ARM调试方案-某科技公司arm培训.ppt》由会员分享,可在线阅读,更多相关《ARM调试方案-某科技公司arm培训.ppt(53页珍藏版)》请在三一办公上搜索。
1、ARM 调试方案,议程,基本的调试需求你需要什么样的功能?ARM公司的调试和开发工具。嵌入式核的调试实现和利用JTAG的调试方案停止模式和监控模式嵌入式跟踪使用ETMARM 开发板,基本的调试需求,运行控制设置数据访问断点设置指令断点代码的单步执行状态控制处理器状态读写寄存器值系统状态系统内存访问下载代码执行历史执行跟踪信息内存访问历史,ARM 调试系统组件,执行AXD调试器的主机(ADS的一部分)和 Multi-ICE server,协议转换器(Multi-ICE),跟踪接口单元(MultiTrace),开发板(Integrator Core Module),Trace Port,JTAG
2、Port,并口,串口l/以太网,议程,基本的调试需求你需要什么样的功能?ARM公司的调试和开发组成工具。嵌入式核调试实现和利用JTAG的调试方案停止模式和监控模式嵌入式跟踪整体化和利用ETMARM 开发板,嵌入式核调试,5 线JTAG,被调试的系统可以是最终的系统!也可以用第三方的协议转换工具:DevSupp/ICE_Analyz/,Data,Address,Control,BREAKPT,CPU,ARM,调试器和Multi-ICE server(可以运行在不同的机器上),TAP,EmbeddedICELogic-RT,嵌入式ICE逻辑,两个观察点单元可以通过监控地址总线,数据总线和控制信号来
3、探测观察点(watchpoint)和断点。每个单元可以用来提供1 观察点,或1个 ROM或RAM里的硬件断点,或RAM里的多个软件断点调试控制和状态寄存器调试通讯通道注意:ARM10ARM10家族的调试结构是不同的,虽然原理是一样的。一共包括8个观察点单元6 个在指令地址总线上2个在数据地址总线上 这个将在另外一个课题中讲解,观察点,Control,AddrValue,DataValue,ControlValue,AddrMask,DataMask,ControlMask,A31:0,Comparator,Watchpoint,D31:0,0 xF000,0 x0,0 xffffffff,Da
4、ta 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,AddrValue,DataValue,ControlValue,AddrMask,DataMask,Cont
5、rolMask,A31:0,Comparator,Breakpoint,D31:0,当内核试图执行内存里一个特定地址的指令时,将会触发一个硬件断点这个例子里,当要执行从地址0 x8000索取的指令时,将会触发一个硬件断点硬件断点可以在RAM或ROM里设置每个观察点单元可以被用来设置一个硬件断点,而且只能一个,软件断点,Memory,0 xffffffff,0 xeeeeeeee,0 x0,Opcode fetch,Control,AddrValue,DataValue,ControlValue,AddrMask,DataMask,ControlMask,A31:0,Comparator,Bre
6、akpoint,D31:0,一个软件断点是当一个特定的指令从任何地址被预取时触发的一个断点这个例子表明了观察点单元的配置 这对所有的软件断点都是一样的为了设置一个断点,可以使用Multi-ICE在特定的地方写一个特别的指令这些只能在RAM里在操作每一个观察点单元可以用来设置无数的软件断点.,(The“special”value),命中一个断点,停止模式调试由标准的 EmbeddedICE&EmbeddedICE-RT支持内核进入调试状态和停止状态内核与系统的其余部分分离发出DBGACK信号(调试器通过JTAG而检测到)没有中断处理,除非调试器重新启动执行代码处理器和系统的状态可以通过扫描内核的
7、指令来察看和修改,紧接着执行它们监控模式调试只由增强功能的 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,
8、TDO,r1-r10,1,3,MCLK,registers,Systemspeed,Databus,ARMxD,2,Debugger,RMHost(RealMonitor.dll),主机,RMTarget,ApplicationCode+Data,目标板,经过DCC传送的实时监控协议,监控模式调试,主机-在AXD 和 Multi-ICE之间的控制器实时监控协议 非常简单的协议快速 没有出错检查允许后台命令实际目标板小的调试监控程序(2k 代码字节)集成在目标里以目标代码和原代码的形式提供,调试通讯通道,在ARM和主机调试器之间通过JTAG的通讯信息是由简单串行通讯口来实现的不进入调试模式和停止
9、程序执行ARM上运行的应用代码经过协处理器14来访问三个寄存器通讯数据读寄存器(Comms Data Read Register)主机到ARM的通讯通讯数据写寄存器(Comms Data Write Register)ARM到主机的通讯通讯数据控制寄存器(Comms Data Control Register)提供在ARM和主机之间同步的握手信号位 1 写位-当ARM写入新数据时清掉位 0 读位 当ARM有新数据读时设置,DCC 查询模式通讯,Write Register,R,W,Control Register,Scan chain 2,;拷贝 DCC 控制寄存器到 r2MRC p14,0,
10、r2,c0,c0,0;检查DCC 控制寄存器的位1TST r2,#0 x2;如果位1清掉了,拷贝数据从r1到 DCC 写寄存器 MCREQ p14,0,r1,c1,c0,0,;拷贝 DCC 控制寄存器到 r2MRC p14,0,r2,c0,c0,0;检查DCC 控制寄存器的位0TST r2,#0 x1;如果位0设置,拷贝数据从DCC 写寄存器 到r3 MRCNE p14,0,r3,c1,c0,0,调试器查询控制寄存器利用扫描链2来察看什么时候写位被设置,读位被清掉接着数据可以被扫描进入或者输出,r1,r3,Read Register,ARM,DCC 利用中断进行通讯,R,COMMRX,Inte
11、rruptController,COMMTX,nIRQ,W,Other interrupt sources,通过Multi ICE连接的调试器,向量捕获,允许没有处理软件的异常机制的捕获在ARM7TDMI 上执行利用断点当从ROM 地址 0 x0 调试时关闭在ARM9TDMI/ARM10和后来的版本上执行利用专门的硬件只对硬件异常敏感到向量表里的跳转将不被捕获留下观察点单元作为一般使用一旦有你自己的处理,则关掉向量捕获AXD:spp vector_catch 0,%RUsPDaif,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software In
12、terrupt,Undefined Instruction,Reset,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,0 x00,ARM 目标上运行的库代码,但是任何需要的底层的I/O是由主机提供的 SWI 机制提供的主机访问.SWI 接口是ARMulator,Angel 和 Multi-ICE通用的组成部分Semihosted 程序将运行在所有的ARM目标板上,而不需要 移植需要连接的调试工具提供这些功能,Semihosting,:printf(“hellon”);:,应用代码,:SWI:,库代码,SWI 服务程序,与主机上运行的调试器通讯,hello,
13、通过JTAG 的Semihosting,spp semihosting_vector 0 x8spp semihosting_enabled 1,关掉:spp semihosting_enabled 0,Breakpoint,0 x108,0 x104,0 x100,.,SWI,.,pc=0 x8lr=0 x108,MOVS pc,lr,Multi-ICE仿真的SWI服务程序,0 x00,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,Semihosting 加上用户SWIs,spp semihosting_enabled 1spp semihosting_
14、vector 0 x450,Breakpoint,0 x108,0 x104,0 x100,.,SWI,.,lr=0 x108,MOVS pc,lr,SWI Handler,SemiSWI,STMFD sp!,regsLoad SWI numberB if semiSWIDeal with SWI:,LDMFD sp!,regsMOVS pc,lr,0 x450,0 x00,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,spp semihosting_dcchandler_address 0 x70000spp semihosting_vector 0 x
15、8spp semihosting_enabled 2,0 x00,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,0 x108,0 x104,0 x100,.,SWI,.,pc=0 x8lr=0 x108,MOVS pc,lr,DCC Semihosting,0 x70000,DCC,DCCSemihosting HandlerCode,直接对EmbeddedICE访问,AXD 允许直接对EmbeddedICE 逻辑寄存器访问可以直接通过 GUI或如下的命令行察看REGisters”EICE Watch 0”在地址0 x4000写时设置一个观察点:sreg
16、EICE Watch 0|Address Value 0 x00004000sreg EICE Watch 0|Address Mask 0 sreg EICE Watch 0|Data Value 0sreg EICE Watch 0|Data Mask 0 xFFFFFFFF sreg EICE Watch 0|Control Value 0 x10Dsreg EICE Watch 0|Control Mask 0 x0F8注释:ARM调试器优先与 ADS1.1 通过协处理器0访问EmbeddedICE 逻辑寄存器.,利用Multi-ICE调试设计,确信 DBGEN 是接高电平!Thumb
17、 代码上的软件断点需要半字访问RAM必须总是字/半字/字节访问内存Multi-ICE可以在1.0V 到 5.0V时调试系统自适应到目标逻辑电压目标板可以在2.0V时工作在3.3V时,启动电流是400mA,一般操作时是 120mAMulti-ICE 2.1 出售时跟随一个适当的电源Multi-ICE用20-针 连接器多个接地点灵活的时钟配置可以与不同的时钟速度设备同步 长 JTAG 电缆也可以仅仅利用5 个信号来调试请小心停止系统时钟复位考虑.,TCK,TDI,TMS,TDO,协议转换接口,TCK,.,nTRST,nRESET,ARM,Reset Circuit,复位,nTRST 和 nSRST
18、 必须通过一个上拉电阻来连接Multi-ICE 在 nTRST 有开放的连接,测验,1)EmbeddedICE 逻辑一共包括多少个观察点单元?2)ROM上可以设置多少个断点?3)利用DCC semihosting比一般的 semihosting有什么优势?4)为了激活ARM的调试功能,DBGEN 的信号应该怎么连接?5)为什么Multi-ICE需要半字访问内存?6)EmbeddedICE-RT 提供了哪些额外的调试功能?,议程,基本调试需求你需要什么样的功能?ARM公司的调试和开发集成工具。嵌入式核调试实现和利用JTAG的调试方案停止模式和监控模式嵌入式跟踪整体化和利用ETMARM 开发板,E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 调试 方案 科技 公司 培训
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5415702.html