我刚刚从Terasic(Atlas-SoC)购买了一块新的Cyclone V板,并计划构建一个裸机应用程序。首先,我使用了Terasic提供的GSRD。该示例项目来自14.0版本,我的17.1 Quartus要求我启动对那些14.0 IP的更新,但是我看到它们已经编译了所有内容,并且我有一个交接文件文件夹。我需要做的只是制作一个预加载器和uboot。然后,我按照以下步骤操作(在火箭板上和其他许多地方):
在取得第一个成功的同时,我尝试制作自己的HPS-FPGA设计。我基于HPS配置来创建自己的HPS(初始化I2C,UART,无sdram等)。对于FPGA部分,我放置了一些LED PIO,JTAG UART,系统ID外设等。
在完成平台设计器(Qsys)之后,我制作了一个VHDL顶层文件并连接了所有节点(就像GSRD设计一样)。此时,我没有添加任何IP,例如HPS重置,去抖动等,因为我只是想查看预加载器是否起作用。
然后,我严格按照与GSRD设计相同的步骤进行操作,但是这次在Putty上我什么也没收到。 U-Boot SPL甚至没有出现。感觉很奇怪,我回到了GSRD进行检查。我复制了GSRD设计的整个文件夹,并使其成为我自己的新项目。然后,我为这些IP启动了一个更新,并再次编译了整个内容。之后,以相同的步骤完成了预加载器和uboot,结果令我惊讶:在Putty终端上,我只有这一行
U-Boot SPL 2013.01.01 (Mar 08 2019 - 10:28:04)
,什么都没有发生。我认为预加载器有问题,它与我的Quartus设计不匹配,或者在构建预加载器时出错。
我在很多地方进行了搜索,提出了许多假设,并试图解决这个问题。我什至联系了Terasic,并访问了Intel社区论坛,但是我仍然没有答案。
答案 0 :(得分:0)
如果未显示U-boot,则预加载器未完成其工作。为裸机设计构建预加载器时,需要检查一些设置(例如,必须禁用看门狗定时器)。
如果U-boot启动并且您可以在其中输入命令,则意味着预加载器可以正常工作。您可以首先在u-boot上手动输入命令以配置FPGA(启用网桥,加载rbf并转到软件应用程序的起始地址)。如果通过这种方法使应用程序和FPGA运行,则意味着所有文件均正确生成,但是您需要编写必要的u-boot命令脚本并运行该脚本以自动配置FPGA并从u-boot运行应用程序。
这里是DE1-SoC的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
希望对您有帮助!