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

ID 683265
日期 1/27/2016
Public

1.5.3. 从SD/MMC引导 –自定义分区

本实例演示了,把裸机映像与预加载器存储在同一个SD卡自定义分区时,如何从SD卡引导。
为避免出现"Device Open Failed!"错误信息,请您务必在以下用户模式中操作:
  • Windows — "Administrator mode user"
  • Linux — "sudo mode"

运行该情形所需要的步骤是:

  1. 构建裸机应用样本,或直接使用已提供的hello-mkimage.bin文件。
  2. 以SoC EDS中的GHRD为基础生成一个预加载器。
    请务必选择如下选项:
    • 查看选项 spl.boot.BOOT_FROM_SDMMC
    • 取消查看其他引导选项 (spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_QSPI, spl.boot.BOOT_FROM_NAND)
      注: 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)。
  3. 编译预加载器。从而创建 文件preloader-mkpimage.bin文件。
  4. 使用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卡。
  5. 利用SoC EDS中的SD卡引导工具只写入预加载器映像到SD卡自定义分区:
    • 开启一个Embedded Command Shell。
    • 运行命令 “alt-boot-disk-util -a write -p preloader-mkpimage.bin -b hello-mkimage.bin -d <sd_card_drive_letter>
  6. 要设置电路板从SD卡引导,需为BOOTSEL跳线作如下配置:
    • BOOTSEL0 (J28): 左
    • BOOTSEL1 (J29): 右
    • BOOTSEL2 (J30): 左
  7. 使用USB串行把电路板连接到PC,并使用115,200-8-N-1在PC上开启一个串行终端设备。
  8. 将SD卡插入电路板插槽并上电电路板或者按下冷复位钮(S7)复位HPS。
    电路板引导,出现预加载器信息,裸机应用将显示“Hello World”。
    图 9. 自定义分区