EDA365电子工程师网

标题: ARM的调试结构 [打印本页]

作者: cyxs    时间: 2016-10-22 15:20
标题: ARM的调试结构
嵌入式系统的调试如果使用如逻辑分析仪一类的测试仪器,则可能从外部监事嵌入式系统运行调试的方法,而无法准确地反应系统内部的实际运行状态。功能强大的嵌入式调试工具支持单步执行、设置断点等功能,可以从内部运行观察系统。
当要调试的系统是一个运行于PC机上的程序时,所有用户接口模式已准备好,并且调试器本身是运行于这台机器上的另一个软件。设置断点时,调用调试器来代替目标程序的指令。要记住原始指令,以便程序的执行越过断点时恢复这条指令。通常编译器有编译选项以产生扩展调试信息,如符号表。使用符号表,用户就可在源代码级调试程序,用源代码中的名字对变量寻址而不是用存储器地址。源代码级调试非常有用,与目标级代码调试非常有用,与目标级调试相比,它只需要对机器环境有较少了解。
1.
嵌入式调试
如果系统是嵌入式的,则调试变得更加困难。由于系统使用的是交叉开发环境,因此调试工具必须是在远程主机即宿主机上运行,并通过某种通信方式与目标机器连接。如果代码存放在ROM中,由于不能进行写操作,因此指令不能简单地由调试工具调用。
采用在线仿真器ICE是一个标准的嵌入式解决方案,在线仿真器使用仿真头完全取代目标板上的处理器,可完全仿真ARM芯片的行为,提供更加深入的调试功能。仿真器上的处理器可以是一个相同的芯片,也可以是一个有很多引脚的变型芯片。
2.
调试处理器核
ICE方法是依赖于系统中确实有能够去除并由ICE代替的处理器芯片。显然,如果处理器是一个复杂系统芯片上许多IP核中的一个,那么这一点就是不可能的。尽管使用软件模型仿真在物理实现前可去除许多设计错误,但通常在仿真时运行整个软件系统是不可能的,并且精确地描述所有实时约束也是困难的。由此看来,对整个硬件和软件系统进行调试时很有必要的。
3.
ARM调试硬件
为了提供与ICE相似的调试工具,对于运行在ROM和RAM中的代码,用户必须能够设计断点和观察点,检查并修改处理器核系统的状态,观察处理器在感兴趣点活动的轨迹,而且所有这些都应有着良好用户界面的PC系统上方方便做到。ARM系统使用的跟踪机制与其他调试系统不同,它很好地解决了断点、观察点及状态监控的资源。
目标系统与主机之间通过扩展JTAG测试端口的功能来实现通信。为了方便板级测试,大多数芯片都有JTAG测试引脚。通过这些引脚测试不需要额外的专用引脚,节省了芯片的宝贵资源,以备将来使用。JTAG扫描链用于访问断点及观察点寄存器,并向处理器施加指令来访问处理器及系统的状态。
实现断点设置及观察点寄存器的硬件代价非常小,一般是产品能够接受的。主机系统运行标准的ARM开发工具,并通过一个串行口和/或并行口与目标系统通信。在主机串行与目标的JTAG端口之间有专用的协议实现通信。
除了断点和观察点事件,当系统级事件发生时,也可能希望处理器停止。
4.EmbeddedICE
ARM的EmbeddedICE调试结构是一种基于JTAG的ARM内核调试通道,提供了传统的在线仿真系统的大部分功能,可调式一个复杂系统中的ARM核。
EmbeddedICE是基于JTAG测试端口的扩展,引入了附加的断点和观测点寄存器,这些数据寄存器可通过专用JTAG指令来访问,一个跟踪缓冲器也可用相似的方法访问。ARM核周围的扫描路径可将指令加入ARM流水线,并且不会干扰系统的其他部分。这些指令可访问及修改ARM和系统的状态。ARM的EmbeddedICE具有典型的ICE功能,如条件断点、单步运行。由于这些功能的实现是基于片上JTAG测试访问端口进行测试,芯片不需要增加额外的引脚,同时也避免使用笨重的、不可靠的探针接插设备完成调试,而且芯片中的调试模块与外部的系统时序分开,它可以芯片内部的独立时钟速度直接运行。
EmbeddedICE模块包括两个观察点寄存器和控制与状态寄存器。当地址、数据和控制信号与观察点寄存器的编程数据相匹配时,也就是触发条件满足时,观察点寄存器可以中止处理器。由于比较是在屏蔽控制下进行的,因此当ROM或RAM中的一条指令执行时,任何一个观察点寄存器均可配置为能够中止处理器的断点寄存器。
作者: Gegu    时间: 2016-10-24 13:59
学习中,谢谢分享





欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2