Confusion about Starfive Github released files. Can you help?

Hi Guys.

On the github Relase page there are these files.

Can you help me out what i can/should do with them ?

Assets 12 ← What is this file ? How to use it ?

Image.gz ← This seems to be a Kernel image. Just not in a deb package. Can i use this ?

initramfs.cpio.gz ← This seems to be a initramfs. Just not in a deb package. Can i use this ?
jh7110-visionfive-v2-ac108.dtb ← Never seen this file before… What is it ?

jh7110-visionfive-v2-wm8960.dtb ← Never seen this file before… What is it ?

jh7110-visionfive-v2.dtb ← Never seen this file before… What is it ?

sdcard.img ← Mini images used to flash firmware

u-boot-spl.bin.normal.out ← New uboot file. Do i need to flash it to get the newest features described in the release ?

vf2-overlay-uart3-i2c.dtbo ← Never seen this file before… What is it ? How to use it ?

visionfive2_fw_payload.img ← New bootloader file. Do i need to flash it to get the newest features described in the release ?


1 Like

I’ve used u-boot-spl.bin.normal.out and visionfive2_fw_payload.img within sdcard.img to update the firmware of the SBC and it works.
Small weird thing : balena etcher told me that the image was not correctly copied to the sd card but it worked flawlessly.
BTW, I don’t know how to control the update (which files/apps and their version to check) ?

Yeah i did the same. But now i can boot the newest image and im wonderin if i need to further flash the new u-boot-spl.bin.normal.out and visionfive2_fw_payload.img to get all the features ?

*.dtsi are Device Tree Source Include files.
*.dts are Device Tree Source files.
*.dtb are Devide Tree Blob files.
*.dtbo are Device Tree Blob Overlay files.

dtb/dtbo are machine readable binary device tree files. The dts/dtsi files in the linux kernel source code are human readable, that the dtb and dtbo files were generated from using a dtc (device tree compiler). dtsi files are include files, so they can contain anything that is in common between multiple dts files.

So then the next question is what are dtb files used for, they are a format expected by the Linux kernel (or u-boot/spl-u-boot) to communicate with hardware. So that the same kernel for one architecture can be used with multiple boards with different SoC’s provided it has access to information held in one or more dtb. I guess it is a way of providing information to software that wants to talk to the hardware in the form of a tree. It can contain information like memory locations and registers and the same information can be accessible through multiple branches. It can also contain information about the multiplexed pins underneath the SoC and the configuration that should be selected for their function on a VF2 board.

tree root -+-> SOC -+-> GPIO -> UART3
           |        |
           |        +-> I2C ...
           +-> GPIO -> UART3
           +-> I2C -+-> I2C0 ->  WM8960 -+-> CPU0
           |                             |
           |                             +-> CPU1
           +-> SPI-> ...
           +-> PCI-> ...
           +-> AXI bus -> ...
           +-> APB ->...
           +-> USB -> ...

And the next question is why is there not just one dtb, because there can be, at the spi-u-boot stage much less information is needed than at the u-boot+opensbi stage. So why waste memory when you have so little, it makes a lot of sense to have multiple dtb files. dtbo is just an overlay file, for when you want to replace information that has changed between stages in the boot.


FIT files are Flat Image Tree.

OK so basicly i need all files when i upgrade or just the kernel ? As the hardware does not change the kernel should be enough ?

What about flashing the new firmware again ?


It should eventually reach a time where at very least the spl boot stage is fully stable and unchanging. But if there are bugs/flaws found or support needed for later revisions of the SoC/board, there is always a chance of an update (or new features added - that someone thought if I do this, that could happen, and that would be very nice - that would increase sales). Like in theory that E24 CPU core in the JH7110 could at some future date be used for …?offloading OpenGL ES?.. and to enable something like that to happen may require an update to the spl-u-boot.

The production version of the board has not even shipped yet, revision 1.2A (2022-12-14) is the board was shipped to the Super Early Bird supporters, was probably the exact same board that was sent to developers who will eventually make it happen that you will never need to a UART* and HDMI just works (even 4K).

*Well there are always a few exceptions, like a power loss during an update.

As for what you need to do, that has been in the pdf supplied with each new release up until now.

OK i think i found where this stuff belongs:

Assets - Dont’ know where to put it. Maybe not needed. Did not find it in the System

Image.gz - Kernel can be unzipped and used /boot/boot/

initramfs.cpio.gz - Only unzip and use as initramfs /boot/boot/

jh7110-visionfive-v2-ac108.dtb - goes to: /boot/boot/dtbs/starfive

jh7110-visionfive-v2-wm8960.dtb - goes to: /boot/boot/dtbs/starfive

jh7110-visionfive-v2.dtb - goes to: /boot/boot/dtbs/starfive

sdcard.img - needed for flashing firmware the first time

u-boot-spl.bin.normal.out - new firmware flash with sdcard.img

vf2-overlay-uart3-i2c.dtbo- goes to: /boot/boot/dtbs/starfive/vf2-overlay/

visionfive2_fw_payload.img - new firmware flash with sdcard.img – include kernel, dtb and initramfs VisionFive2/visionfive2-fit-image.its at JH7110_VisionFive2_devel · starfive-tech/VisionFive2 · GitHub

jh7110-visionfive-v2-ac108.dtb and jh7110-visionfive-v2-wm8960.dtb are just for ac108 and wm8960 audio board from seeed

vf2-overlay-uart3-i2c.dtbo is just a dtb overlay sample which pin-out uart3 and i2c interface from 40-pin header

sdcard.image is contain uboot/spl/dtb/kernel and rootfs. All-in-One.

1 Like

Hello Michael,

Thanks for jumping in!

Should i replace all the files in my board when there is a new release ?

That means:

  • New flash of the firmware/uboot
  • Overwriteing the dtb files (but pinout did not change on the board ?)
  • Useing the new kernel.

Do i need to do all this to get the latest features or does the kernel suffice ?


basically, like @mzs also mentioned. While most of the features have been implemented, but some features and bugs are still being fixed. so it’s best to update all three items.

1 Like