gpt4 book ai didi

embedded - 如何将 ARM 代码用于实际设备 JTAG?可以用Arduino制作即兴JTAG吗?

转载 作者:行者123 更新时间:2023-12-02 17:12:05 27 4
gpt4 key购买 nike

好吧,我对 ARM 处理器的编程有点困惑。一连串的提问时间:

  • 如何将编译后的二进制文件放入 ARM 处理器?
  • JTAG 是正常方法吗(我认为这就是我的研究表明的......)?
  • 这是唯一的方法吗?
  • 如果它是一种有效的方法,那么您究竟如何以这种方式使用它?
  • 如果不是,那么是什么/我该怎么做?

  • 此外,可以使用诸如 Arduino 之类的东西来创建 impromptu JTAG 接口(interface)(如果这确实是编程 ARM 设备所需要的)。 . .?

    我已经设置了 QEMU用于测试代码等,但我不确定如何继续将我的代码实际放入物理领域。

    我基本上是在问:JTAG 是 ARM 世界的设备程序员吗?我可以用 Arduino(Arduino Wiggler Clone o.o)欺骗一个吗?如果 JTAG 不是,那是什么,我可以欺骗它吗?

    哦...我可能需要更好地解释 JTAG 的工作原理。

    现在提供一些背景信息:
    我有一个旧的 Palm 设备 ( LifeDrive ),它有 XScale PXA270我相信处理器。似乎不再有任何活跃的社区开发正在进行,而且我不再使用它了,所以我只是想玩/弄乱它。基本上,这可能是一种很好的方式来处理本质上是大量传感器和其他杂项输入和输出,并且还习惯于 ARM 组装。

    如果我采取了错误的方法,请随时告诉我,但至少提供替代方案(尽管我非常喜欢专门弄乱 LifeDrive,如果我只想玩嵌入式编程,我会在我的 Arduino 上这样做) .)

    现在几乎一切都是在黑暗中拍摄。我有点厌倦了无处可去,因此我发布了这个。

    最佳答案

    这是很多问题!以下是几个答案:

    How does one get the compiled binary into an ARM processor?


    它取决于许多因素。

    Is JTAG the normal method (I think that is what my research has indicated ...)?


    大多数(也许是所有)基于 ARM 的现代设备都包含一个 JTAG 接口(interface),用于连接到片上调试(FPGA 上的软核可能除外)。这通常可用于对片上或外部闪存进行编程或直接加载到 RAM 中。 JTAG 接口(interface)也是片上调试和跟踪功能的接口(interface)。一些设备有额外的调试/编程接口(interface),例如 ARM's以社署为例。

    Is it the only method?


    在某些情况下。一些基于 ARM 的微 Controller 包括一个片上引导加载程序 ROM,它可能支持串行、USB 或其他片上闪存编程方式。有时,此类工具非常简单,仅用于加载和运行从 RAM 执行并进行实际闪存编程的辅助引导加载程序。

    If it is a valid method, exactly how do you use it in that fashion?


    通过使用适当的主机软件。 JTAG 是一个非常简单的接口(interface),它没有定义任何特定的功能,只是一种数据传输方式。通常,编程软件需要知道它正在与什么设备进行通信,如果闪存不在片上,则需要知道闪存设备及其地址。通常,开发工具链将包括对设备编程的支持,尤其是对于具有片上存储器的设备。如果您使用的是 GNU 工具链,则可以使用 OpenOCD对设备进行编程并连接 GNU 调试器。

    If it isn't then what is/how do I do it?


    如果您的目标是 COTS ,它很可能包含一个引导加载程序,已经允许通过 USB、串行或以太网进行软件更新。

    Furthermore, can something such as an Arduino be used to create an impromptu JTAG interface (if that is indeed what is needed to program ARM devices). . .?


    可能正如我所说,JTAG 本身实现起来非常简单,问题在于使其与您将使用的任何主机软件兼容(或使软件与其兼容)。最简单的“ wiggler”JTAG 适配器是使用 PC 并行端口 I/O 实现的 - 不是特别快,但功能强大。

    I'm basically asking: is JTAG the device programmer of the ARM world?


    它最初被定义为 boundary scan test interface ,但现在广泛用于包括片上调试和编程在内的大多数微处理器和微 Controller 。

    Can I spoof one with an Arduino (Arduino wiggler Clone o.o)? If JTAG isn't, what is, and can I spoof it?


    这不是“欺骗”的问题,接口(interface)可以通过多种方式实现。你如何实现它主要影响界面的速度。可以达到 16 MHz,但更简单的并行端口摆动器可能不会超过 500 kHz。它是一个同步接口(interface),因此可变时钟速率不是问题。

    Oh... And I might need a better explanation of exactly how JTAG works.


    我确信我不能比维基百科 JTAG 中的解释做得更好.但是对于目标设备上的实现,您应该查阅部件的引用手册/数据表。

    I have an old Palm Device (LifeDrive), that has the XScale PXA270 processor I believe.


    “相信”可能还不够;你需要知道。 JTAG 引脚是否暴露在板上?在消费产品上通常会省略实际的 JTAG 连接器。即使有,也可能是专有的连接器和引脚输出(JTAG 本身没有定义,并且为 ARM 定义了几个,但是您在开发板上可能找到的可能不会包含在最终的消费产品中。

    Basically, this could be a good way to get to play around with what is essentially a mass of sensors, and other miscellaneous inputs and outputs, and also get used to ARM assembly language.


    获得带有外露 I/O 引脚和接口(interface)的现成开发板可能会更好。在消费类产品上,只有目标应用程序所需的那些引脚可能会暴露,即使它们连接到 BGA 也可能无法访问。设备。此外,XScale 处于 ARM 设备的复杂端(大约介于 ARM9ARM11 之间),如果您不熟悉此类设备以及诸如 PLL 时钟控制、SDRAM 控制和时序以及 MMU 配置之类的东西,您可能想看更简单的东西。不仅如此,由于闪存和 RAM 都是片外的,您将需要存储器和其他外部设备的地址映射的详细信息,以及必要的 SDRAM 时序详细信息。作为消费者设备,此类详细信息可能无法通过逆向工程获得。
    话虽如此,关于早先关于引导加载程序的评论,Palm 提供 a user installable ROM update对于设备,所以它必须有一个引导加载程序。但是,您仍然需要有关图像文件格式和数据传输协议(protocol)的详细信息。这些不太可能发布,并且可能很难进行逆向工程。

    if I just wanted to play around with embedded programming, I would do so on my Arduino instead.)


    有大量低成本的 ARM 开发板可用。试试 Olimex例如:他们甚至有低成本 "Wiggler" clone JTAG adapter .

    关于embedded - 如何将 ARM 代码用于实际设备 JTAG?可以用Arduino制作即兴JTAG吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709179/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com