1

我有一块 Terasic DE1-SoC 板,我想使用 HPS 运行一个简单的 LED 闪烁裸机应用程序。

我学习了 HPS 技术参考、HPS 引导指南、SoC EDS 指南,并按照所有说明运行我的应用程序。

这是我的步骤的简要列表。

  1. 在 QSYS 中创建一个带有 HPS 组件和一些 PIO 的系统(用于板载 LED 和按钮)
  2. 运行 bsp-editor 以创建预加载器。我想从 SD 卡运行,所以我检查了 BOOT_FROM_SDMMC 选项。另外我希望我的应用程序位于 FAT 分区中(检查 FAT_SUPPORT、FAT_BOOT PARTITION 1、FAT_LOAD_PAYLOAD_NAME test.img(或者应该是 test.bin?))取消选中 WATCHDOG_ENABLE。我想在串行连接中看到预加载器进程的启动,所以我检查了 SERIAL_SUPPORT。其他设置保持不变。
  3. 在 SOC EDS 15.0 命令 shell 中输入“make”获取 preloader-mkpimage.bin
  4. 通过在具有 FAT32 分区和自定义分区 A2 的 sd 卡上键入 alt-boot-disk-util 来写入 preloader-mkpimage.bin。
  5. 在DS-5中创建一个简单的app,编译得到test.axf,然后用fromelf命令转换成test.bin,然后用mkimage工具转换成test.img。
  6. 将 test.img 拖放到 sd 卡 FAT32 分区上。
  7. 将其插入板并通电
  8. 在板上加载 .sof(我的系统 FPGA-HPS)
  9. 按重置按钮重置 HPS

所以问题是串行连接没有发生任何事情,所以我认为预加载器根本不工作,HPS 重置没有帮助。

我什至在终端中都没有看到“<0>”,只是空白页。我已经尝试使用 Terasic 提供的 linux 预构建映像,他们正在 100% 地工作。我根据altera docs做所有事情,但没有任何效果。即使是官方示例altera-socfpga-hardwarelib-unhosted也不起作用。我尝试使用示例中的预加载器,但在终端窗口中,当我重置 HPS 时,我只看到“<0>”符号。

顺便说一句,App 只能在调试器 DS5 中工作,其中插入了 SD 卡并在板上加载了 .sof 文件。我不太清楚 .scat 文件的含义和写法。不明白我在转换test.bin->test.img时使用mkimage工具时应该使用什么加载地址和入口点(我应该做这个转换还是在BSP设置test.bin中使用???)在我看来主要问题是不正确的预加载器。它有什么问题?

请帮忙!

UPD:在 QSYS 中编辑 HPS 部分(添加了 UART 模块)并重新生成系统并重新构建预加载器(其他先前的设置未更改)后,我开始在终端中收到有关成功加载 U-boot SPL 的正确消息。但是还是不能运行test.img。正在努力。

UPD2:好的,我解决了这个问题,现在可以正常工作了

4

0 回答 0