Updating SPL and U-Boot of Flash
To update SPL and U-Boot of flash for VisionFive 2, two methods are provided:
Note: For instructions to create SPL and
fw_payload (U-Boot) files, refer to Creating SPL
File and Creating fw_payload File sections in the VisionFive 2 Single Board Computer Software Technical Reference Manual.
- Through the
tftpboot
command as described in Through tftpboot Command. - Through the
flashcp
command as described in Through flashcp Command.Note: Method 2 only supports versions equal to or later than VF2_v2.5.0.
Through tftpboot
Command
To update SPL and U-Boot through the
tftpboot
command, perform the following steps:Note: Step 1-7 are
performed on the host PC while Step 8-13 are performed on VisionFive 2.
- Connect one end of an Ethernet cable to the VisionFive 2 RJ45 connector, and connect the other end of the cable to a router.
- Install a TFTP server on the host PC by
executing:
sudo apt-get update sudo apt install tftpd-hpa
- Check the server
status:
sudo systemctl status tftpd-hpa
- Execute the following to enter the TFTP
server:
sudo nano /etc/default/tftpd-hpa
- Configure the TFTP server as
follows:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/user/tftp" TFTP_ADDRESS=":69" TFTP_OPTIONS="-c -l -s"
Note: TFTP_DIRECTORY refers to the directory to storebootloader
,u-boot
, SPL, image and so on. - Create tftp-server folder to store the
files:
sudo mkdir -p /home/user/tftp
- Restart the TFTP server by
executing:
sudo systemctl restart tftpd-hpa
- Power on VisionFive 2
and wait until it enters the U-Boot command line interface.Tip:
- Prerequisite:
- An USB to TTL (Transistor-Transistor Logic) converter. Connect the USB to the computer, and connect the Dupont cable to the correct extension pin of VisionFive 2. Please pay attention to the cross connection of TX and RX.
- Install Putty or secureCRT on your PC.
- When you power on the VisionFive 2, the serial port will print countdown, usually starting from 3. Hit any key to stop autoboot before the number decreases to 0, and you can enter the U-Boot command mode.
- Prerequisite:
- Configure the environment variables by
executing:
setenv ipaddr 192.168.120.222;setenv serverip 192.168.120.99
Note: Generally, the default IP of a router is 192.168.120.1. In this case, use the server IP as the IP assigned by the DHCP server of the router and use the VisionFive 2 IP as 192.168.120.xxx. However, if your router IP is different (for example, 192.168.2.1 ), make sure the server IP and VisionFive 2 IP are in the same IP domain (for example, 192.168.2.xxx). - Check the connectivity by pinging the host PC from VisionFive 2.Example command:
ping 192.168.120.99
Result:
The following output indicates that the host PC and VisionFive 2 have established communication on the same network.StarFive # ping 192.168.120.99 speed: 1000, full duplex Using dwmac.10020000 device host 192.168.120.99 is alive
- Initialize SPI
Flash:
sf probe
Result:StarFive # sf probe SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB
- Update SPL binary, the following is the command and example
output:
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
- Update U-Boot binary, the following is the command and example
output:
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 #
Through flashcp
Command
To update SPL and U-Boot through the flashcp
command, perform the
following steps:
Note: This method requires to enter the Debian OS and only
supports versions equal to or later than VF2_v2.5.0.
- Install the mtd-utils package by executing the
following
command:
apt install mtd-utils
- Transfer the latest u-boot-spl.bin.normal.out and visionfive2_fw_payload.img files to Debian system through SCP.
- Execute the following command to check the MTD
partition:
Example Output:cat /proc/mtd
You will see the partition information in the QSPI flash:
dev: size erasesize name mtd0: 00040000 00001000 "spl" mtd1: 00010000 00001000 "uboot-env" mtd2: 00300000 00001000 "uboot" mtd3: 00100000 00001000 "data"
- Update the SPL and U-Boot binaries according to different partitions:
- Example command to update
SPL:
flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
- Example command to update
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%)
- Example command to update
SPL:
- Restart the system to make the updates take effect.