Atlas-SoC板卡预加载器故障排除

Atlas-SoC board preloader troubleshooting

我刚从 Terasic ( Atlas-SoC ) 购买了一块新的 Cyclone V 板,并计划构建一个裸机应用程序。一开始,我使用友晶提供的GSRD。示例项目来自版本 14.0,我的 17.1 Quartus 要求我启动对那些 14.0 IP 的更新,但我看到他们已经编译了所有内容并且我有一个切换文件夹。我需要做的只是制作一个预加载器和 uboot。然后我遵循了这些步骤(来自 rocketboard 和其他许多地方):

  1. 生成 .rbf 文件。
  2. 我使用 EDS-SoC 的 bsp-editor 工具制作了一个预加载器。
  3. 预加载器编译成功并获得 预加载器-mkpimage.bin.
  4. 生成uboot和uboot脚本文件。
  5. 使用 alt-boot-disk-util 将预加载程序加载到 SD 卡中。
  6. 将所有的rbf文件、uboot和uboot脚本复制到SD卡中。此刻我没有做任何申请,因为我想检查预加载器是否加载。
  7. 将SD卡插入板子,然后上电 8.在Putty中,我看到U-boot spl和Uboot工作正常。

有了第一次的成功,我尝试了自己的HPS-FPGA设计。我基于HPS配置制作了我自己的HPS(初始化I2C、UART、无sdram等)。对于FPGA部分,我放了一些LED PIO、JTAG UART、System ID peripheral等。

完成我的平台设计器(Qsys)后,我制作了一个VHDL顶层文件并连接所有节点(就像GSRD设计一样)。在这一点上,我没有添加任何IP,如HPS reset、debounce等,因为我只是想看看预加载器是否工作。

然后我完全按照我在 GSRD 设计中所做的那些步骤进行操作,但是这次在 Putty 上我什么也没收到。 U-Boot SPL 甚至没有出现。感觉怪怪的,又回到GSRD查看。我复制了整个 GSRD 设计文件夹,并将其作为我自己的新项目。然后我为那些 IP 启动了更新并重新编译了整个东西。之后同样的步骤制作了preloader和uboot,结果惊艳到我:在Putty终端上,我只有这一行

U-Boot SPL 2013.01.01 (Mar 08 2019 - 10:28:04)

并没有发生其他事情。我认为预加载器有问题,它与我的 Quartus 设计不匹配,或者我在构建预加载器时犯了错误。

我找了很多地方,提出了很多假设,并试图解决这个问题。我什至联系了友晶,并访问了英特尔社区论坛,但我仍然没有得到答复。

如果 U-boot 没有出现,那么预加载器没有完成它的工作。在为裸机设计构建预加载器时需要检查一些设置(例如,必须禁用看门狗定时器)。

如果 U-boot 启动并且您可以在其中输入命令,则表示您的预加载器工作正常。你可以先在u-boot上手动输入命令配置FPGA(使能桥接,加载rbf,进入软件应用程序起始地址) 如果按照这个方法你得到了应用程序和FPGA 运行ning,这意味着您的所有文件都已正确生成,但您需要编写必要的 u-boot 命令脚本和 运行 脚本以自动配置 FPGA 和 运行 来自 u-boot 的应用程序。

这里是 DE1-SoC 的 link 到 github 存储库,您可以在其中找到有关如何在裸机中启动 HPS-FPGA 系统的完整教程:https://github.com/sahandKashani/SoC-FPGA-Design-Guide/blob/master/DE1_SoC/SoC-FPGA%20Design%20Guide/SoC-FPGA%20Design%20Guide%20%5BDE1-SoC%20Edition%5D.pdf

希望对您有所帮助!