Arm Zynq Qspi引导

Arm Zynq Qspi引导,arm,boot,zynq,Arm,Boot,Zynq,我正在使用ARMDS-5和XilinxSDK在Zynq板上开发程序。 我正在尝试从Qspi闪存启动Zynq 702板。 到目前为止,我所做的是从Xilinx SDK生成FSBL项目,并使用SDK中的Bootgen工具将其与我的应用程序相结合,然后将其编程到flash中。 我脑子里有几个问题 DS-5生成一个.axf文件,Bootgen需要一个.elf文件。我能用吗 将.axf文件的扩展名更改为.elf,或者我需要 还有更多的步骤吗 是否有显示.axf文件内部结构的工具? 显示什么在哪里 如果我

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

  • DS-5生成一个.axf文件,Bootgen需要一个.elf文件。我能用吗 将.axf文件的扩展名更改为.elf,或者我需要 还有更多的步骤吗
  • 是否有显示.axf文件内部结构的工具? 显示什么在哪里
  • 如果我设法从QSPI引导,我如何调试呢。例如,我想从FSBL开始调试我的应用程序,这可能吗?因为在Qspi引导中,当我在板上通电时,我的应用程序将开始运行,当我连接到JTAG时,它将在我的应用程序中的某个地方

    • AXF中可能有一些额外的ARM工具链魔法(我现在还不确定),但本质上它是一个ELF文件-ARM工具链提供了在它们内部进行探测的功能,但其他工具,如
      readelf
      objdump
      也可以工作


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

      您可以通过JTAG完全停止QSPI引导的Zynq,并对其执行任何操作。然而,也有一些怪癖。有时Zynq会陷入某种锁定状态,而JTAG根本不起作用,您需要在重试之前重启。一些写得不太好的外围设备在通过JTAG启动软件后可能会死亡,所以您可能需要首先重新加载位流。还有一些与Vivado相关的bug(比如,除非降级到2017.2或更改MIO2-6或修补FSBL,否则无法重新刷新板),但我不确定它们是否适用于您的情况