HPS SoC引导指南 - Cyclone V SoC开发工具

ID 683265
日期 1/27/2016
Public

1.5.6.3. 构建和运行实例

本节介绍了构件和运行从FPGA 引导的实例所需步骤。
注: 本文档附带存档文件中有全部二进制。
为避免出现"Device Open Failed!"错误信息,请务必在以下用户模式中操作:
  • Windows — "Administrator mode user"
  • Linux — "sudo mode"
  1. 构建裸机应用样本,或直接使用已提供的hello-mkimage.bin文件。
  2. 编译 Quartus® Prime中提供的从 FPGHA 硬件引导的设计,以创建交付信息。
  3. 在编译过的硬件项目基础上生成预加载器。选择如下选项:
    • 查看选项 spl.boot.BOOT_FROM_SDMMC
    • 取消查看其他引导选项 (spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_QSPI,spl.boot.BOOT_FROM_NAND)。
    • 取消查看选项spl.boot.FAT_SUPPORT. 从而告知预加载器加载自定义分区中的裸机应用。
      注: spl.boot.SDMMC_NEXT_BOOT_IMAGE = 0x40000。裸机应用映像需要存放在这里。
    • 查看选项 spl.boot.SDRAM_SCRUBBINGspl.boot.SDRAM_SCRUB_REMAIN_REGION。 SDRAM将因此归零,以避免执行裸机程序时出现任何ECC错误。
    • 取消查看选项spl.boot.WATCHDOG_ENABLE。因为将不在裸机应用里“喂狗”(kicking the watchdog)。
    • 查看选项 spl.boot.EXE_ON_FPGA
  4. 编译预加载器,从而将创建预加载器可执行文件。
  5. 使用预加载器文件夹中的命令把预加载器可执行转换成hex文件: arm-altera-eabi-objcopy -O ihex --adjust-vma -0xc0000000 uboot-socfpga/spl/u-boot-spl preloader.hex
  6. 再次编译硬件设计,把新创建的hex文件加入考虑之中。
    注: hex文件需要位于<hardware_design_folder>/software/spl_bsp/preloader.hex中。以此创建文件<hardware_design_folder>/output_files/soc_system.sof
  7. 使用fdisk, 或SoC EDS中的SD卡映像实例,在SD卡中手动创建一个id=A2自定义分区:
    • 使用Embedded Command Shell中的 ‘tar -xzf<filename>’ 命令解压缩<SoCEDS installation folder>:\embedded\embeddedsw\socfpga\prebuilt_images\sd_card_linux_boot_image.tar.gz中的SD卡映像。以此创建文件sd_card_linux_boot_image.img
    • 使用空闲的Win32DiskImager工具写入文件sd_card_linux_boot_image.img到SD卡。
  8. 利用SoC EDS中的SD卡引导工具写入裸机应用映像到SD卡自定义分区:
    • 启动一个Embedded Command Shell。
    • 运行命令 “alt-boot-disk-util -a write -b hello-mkimage.bin -d <sd_card_drive_letter>
  9. 配置Cyclone V电路板从FPGA引导,需为BOOTSEL跳线作如下配置:
    • BOOTSEL0 (J28): 左
    • BOOTSEL1 (J29): 右
    • BOOTSEL2 (J30): 右
  10. 使用USB串行连接把电板连接到PC,并使用115,200-8-N-1在PC上开启一个串行终端设备。
  11. SD卡插入电路板。
  12. 上电电路板。
    串行终端的电路板上无反应,因为没有配置FPGA,所以Boot ROM不会跳转到FPGA。
  13. Quartus® PrimeProgrammer以及(.sof)文件配置FPGA。
    注:.sof)文件已包含在本卷附带的存档文件中。
  14. 按下HPS冷复位钮(S7)
  15. 串行控制台将显示预加载器正在FPGA中运行,同时裸机应用正在SD卡中运行。
    图 17. FPGA中运行的预加载器的串行控制台