更新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-7步是在主机PC上进行,8-13步是在昉·星光 2上进行。
  1. 将以太网电缆的一端连接到昉·星光 2 RJ45接口上,将另一端连接到路由器上。
  2. 在主机PC上安装TFTP服务器:
    sudo apt-get update
    sudo apt install tftpd-hpa
  3. 检查服务器状态:
    sudo systemctl status tftpd-hpa
  4. 输入以下命令进入TFTP服务器:
    sudo nano /etc/default/tftpd-hpa
  5. 执行以下命令设置TFTP服务器:
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/home/user/Desktop/tftp_share"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure"
    注: TFTP_DIRECTORYbootloaderu-boot、SPL和镜像等文件的存放路径。
  6. 执行以下命令,创建tftp-server文件夹以存储文件:
    sudo mkdir -p /home/user/tftp
  7. 重启TFTP服务器:
    sudo systemctl restart tftpd-hpa
  8. 打开昉·星光 2,等待它进入U-Boot命令行界面。
    提示:
    • 前提条件:
      • 一个USB转TTL转换器,将USB连接到电脑, 杜邦线连接到昉·星光 2正确的扩展引脚上, 特别注意TX和RX需要交叉对接
      • 在您的电脑上安装Putty或者secureCRT等。
    • 当您给昉·星光 2上电后,串口会打印数字并且进行递减计时,一般是从3开始递减,在数字减为0之前点击任意按键就可以进入U-Boot的命令行模式。
  9. 执行以下命令设置环境变量:
    setenv ipaddr 192.168.120.222;setenv serverip 192.168.120.99
    注: 一般情况下路由器的默认IP为 192.168.120.1。在这种情况下,请使用由路由器的DHCP服务器分配的IP,昉·星光 2的IP地址应为192.168.120.xxx。但是,如果您的路由器IP不同(例如192.168.2.1),请确保服务器IP和昉·星光 2属于同一IP段(例如192.168.2.xxx)中。
  10. 使用ping命令,检查主机与昉·星光 2的连接情况。

    示例命令:

    ping 192.168.120.99

    结果:

    以下输出表明主机与昉·星光单板计算机已经在同一网络下建立连接。
    StarFive # ping 192.168.120.99
    speed: 1000, full duplex
    Using dwmac.10020000 device
    host 192.168.120.99 is alive
  11. 初始化SPI flash:
    sf probe
    结果:
    StarFive # sf probe
    SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, 
     total 16 MiB
  12. 更新SPL二进制文件,以下为命令和示例输出:
    StarFive # tftpboot 0xa0000000 ${serverip}:u-boot-spl.bin.normal.out
    Using ethernet@16030000 device
    TFTP from server 192.168.120.99; our IP address is 192.168.120.222
    Filename ‘u-boot-spl.bin.normal.out’.
    Load address: 0xa0000000
    Loading: ##########
    1.6 MiB/s
    done
    Bytes transferred = 132208 (20470 hex)
    StarFive # sf update 0xa0000000 0x0 $filesize
    device 0 offset 0x0, size 0x20470
    0 bytes written, 132208 bytes skipped in 0.23s, speed 5206961 B/s
  13. 更新U-Boot二进制文件,以下为命令和示例输出::
    StarFive # tftpboot 0xa0000000 ${serverip}:visionfive2_fw_payload.img
    Using ethernet@16030000 device
    TFTP from server 192.168.120.99; our IP address is 192.168.120.222
    Filename ‘visionfive2_fw_payload.img’.
    Load address: 0xa0000000
    Loading: 
     #################################################################
    #################################################################
    #################################################################
    #######
    2.2 MiB/s
    done
    Bytes transferred = 2955397 (2d1885 hex)
    StarFive # sf update 0xa0000000 0x100000 $filesize
    device 0 offset 0x100000, size 0x2d1885
    0 bytes written, 2955397 bytes skipped in 0.507s, speed 5922361 B/s
    StarFive #

通过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: 00040000 00001000 "spl"
    mtd1: 00010000 00001000 "uboot-env"
    mtd2: 00300000 00001000 "uboot"
    mtd3: 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/mtd2

    示例命令和输出:

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