更新Flash中的SPL和U-Boot

以下提供更新昉·星光 2 Flash中的SPL和U-Boot的两种方法:
注: 如需获取创建SPL和fw_payload (U-Boot)文件的参考手册,请参阅昉·星光 2单板计算机软件技术参考手册》中的“创建SPL文件”和“创建fw_payload文件”。
  1. 通过tftpboot命令更新SPL和U-Boot。
  2. 通过flashcp命令更新SPL和U-Boot。
    注: 方法2仅支持镜像版本为VF2_v2.5.0或高于该版本的镜像。

通过tftpboot命令

通过tftpboot命令更新SPL和U-Boot,请执行以下步骤:

  1. 部署TFTP服务器。以下是用于Ubuntu发行版上执行的示例命令:
    sudo apt install tftpd-hpa
  2. 打开昉·星光 2,等待它进入U-Boot命令行界面。
  3. 执行以下命令设置环境变量:
    setenv ipaddr 192.168.120.222;setenv serverip 192.168.120.99
  4. 使用ping命令,检查主机与昉·星光 2的连接情况。
  5. 初始化SPI flash:
    sf probe
  6. 更新SPL二进制文件:
    tftpboot 0xa0000000 ${serverip}:u-boot-spl.bin.normal.out
    sf update 0xa0000000 0x0 $filesize
  7. 更新U-Boot二进制文件:
    tftpboot 0xa0000000 ${serverip}:visionfive2_fw_payload.img
    sf update 0xa0000000 0x100000 $filesize

通过flashcp命令

通过flashcp命令更新SPL和U-Boot,请执行以下步骤:
注: 方法2仅支持镜像版本为VF2_v2.5.0或高于该版本的镜像。
  1. 执行以下命令,安装mtd-utils安装包:
    apt install mtd-utils
  2. 通过SCP将最新的u-boot-spl.bin.normal.outvisionfive2_fw_payload.img文件移植到Debian系统上。
  3. 执行以下命令,查看MTD分区:
    cat /proc/mtd

    示例输出:

    您可以看到QSPI Flash里的数据分区:

    dev:    size   erasesize  name
    mtd0: 00020000 00001000 "spl"
    mtd1: 00300000 00001000 "uboot"
    mtd2: 00100000 00001000 "data"
    
  4. 根据不同分区的内容,分别通过flashcp更新SPL和U-Boot:
    • 更新SPL的示例命令:
      flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
    • 更新U-Boot的示例命令:
      flashcp -v visionfive2_fw_payload.img  /dev/mtd1

    示例命令和输出:

    # flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
    Erasing blocks: 32/32 (100%)
    Writing data: 124k/124k (100%)
    Verifying data: 124k/124k (100%)
    
    # flashcp -v visionfive2_fw_payload.img  /dev/mtd1
    Erasing blocks: 682/682 (100%)
    Writing data: 2727k/2727k (100%)
    Verifying data: 2727k/2727k (100%)
    
  5. 重启系统,以使更新生效。