在线调试器和在线仿真器之间的功能区别是什么?


12

在线仿真器(缩写为ICE)以其出色的调试功能而自豪,并且还具有很高的价格标签。

在线调试器(缩写为ICD)可以完成ICE可以执行的大部分工作,但通常成本要低得多。

我知道,从那时起,ICE实际上会从插座上卸下有问题的芯片,并用仿真器电缆替换,但是使用现代QFN,BGA和易碎的TQFP封装,似乎大多数产品都称自己为“ ICE”调试器连接到调试头的方式与ICD几乎相同。

以下是一些名称中使用“ ICE”的产品示例:

还有一些来自多家供应商的JTAG'ICE'产品,请注意,由于它们不是真正的在线电路,因此我不对它们进行打折,但是如果它们不能用作真正的ICE,我会对其进行打折。

在哪种开发任务中需要ICE,什么时候应该满足ICD?假设我想单步执行代码,而不使用LED和printf()语句。

您使用ICE解决了一些问题的实例,但如果没有它就无法(实际上)解决?

Answers:


19

ICE(在线仿真器)替换目标芯片。它在电路的其余部分就像真正的芯片一样工作,但是内部具有各种挂钩,因此您可以查看正在发生的事情,设置断点,加载新代码,抓取轨迹等。ICD(在线调试器)使用为此目的,在目标芯片上添加了特殊的调试硬件,并尝试为您提供类似于ICE的功能。不幸的是,市场营销人员开始投入精力,并试图重新定义这些长期的术语,以欺骗您,使您认为他们的产品比下一个更好。Microchip的RealIce就是一个特别出色的例子。它是真实的,但它不是ICE。

真正的ICE(不是RealIce)是最好的在线调试环境。不幸的是,由于制造用于ICE的目标芯片专用键合版本的高昂成本,以及速度变得如此之高以至于无法取出任何芯片的事实,这些技术已经几乎消失了。另一个问题是,ICE要求目标芯片位于插槽中,或者需要安装专用适配器代替目标芯片,以便ICE可以连接至其线路。

因此,今天我们受困于ICD。幸运的是,它们完成了您想要使用ICE进行的大多数操作。它们甚至具有一个优势,即代码在真实的目标芯片上运行,而不是目标芯片那样运行。缺点是它们需要片上资源,因此与ICE一样,它们对您的代码和硬件也不是完全透明的。ICD需要访问调试行,调试行通常可以具有多个角色。调试时,不能将这些引脚用作其他角色。内置在每个部分中的调试电路的数量必须保持在总数的一小部分,否则成本将太高,因此必须牺牲功能。真正的跟踪功能是在每个芯片上增加的一项过于昂贵的好功能,因为这需要较大的RAM缓冲区。

每个问题最终都可以使用各种工具解决。这不是您是否可以解决它,而是需要花费多长时间和多少努力。当我定期使用ICE(Microchip ICE-2000和ICE-4000)时,我并不经常使用跟踪功能,但是当我使用其他方法时,成本会大大增加。有时您会遇到一个错误,其中变量突然具有错误的值。您单步执行代码,一切都很好,并且操纵该变量的例程似乎可以正确执行所有操作,但是当您运行该例程时,最终情况就荡然无存,您发现该变量已被废弃。原因是其他一些指针错误,缓冲区溢出,堆栈不匹配等的代码。使用ICE,您可以在要更改的变量上设置断点,

大多数情况下,ICD会做得很好。尤其是对于大型芯片,专用于调试的一对引脚并不是什么大问题。如今,我主要使用RealIce进行调试。它比ICD2稳定得多,而且片状少。您将学习与之共存。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.