Answers:
是的,可以将Arduino转换为ARM JTAG适配器。
存在三个问题,电压,速度和驱动器。
Arduino本机以5V运行。大多数ARM微控制器的JTAG引脚不能承受5V电压,并且需要3.3V电压。最简单的解决方案是在3.3V 电压下运行Arduino,否则您将需要某种电平转换(有关想法,请参阅I2C 3.3到5.0V转换)。
Arduino通过串行链接连接到PC。我怀疑它的速度是否可能超过115200bps,这会使交互式活动(如在调试器中单步执行代码)非常慢。但是,您将能够上载代码并刷新设备。
JTAG是特定于每个处理器系列的高级协议,它使用类似SPI的接口来交换数据。大多数JTAG加密狗仅通过USB提供SPI接口,然后将其余工作留给PC应用程序。OpenOCD和URJTag是流行的选择。您需要其中一个驱动程序才能使用Arduino JTAG协议。
海盗车与Arduino(低速微控制器+ FTDI芯片)非常相似。它支持带有OpenOCD的JTAG,因此肯定有可能。
如果使用Teensy / Opendous或其他AVR-USB板,则可以使用eStick-JTAG。
但是,为了节省成本,JTAG,我建议使用基于FTDI2232的加密狗之一。它们很便宜,并且得到OpenOCD的良好支持。
有可能,但是非常困难。我不喜欢基于FTDI的JTAG,因为FTDI芯片是现成的黑匣子,并且使用它们并不能真正学习。
如果我想用AVR构建USB-JTAG,我会在芯片中得到至少USB全速支持。然后获取AVR usb堆栈(c源代码)并查看一个usb-to串行示例。由于通过USB进行位撞击是一个坏主意(高延迟),因此需要将其转换为更高级别的命令,这些命令将指示MCU自行进行位撞击(或在可能的情况下使用SPI)并通过USB返回高层结果(完整字节) )。但是随之而来的是,需要为IDE编写驱动程序,以支持新的JTAG设备对其进行调试。OpenOCD和URJTag具有许多jtag设备的驱动程序源代码,因此您需要为新发明的设备获取并重新制作一个驱动程序。查看有人是如何完成类似工作的:http://code.google.com/p/estick-jtag/
看一下openocd。后端大多基于并行端口的“位爆炸”方法,我认为它甚至一次只能更改一位。我认为他们称之为虚拟后端的例子非常简单。将任何写入位命令发送到arduino,并对其进行设置或清除。当要求读取输入位时,向arduino发送命令以执行该任务并返回结果。
我已经成功地做到了这一点,但不是通过arduino来完成的,我是通过openocd从主机谈论到在hdl模拟器中运行的模拟手臂内核的。
请注意,有些jtag规格已关闭,例如cortex-m3是某种形式的序列化减少的jtag引脚数量,我上次查看时没有NDA时无法使用。这可能并不重要,因为只要您使用的是openocd支持的jtag接口,openocd便会为您处理所有工作,因此后端有点麻烦,它是您的arduino以及您用来进入/退出它的任何接口的地方。
正如Joby已经指出的那样,您需要小心电压(并非所有arduino风味均为5V,并且并非所有臂式控制器均为3.3伏),信号调节和接地以及所有其他东西。如果目标板由与为arduino供电的电源处于不同级别的电源供电,则在将两者连接时可能会使某些东西熔化。