模板: VisionFive2 Flash

来自Waveshare Wiki
跳转至: 导航搜索

板载Flash固件更新

每个版本的系统可能有不同的Flash固件,如果需要最新版,请对照官方文档,编译最新的SDK系统
也可以在GitHub上下载官方编译好的文件:
https://github.com/starfive-tech/VisionFive2/releases

#下载下面两个名称的文件
u-boot-spl.bin.normal.out
visionfive2_fw_payload.img

https://github.com/starfive-tech/Tools/tree/master/recovery

恢复二进制文件:jh7110-recovery-xxxxxxxx.bin

VisionFive2 Lite 的固件与 VisionFive2 一致
如果你板子上的flash中的内容损坏或者你想更新请使用下面的方法

方法一 Windows系统更新

Windows准备

  • 下载 tftpd64,官方下载地址 :https://pjo2.github.io/tftpd64/
  • 配置 TFTP 服务器:
  • 创建一个文件夹:G:\VisionFive-img\u-boot\2510 (我这里是示例)
  • 将 u-boot-spl.bin.normal.out、visionfive2_fw_payload.img 放到这个文件夹下
  • 打开 Tftpd64
  • Current Directory 选择刚刚创建的文件夹
  • Server interfaces 选择电脑连接到局域网的网卡 IP(需与 VisionFive2 在同一网段)

VisionFive2 Flash-12.jpg

VisionFive2 设置

  • 通过USB转串口模块连接主机与 VisionFive2/VisionFive2 Lite
  • 连接网线,打开终端,接入电源
  • 当终端显示在下图所示位置时,按下任意按键停止继续往下运行

VisionFive2-flash-1.jpg

  • 输入以下命令进行初始配置
# 设置 vf2 的ip,要与主机在同一网段
setenv ipaddr 192.168.9.177
# 设置主机的 IP(Tftpd64 软件中 Server interfaces 设置的)
setenv serverip 192.168.9.170
# 看看是否连接成功
ping 192.168.9.170  

VisionFive2 Flash-19.jpg

  • 初始化SPI flash
sf probe

VisionFive2 Flash-20.jpg

  • 获取SPL二进制文件并加载进flash中
tftpboot 0xa0000000 visionfive2_fw_payload.img
sf update 0xa0000000 0x100000 $filesize

VisionFive2 Flash-22.jpg

  • 获取U-Boot二进制文件并加载进flash中
tftpboot 0xa0000000 u-boot-spl.bin.normal.out
sf update 0xa0000000 0x0 $filesize

VisionFive2 Flash-21.jpg

  • flash到此就更新完成了,VisionFive2按下复位按键即可重新启动,VisionFive2 Lite需要重新进行上电

如果配置都没有问题,但是连接不上

  • 在执行 ping 192.168.9.170 命令时可能出现以下提示

VisionFive2 Flash-13.jpg

  • 这个情况通常是被Windows的防火墙给拦截了,我们关闭防火墙后再进行尝试即可
  • 关闭防火墙按照下图进行操作,传输完成后,千万不要忘记将防火墙重新打开

VisionFive2 Flash-14.jpgVisionFive2 Flash-15.jpgVisionFive2 Flash-16.jpgVisionFive2 Flash-17.jpgVisionFive2 Flash-18.jpg



方法二 Linux主机更新

使用tftpboot命令更新

准备工作

  • PC主机一台(我这里使用的是Ubuntu)
  • VisionFive2 主机
  • USB转串口模块,要带杜邦线,用于连接VisionFive2 主机
  • 网线一根,要和PC主机在同一局域网下

主机端设置

  • 安装tftp
sudo apt-get update
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
  • 创建文件夹用来存放文件
mkdir /home/ubuntu/tftpboot
chmod 777 /home/ubuntu/tftpboot
  • 新建文件/etc/xinetd.d/tftp

如果没有/etc/xinetd.d 目录的话自行创建, 然后在里面输入如下内容:

server tftp
{
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /home/ubuntu/tftpboot
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
}
  • 启动 tftp 服务
sudo service tftpd-hpa start
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/ubuntu/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。

  • 重启 tftp 服务器
sudo service tftpd-hpa restart
  • 将编译好/下载好的两个flash文件放入刚刚配置好的文件夹中
  • 获取主机IP
ifconfig

VisionFive2 设置

  • 通过USB转串口模块连接主机与 VisionFive2
  • 连接网线,打开终端,接入电源
  • 当终端显示在下图所示位置时,按下任意按键停止继续往下运行

VisionFive2-flash-1.jpg

  • 输入以下命令进行初始配置
# 设备的IP地址,设置VisionFive2的地址,要和主机是一个网段的
setenv ipaddr 192.168.10.171     
# Ubuntu主机的IP地址
setenv serverip 192.168.10.174    
  • ping一下主机看看能否成功通信
ping 192.168.10.174

VisionFive2-flash-2.jpg

  • 初始化SPI flash
sf probe

VisionFive2-flash-3.jpg

  • 获取SPL二进制文件并加载进flash中
tftpboot 0xa0000000 ${serverip}:u-boot-spl.bin.normal.out
sf update 0xa0000000 0x0 $filesize

VisionFive2-flash-4.jpg

  • 获取U-Boot二进制文件并加载进flash中
tftpboot 0xa0000000 ${serverip}:visionfive2_fw_payload.img
sf update 0xa0000000 0x100000 $filesize

VisionFive2-flash-5.jpg

  • flash到此就更新完成了,VisionFive2按下复位按键即可重新启动,VisionFive2 Lite需要重新进行上电

方法三 串口更新

如果觉得上述比较麻烦,可以使用串口传输使用xmodem协议所有的文件,但是速度比较慢,出错率较高
将串口连接到 VisionFive2

  • VisionFive2 操作

将开关拨到对应位置,然后上电
VisionFive2 Flash-8.jpg

  • VisionFive2 Lite 操作

按住 Boot按键,然后上电
VisionFive2 Flash-24.jpg

  • 传输流程

传输文件 jh7110-recovery-20221205.bin ,按 0 然后回车传输文件 u-boot-spl.bin.normal.out ;按 2 然后回车传输文件visionfive2_fw_payload.img
VisionFive2 Flash-10.jpg
VisionFive2 Flash-11.jpg