我正在使用用于调试汽车嵌入式系统的iSystem调试器盒。
我不禁想知道这些盒子里面是什么以及它们如何工作。
我只了解一端有一个USB接口,另一端有一个JTAG接口。我猜会有电子设备将USB信号转换为TTL,但是在此之后我不确定。
该框是否只是负责通过JTAG接口(由我们命令)在我们的代码中实时设置断点,并通过USB将有关MCU状态的信息中继回给我们?到底是什么使它如此复杂和昂贵?
答案 0 :(得分:0)
里面到底有什么会变得如此复杂和昂贵
什么都没有。但是这些仅以小批量出售-我希望为特定的调试器出售1k到10k甚至更少。
但是对于硬件和软件,您仍然需要固定的开发成本。这样会导致单位成本很高,而这与硬件完全没有关系。
这类盒子里有什么
通常情况下,某些启用USB的微控制器和电平转换器有时会隔离(汽车ISP应用程序需要隔离)。
答案 1 :(得分:0)
在大多数现代处理器上,大多数调试工作都是在芯片上执行的。在进行片上调试之前,在线仿真器非常复杂,甚至更昂贵-我记得针对英特尔8051项目的出租,其每周租金可能比大多数JTAG Pod的成本还高。 。这也是一块大书本大小的平板,上面有一个昂贵而又易碎的调试探针,您将它插入处理器的板中,而不是板中。
即使片上调试提供诸如指令级单步执行,断点以及存储器和寄存器访问之类的服务,调试主机也需要做一些工作。通常,这项工作是由主机PC进行的,而在昂贵的调试硬件解决方案上,通常是在调试器接口上实现的。
例如,GNU调试器GDB需要一个“ GDB存根”-主机调试器软件和目标硬件之间的软件接口。 GDB存根可以在目标上运行-例如,对于Linux,它允许在没有任何调试硬件的情况下通过网络甚至是串行接口进行“远程调试”,但是不适合裸机和主板调试。在其他情况下,存根在主机上运行-例如,常见的OpenOCD为非常简单的JTAG片上调试硬件提供了此功能。在更昂贵的调试器中,存根可能会在调试器硬件本身上运行,因此硬件必须具有处理能力。
JTAG的物理接口或专有的片上调试接口很简单。使用主机驻留调试软件(例如OpenOCD)的实现根本不需要非常复杂。实际上,在PC具有用于打印机连接的并行端口的日子里,可以使用它来驱动JTAG信号,因此硬件完全笨拙-所谓的“ Wiggler”设计。简单的现代“ wiggler”类型的设计也很笨拙,但通常需要USB到并行端口的设备芯片或小型微控制器来执行该功能。这些通常很慢。
更复杂的调试器通常包含一个微控制器,以为JTAG提供USB设备接口和更快的I / O。支持调试跟踪的设备需要相对较高的I / O速度以及快速传输大量数据的能力。
https://www.isystem.com/products/hardware/on-chip-analyzers.html上的所有iSystem调试器还具有以太网连接和大型高带宽板载调试跟踪缓冲区,以及模拟和数字输入,用于与代码调试并行地监视连接的系统。它们似乎比典型的低端调试器要复杂得多,您将其描述为“ 一端为USB接口,另一端为JTAG接口”。这表明它们具有超越简单调试器的功能。
iSystem设备还支持多种体系结构,其中大多数低成本解决方案是特定于体系结构的或依赖于主机来支持多种体系结构。没什么特别使它们在硬件级别上特定于体系结构的。
最终,您所支付的价格与物理硬件的成本几乎没有关系-售价35美元的Raspberry Pi甚至可能比最先进的JTAG调试器还要强大。这些设备(尤其是高端设备)的数量很少,并且开发成本相对较高,因此您要支付的是摊销的开发成本,专业知识以及卖方/制造商提供的持续销售和技术支持。作为开发人员,您将意识到,如果您靠谋生和公司获利,这些东西并不是免费的。查看iSystem文档,您不仅在购买硬件-该软件包还包括WinIDEA调试软件-是否值得一看,我不熟悉。
如果通过“一端是USB接口,另一端是JTAG接口”来满足您的调试需求。,也许您不需要像iSystem那样复杂的设备。它也支持示波器和逻辑分析仪的功能,但与代码指令跟踪同步-对于复杂系统非常强大。