更新Flash中的SPL和U-Boot
以下提供更新昉·星光 2
Flash中的SPL和U-Boot的两种方法:
注: 如需获取创建SPL和fw_payload(U-Boot)文件的参考手册,请参阅《昉·星光 2单板计算机软件技术参考手册》中的“创建SPL文件”和“创建fw_payload文件”。
- 通过
tftpboot
命令更新SPL和U-Boot。 - 通过
flashcp
命令更新SPL和U-Boot。注: 方法2仅支持镜像版本为VF2_v2.5.0或高于该版本的镜像。
通过tftpboot
命令
通过tftpboot
命令更新SPL和U-Boot,请执行以下步骤:
注: 1-7步是在主机PC上进行,8-13步是在昉·星光 2上进行。
- 将以太网电缆的一端连接到昉·星光 2 RJ45接口上,将另一端连接到路由器上。
- 在主机PC上安装TFTP服务器:
sudo apt-get update sudo apt install tftpd-hpa
- 检查服务器状态:
sudo systemctl status tftpd-hpa
- 输入以下命令进入TFTP服务器:
sudo nano /etc/default/tftpd-hpa
- 执行以下命令设置TFTP服务器:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/user/Desktop/tftp_share" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure"
注: TFTP_DIRECTORY指bootloader
、u-boot
、SPL和镜像等文件的存放路径。 - 执行以下命令,创建tftp-server文件夹以存储文件:
sudo mkdir -p /home/user/tftp
- 重启TFTP服务器:
sudo systemctl restart tftpd-hpa
- 打开昉·星光 2,等待它进入U-Boot命令行界面。提示:
- 前提条件:
- 一个USB转TTL转换器,将USB连接到电脑, 杜邦线连接到昉·星光 2正确的扩展引脚上, 特别注意TX和RX需要交叉对接
- 在您的电脑上安装Putty或者secureCRT等。
- 当您给昉·星光 2上电后,串口会打印数字并且进行递减计时,一般是从3开始递减,在数字减为0之前点击任意按键就可以进入U-Boot的命令行模式。
- 前提条件:
- 执行以下命令设置环境变量:
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)中。 - 使用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
- 初始化SPI
flash:
sf probe
结果:StarFive # sf probe SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
- 更新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
- 更新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或高于该版本的镜像。
- 执行以下命令,安装
mtd-utils
安装包:apt install mtd-utils
- 通过SCP将最新的u-boot-spl.bin.normal.out和visionfive2_fw_payload.img文件移植到Debian系统上。
- 执行以下命令,查看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"
- 根据不同分区的内容,分别通过
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%)
- 更新SPL的示例命令:
- 重启系统,以使更新生效。