1

我正在使用Arm DS-5 和 Xilinx SDKZynq板上开发程序。我正在尝试从 Qspi Flash 启动 Zynq 702 板。到目前为止,我所做的是从 Xilinx SDK 生成 FSBL 项目,并使用 SDK 中的 Bootgen 工具将其与我的应用程序相结合,然后将其编程到闪存中。我的脑海里有几个问题。

  • DS-5 生成一个 .axf 文件,Bootgen 需要一个 .elf 文件。我可以通过将扩展名更改为 .elf 来使用 .axf 文件,还是需要更多步骤?
  • 是否有显示 .axf 文件内部结构的工具?显示什么在哪里?
  • 如果我设法从 QSPI 启动,我该如何调试。例如我想从 FSBL 开始调试我的应用程序,可以吗?因为在 Qspi Boot 中,当我打开电路板电源时,我的应用程序将开始运行,当我连接 JTAG 时,它会在我的应用程序的某个位置。
4

2 回答 2

1

一个 AXF 可能有一些额外的 ARM 工具链魔法(我不确定),但本质上它是一个 ELF 文件 - ARM 工具链提供fromelf在它们内部四处探查,但其他工具也喜欢readelf并且objdump也可以工作。

我不熟悉 Zynq 平台,所以我不知道任何特定的调试器技巧,但一般来说就是在代码开头放置一个无限循环(如果需要,可能使用 volatile 或内联 asm 技巧以防止优化) - 一旦调试器连接并进入其中,您只需将 PC 移过循环并继续。

于 2015-01-27T14:19:08.037 回答
1

您可以通过 JTAG 完全停止 QSPI 引导的 Zynq 并使用它做任何您想做的事情。但是,有一些怪癖。有时 Zynq 会进入某种锁定状态,而 JTAG 根本不起作用,您需要在重试之前重新上电。通过 JTAG 启动软件后,一些写得不太好的外设可能会死掉,因此您可能需要先重新加载比特流。还有一些与 Vivado 相关的错误(例如,除非您降级到 2017.2 或更改 MIO2-6 拉动或修补 FSBL,否则您无法重新刷新电路板)但我不确定它们是否适用于您的情况。

于 2020-04-29T09:01:01.070 回答