浙江大学ARM课件8培训资料

上传人:yuzo****123 文档编号:143774224 上传时间:2020-09-02 格式:PPT 页数:53 大小:732.50KB
返回 下载 相关 举报
浙江大学ARM课件8培训资料_第1页
第1页 / 共53页
浙江大学ARM课件8培训资料_第2页
第2页 / 共53页
浙江大学ARM课件8培训资料_第3页
第3页 / 共53页
浙江大学ARM课件8培训资料_第4页
第4页 / 共53页
浙江大学ARM课件8培训资料_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《浙江大学ARM课件8培训资料》由会员分享,可在线阅读,更多相关《浙江大学ARM课件8培训资料(53页珍藏版)》请在金锄头文库上搜索。

1、ARM 调试方案,议程,基本的调试需求 你需要什么样的功能? ARM公司的调试和开发工具。 嵌入式核的调试 实现和利用JTAG的调试方案 停止模式和监控模式 嵌入式跟踪 使用ETM ARM 开发板,基本的调试需求,运行控制 设置数据访问断点 设置指令断点 代码的单步执行 状态控制 处理器状态 读写寄存器值 系统状态 系统内存访问 下载代码 执行历史 执行跟踪信息 内存访问历史,议程,基本的调试需求 你需要什么样的功能? ARM公司的调试和开发组成工具。 嵌入式核调试 实现和利用JTAG的调试方案 停止模式和监控模式 嵌入式跟踪 整体化和利用ETM ARM 开发板,嵌入式核调试,5 线 JTAG

2、,被调试的系统可以是最终的系统! 也可以用第三方的协议转换工具: ,Data,Address,Control,BREAKPT,CPU,ARM,调试器和Multi-ICE server (可以运行在不同的机器上),TAP,EmbeddedICE Logic-RT,嵌入式ICE逻辑,两个观察点单元 可以通过监控地址总线,数据总线和控制信号来探测观察点(watchpoint)和断点。 每个单元可以用来提供 1 观察点, 或 1个 ROM或RAM里的硬件断点,或 RAM里的多个软件断点 调试控制和状态寄存器 调试通讯通道 注意:ARM10 ARM10家族的调试结构是不同的,虽然原理是一样的。 一共包括

3、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 写时,

4、将触发这个观察点 每一个观察点单元可以设置成一个观察点,而且只能设置一个,硬件断点,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,当内核试图执行内存里一个特定地址的指令时,将会触发一个硬件断点 这个例子里,当要执

5、行从地址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,一个软件断点是当一个特定的指令从任何地址被预取时触发的一个断点 这个例子表明了观察点单元的配置 这对所

6、有的软件断点都是一样的 为了设置一个断点,可以使用Multi-ICE在特定的地方写一个特别的指令这些只能在RAM里在操作 每一个观察点单元可以用来设置无数的软件断点.,(The “special” value),命中一个断点,停止模式调试 由标准的 EmbeddedICE 拷贝 DCC 控制寄存器到 r2 MRC p14,0,r2,c0,c0,0 ; 检查DCC 控制寄存器的位1 TST r2,#0 x2 ; 如果位1清掉了,拷贝数据从r1到 DCC 写寄存器 MCREQ p14,0,r1,c1,c0,0,; 拷贝 DCC 控制寄存器到 r2 MRC p14,0,r2,c0,c0,0 ;检查D

7、CC 控制寄存器的位0 TST r2,#0 x1 ; 如果位0设置,拷贝数据从DCC 写寄存器 到r3 MRCNE p14,0,r3,c1,c0,0,调试器查询控制寄存器利用扫描链2来察看什么时候写位被设置,读位被清掉接着数据可以被扫描进入或者输出,r1,r3,Read Register,ARM,DCC 利用中断进行通讯,R,COMMRX,InterruptController,COMMTX,nIRQ,W,Other interrupt sources,通过Multi ICE 连接的调试器,向量捕获,允许没有处理软件的异常机制的捕获 在ARM7TDMI 上执行利用断点 当从ROM 地址 0 x

8、0 调试时关闭 在ARM9TDMI/ARM10和后来的版本上执行利用专门的硬件 只对硬件异常敏感 到向量表里的跳转将不被捕获 留下观察点单元作为一般使用 一旦有你自己的处理,则关掉向量捕获 AXD : spp vector_catch 0,%RUsPDaif,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,0 x00,ARM 目标上运行的库代码, 但是任何需要的底层的I/O是由

9、主机提供的 SWI 机制提供的主机访问. SWI 接口是ARMulator, Angel 和 Multi-ICE通用的组成部分 Semihosted 程序将运行在所有的ARM目标板上,而不需要 移植 需要连接的调试工具提供这些功能,Semihosting,: printf(“hellon”); :,应用代码,: SWI :,库代码,SWI 服务程序,与主机上运行的 调试器通讯,hello,通过JTAG 的Semihosting,spp semihosting_vector 0 x8 spp semihosting_enabled 1,关掉: spp semihosting_enabled 0,

10、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 1 spp semihosting_vector 0 x450,Breakpoint,0 x108,0 x104,0 x100,.,SWI ,.,lr = 0 x108,MOVS pc, lr,SWI Handler,Sem

11、iSWI,STMFD sp!,regs Load SWI number B if semiSWI Deal with SWI : : :,LDMFD sp!,regs MOVS 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 x70000 spp semihosting_vector 0 x8 spp semihosting_enabled 2,0 x00,0 x1C,0 x18,0 x14,0 x10,0 x0C,0 x08,0 x04,0 x

12、108,0 x104,0 x100,.,SWI ,.,pc = 0 x8lr = 0 x108,MOVS pc, lr,DCC Semihosting,0 x70000,DCC,DCC Semihosting Handler Code,直接对EmbeddedICE访问,AXD 允许直接对EmbeddedICE 逻辑寄存器访问 可以直接通过 GUI或如下的命令行察看 REGisters ”EICE Watch 0” 在地址0 x4000写时设置一个观察点: sreg EICE Watch 0|Address Value 0 x00004000sreg EICE Watch 0|Address M

13、ask 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 代码上的软件断点需要半字访问RAM 必须总是字/半字/字节访问内存 Multi-ICE可以在1.0V 到 5.0V时调试系

14、统 自适应到目标逻辑电压 目标板可以在2.0V时工作 在3.3V时,启动电流是400mA , 一般操作时是 120mA Multi-ICE 2.1 出售时跟随一个适当的电源 Multi-ICE用20-针 连接器 多个接地点 灵活的时钟配置 可以与不同的时钟速度设备同步 长 JTAG 电缆 也可以仅仅利用5 个信号来调试 请小心停止系统时钟 复位考虑.,TCK, TDI, TMS, TDO,协议转换 接口,TCK, .,nTRST,nRESET,ARM,Reset Circuit,复位,nTRST 和 nSRST 必须通过一个上拉电阻来连接 Multi-ICE 在 nTRST 有开放的连接,测验

15、,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

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

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

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