组成ARM交叉开发环境的宿主机到目标机的调试通道一般分为一下三种:
-
基于JTAG的ICD(In-Circuit Debugger)(英语翻译,电路内置调试器)
JTAG,边界扫描测试的一个标准协议,大多数边界扫描都是通过JTAG接口实现的;
只要ASIC内部相应寄存器做了边界扫描测试,利用JTAG就可以访问ASIC内部寄存器了;也就是说边界扫描一般是通过移位寄存器结构实现输入测试数据和输出测试数据,这样可以较少测试引脚;
优点:价格便宜。
功能:通过JTAG的方式可以
(1) 读/写CPU的寄存器,访问控制ARM 处理器内核
(2) 读/写内存,访问系统中的存储器
(3) 访问ASIC(专用集成电路)系统
(4) 访问I/O系统;
(5) 控制程序单步执行和实时执行;
(6) 实时的设置基于指令地址或者基于数据值的断点
提示:基于JTAG仿真器的调试是目前ARM开发中采取最多的一种方式 -
Angel调试监控软件(也称驻留监控软件)
特点:(1)运行在目标板上,可以接收宿主机上调试器发送的命令,执行注入设置断点,单步执行目标程序,读写存储器,查看或修改寄存器等操作。
(2)宿主机通过串行端口,,以太网口,并行端口等通讯端口与angel调试监控软件进行通讯。
(3)angle坚实控制程序需要占用一定的系统资源,如内存,通信端口等。
缺点:(1)对硬件设备要求比较高,一般要在硬件稳定后才能进行应用软件的开发,因为占用系统资源的问题,在一些严格的场合下不适合使用; -
在线仿真器ICE(In-Circuit Emulator)
特点:
(1) 模拟CPU的功能,可以完全仿真ARM芯片的行为;
(2) 价格昂贵,难以普及