Hello everyone,
I already saw solutions to upgrade firmware by using buildroot sdcardimage, but I did not noticed that so I will provide how I have solved this problem. It still may be usefull for others even it is quite builky I would say (but does not require to reflash SD card atleast :D)
Note: I have done everything mentione bellow by accesing u-boot from serial console , as well as using Linux machine, not Windows.
First stage (temporary boot debian 69 with old firmware):
-
Mount sd card boot partition (partition 2) to your PC:
sdc 8:32 1 29,8G 0 disk
├─sdc1 8:33 1 16M 0 part
├─sdc2 8:34 1 100M 0 part
└─sdc3 8:35 1 29,6G 0 part -
Copy device tree for correct naming:
cp {mount_point}/boot/dtbs/starfive/jh7110-visionfive-v2.dtb {mount_point}/boot/dtbs/starfive/starfive_visionfive2.dtb
This should help withFailed to load /boot/dtbs/starfive/starfive_visionfive2.dtb
error -
put SD to device and boot, wait till it fails to boot, because of:
kernel_comp_addr_r or kernel_comp_size is not provided!
(or stop boot manually) -
Now set kernel address and size:
setenv kernel_comp_addr_r 0x50000000
setenv kernel_comp_size 0x1000000
-
Boot again (now it should boot to login prompt):
run bootcmd
Second stage (firmware updating):
It is same as described in: Updating SPL and U-Boot, but instead of compiling binaries, you can download u-boot-spl.bin.normal.out
and visionfive2_fw_payload.img
from Releases · starfive-tech/VisionFive2 · GitHub
-
Install mtd-utils
apt install mtd-utils
-
download
u-boot-spl.bin.normal.out
andvisionfive2_fw_payload.img
-
flash firmware to corresponding locations:
flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
flashcp -v visionfive2_fw_payload.img /dev/mtd1
Hope it helps! Have a nice day!