【问题标题】:Running Ada on the Zynq using a Digilent Zybo development board使用 Digilent Zybo 开发板在 Zynq 上运行 Ada
【发布时间】:2018-03-19 23:55:58
【问题描述】:

我已经成功地使用 Vivado 和 SDK 为 Digilent Zybo 板上的Zynq XC7Z010 开发 VHDL 和 C。我还一直在使用 GNAT GPS IDE 来学习针对 STM32F4 处理器的 Ada(使用支持的开发板之一)。

GPS 还附带一组zynq7000 运行时间,以XC7Z020 为目标(据我所知)。在查看了这些目标的 BSP 之后,我相信生成的代码也应该在 XC7Z010 上运行,因为 ARM 内核似乎是相同的。结果可能存在差异,在这种情况下,我将尝试基于现有的 zynq7000 BSP 构建特定的运行时(Adacore 已经记录了这个过程并给出了一个生成新 STM32F4 BSP 的示例)。

我的主要问题是我不确定如何在我的 Zybo 上加载和运行生成的 Ada elf 文件。我试图生成一个 BOOT.ini 文件,其中包含一个 FSBL(使用 SDK 构建并使用我从 Vivado 导出的硬件)、一个比特流和 Ada elf 文件(Zybo 有一个 MicroSD 接口,可以配置为启动设备,这与通过 Vivado / SDK 生成的比特流和 C elf 完美配合。

无论如何,这不起作用...我猜这可能是链接问题,或引导加载程序问题,或类似问题。以我目前的知识水平,目前还不确定。

任何建议或指示将不胜感激!

【问题讨论】:

    标签: ada xilinx zynq gnat-gps


    【解决方案1】:

    事实证明我的BOOT.ini 很好,问题与访问我的比特流中定义的自定义AXI 寄存器有关。如果我从 Ada 中删除这些引用,生成的 ELF 文件将完美运行。例如,使用Text_IO.Put_Line() 在Zybo 的VCP 上打印,使用Ada 运行时delayClock 操作等。

    由于某种原因,当我启动 Ada ELF 文件时,AXI 接口无法正常工作。如果我用它代替等效的 C,那么一切都很好。

    此特定问题目前尚未解决,但与我最初的问题无关!

    (可能是 Ada 运行时依赖 FSBLu-Boot 来初始化它,不确定。如果您知道,请随时发表评论,当我解决时我也会添加评论这个)

    **** 更新****

    这里有一些额外的背景知识,以及我必须做些什么才能让我的自定义 AXI IP 工作的描述。

    提供的 AdaCore BSP(用于构建运行时的板级支持包)针对 Xilinx XC702 开发板。我正在使用 Digilent Zybo(旧版本)。两块板使用不同的 Zynq 部件,XC702 基于XC7Z020,Zybo 使用XC7Z010(有一个带有XC7Z020 选项的新版本)。

    我按照 AdaCore 说明(可在他们的网站上获得)并专门为 Zybo 构建了一个 BSP。最初,当 Zybo 以不同的速度运行时,我只是更新了时钟详细信息,然后验证了 Ada delay 函数是否正常工作(作为从更新的 BSP 构建的 Ravenscar 运行时的一部分提供)。但是,我的自定义 AXI IP 仍然无法正常工作...

    长话短说,Ada 运行时包含名为start-ram.S 的汇编文件,其中设置了MMU。有一个名为memmap.inc 的包含文件,其中包含实际的MMU 页面定义作为一系列.long 指令。我必须通过编辑特定指令来更新AXI_GP0 地址条目,

    .long 0x43c10c16  @ for 0x43c00000, axi_gp0
    

    之前它被设置为0x00000000 @ for 0x43c00000, *none*。这些条目在start-ram.S 中解码,然后用于配置MMU(前 12 位设置页面,其余位被切碎并用作页面配置)。

    所以,一旦我在我的 Zybo BSP 中编辑了这个文件并重新构建了运行时,IP 就可以从 PS 访问并按预期工作。这一切都需要一段时间才能弄清楚,但值得我在探索死胡同的同时学到很多东西!

    我希望这对未来的人有所帮助,我也强烈推荐 Ada 用于 Zynq 开发,特别是如果您最终需要 DO-178 认证或类似的认证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      相关资源
      最近更新 更多