1.指令集模拟器
一些集成开发环境提供了指令集模拟器,可以方便用户在PC上完成一些简单的调试工作。然而,由于指令集模拟器与真实的硬件环境截然不同,即使用户使用指令集模拟器调试程序,他们也可能无法在真实的硬件中运行,用户最终必须在硬件平台上完成整个应用程序的开发。
2.驻地监测软件
常驻监视器是在目标板上运行的程序。集成开发环境中的调试软件通过以太网端口、并行端口、串行端口和其他通信端口与常驻监控软件交互。调试软件发出命令,通知常驻监控软件控制程序、读写存储器、读写寄存器和设置断点的执行。
常驻监测软件是一种相对廉价且有效的调试方法,无需任何其他硬件调试和模拟设备。天使公司就是这种软件。大多数嵌入式实时操作系统也使用这种软件进行调试。不同之处在于,在嵌入式实时操作系统中,驻留监控软件作为操作系统的一项任务存在。
常驻监测软件的不便之处在于它对硬件设备的要求很高。通常,应用软件开发只能在硬件稳定后进行。同时,它占用了目标板上的部分资源,无法完全模拟程序的全速运行。因此,它不太适合一些要求严格的情况。
3.JTAG模拟器
JTAG模拟器,也称为JTAG调试器,是一种通过ARM芯片的JTAG边界扫描端口进行调试的设备。JTAG仿真器相对便宜且连接方便。它通过现有的JTAG边界扫描端口与arm CPU内核进行通信。它是完全不插入的(即不使用片上资源)调试。它不需要目标内存,也不占用目标系统的任何端口,这是驻留监控软件所必需的。此外,由于JTAG调试的目标程序是在目标板上执行的,并且仿真更接近目标硬件,因此许多接口问题,如高频操作限制、交流和直流参数不匹配以及导线长度限制都被最小化。使用集成开发环境和JTAG模拟器进行开发是目前使用最广泛的调试方法。
4.在线模拟器
在线模拟器使用模拟头完全替换目标板上的CPU,可以完全模拟ARM芯片的行为,并提供更深入的调试功能。然而,为了全速模拟时钟速度高于100MHz的处理器,这种模拟器通常不得不采用极其复杂的设计和技术,因此其价格相对昂贵。在线仿真器通常用于arm的硬件开发,但在软件开发中使用较少。其高昂的价格也是难以普及在线模拟器的一个因素。