1.1 ROM Monitor
ROM Monitor是被固化且运行在目标机上的一段程序,负责监控目标机上被调试的程序的运行,与宿主机端的调试器一起完成对应用程序的调试。
调试器与ROM Monitor之间的通信遵循远程调试协议。
宿主机 调试器
目标机 监控程序和被调试程序
在目标机上电或复位后首先执行的就是 ROM Monitor,它对目标机进行一些必要的初始化,如最基本的串口和用于 内存刷新的系统计时器芯片;
初始化用于下载映像的内存系统;初始化中断控制器和安装中断处理程序。
初始化自己的程序空间 等待宿主机端的命令
ROM Monitor能配合调试器完成:程序映像下载,对目标机系统内存的读写,对寄存器的读写,设置和清除不同类型的断点,单步执行指令,复位系统等调试功能
ROMMonitor调试过程
(1) 目标机上监控器掌握对目标机的控制,等待和调试器建立连接;
(2) 启动调试器,并和监控器建立起通信连接;
(3) 使用调试器将应用程序下载到目标机上的RAM空间中;
(4) 使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来 获取对目标机的控制,将命令执行结果回传给调试器;
(5) 如果程序有问题,在调试器的帮助下定位错误,修改之后再重新编译链接并下载程序,开始新的调试, 如此反复直至程序正确运行为止。
ROM Monitor
优点
1) 提高调试程序的效率 ,缩短开发周期,
降低成本
2) 简单、方便 3) 可扩展性强,可支持许多高级调试功能 4) 成本低廉,不需
缺点
DebugMonitor需要用Crashand Burn方法开发。 当ROMMonitor占用CPU时,应用程序不响应外部的中断,因此不便调试有时间特性的程序。 某些调试功能依赖于CPU硬件的支持(如硬件断点功能)ROM Monitor要占用目标机一定数量的资源,如CPU、RAM、ROM和通信设备等资源。 调试环境不同于实际目标环境。
1.2 ROM Emulator
ROM Emulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用
这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROM Emulator设备上
ROM芯片的内容:ROM Emulator设备上的ROM芯片的地址可以实时地映射到目标机的
ROM地址空间,从而仿真(Emulation) 目标机的ROM。
ROM Emulator的调试方式是一种不完全的调试方式:ROMEmulator设备只是为目标机提供ROM芯片和在Target和Host间建立一条高速的通信通道,因此它经常和前
面两种调试方式结合起来形成一种完备的调试方式。ROM Emulator的典型应用就是和 ROMMonitor的调试方式相结合。
优点:目标机可以没有ROM芯片、可以使用ROM Emulator提供的ROM空间且不需要
用别的工具来写ROM。
缺点:目标机必须能支持外部ROM存储空间,而且由于其通常要和ROMMonitor配合使用, 因此它拥有ROMMonitor的所有缺点。
1.3 In-Circuit Emulator(ICE)
ICE是一种用于替代目标机上CPU的设备,即在线仿真器。 它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。
ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也
可以进行代码的调试。
连接ICE和目标机时,一般是将目标机的CPU 取下,而将ICE的CPU引出线接到目
标机的 CPU插槽.用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。
功能特点
同时支持软断点和硬件断点的设置 设置各种复杂的断点和触发器 实时跟踪目标程序的运行,并可实现选择性的跟踪支持“Time Stamp”,允许用户设置“Timer”.提供“Shadow RAM”,能在不中断被调试程序 的运行下查看内存和变量即非干扰调试查询
缺点:
价格太昂贵,不利于团队开发 所仿CPU有限.
1.4 In-Circuit Debugger(ICD)
主流的是JTAG调试,JTAG标准所采用的是主要技术是边界扫描技术。基本思想是靠近芯片的输入输出管脚上增加一个移位寄存器单元。
该接口一般由5个引脚组成:
测试数据输入(TDI)
测试数据输出(TDO)
测试时钟(TCK)
测试模式选择引脚(TMS)
异步测试复位引脚(TRST可选)