gpt4 book ai didi

ada - 使用 Digilent Zybo 开发板在 Zynq 上运行 Ada

转载 作者:行者123 更新时间:2023-12-04 20:06:32 26 4
gpt4 key购买 nike

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

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

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

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

如有任何建议或指点,我们将不胜感激!

最佳答案

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

由于某些原因,当我启动 Ada ELF 文件时,AXI 接口(interface)不工作。如果我将其替换为等效的 C,那么一切都很好。

这个特殊问题目前尚未解决,但与我原来的问题无关!

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

**** 更新 ****

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

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

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

长话短说,Ada 运行时包含名为 start-ram.S 的汇编文件,其中包括设置 MMU。有一个名为 memmap.inc 的包含文件,其中包含作为一系列 .long 指令的实际 MMU 页面定义。我必须通过编辑特定指令来更新 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 认证或类似认证时。

关于ada - 使用 Digilent Zybo 开发板在 Zynq 上运行 Ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374281/

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