BeagleV
=======
BeagleV is a low-cost RISC-V 64-bit based platform, powered by a
Starfive JH7100 processor. The current defconfig in Buildroot has been
tested with the JH7100 chip used on the beta version of the BeagleV
board.
How to build
============
$ make beaglev_defconfig
$ make
Build results
=============
After building, output/images contains:
+ bootloader-JH7100-buildroot.bin.out
+ ddrinit-2133-buildroot.bin.out
+ Image
+ fw_payload.bin
+ fw_payload.bin.out
+ fw_payload.elf
+ rootfs.ext2
+ rootfs.ext4
+ sdcard.img
+ u-boot.bin
The four important files are:
- bootloader-JH7100-buildroot.bin.out, the first stage bootloader
- ddrinit-2133-buildroot.bin.out, the DDR initialization firmware
- fw_payload.bin.out, which is the bootloader image, containing
both OpenSBI and U-Boot.
- sdcard.img, the SD card image, which contains the root filesystem,
kernel image and Device Tree.
Flashing the SD card image
==========================
$ sudo dd if=output/images/sdcard.img of=/dev/sdX
Preparing the board
===================
Connect the Beagle-V fan to the 5V supply (pin 2 or 4 of the GPIO
connector) and GND (pin 6 of the GPIO connector).
Connect a TTL UART cable to pin 8 (TX), 10 (RX) and 14 (GND).
Insert your SD card.
Power-up the board using an USB-C cable.
Flashing OpenSBI/U-Boot
=======================
The bootloader pre-flashed on the Beagle-V has a non-working
fdt_addr_r environment variable value, so it won't work
as-is. Reflashing the bootloader with the bootloader image produced by
Buildroot is necessary.
When the board starts up, a pre-loader shows a count down of 2
seconds, interrupt by pressing any key. You should reach a menu like
this:
--------8<----------
bootloader version:210209-4547a8d
ddr 0x00000000, 1M test
ddr 0x00100000, 2M test
DDR clk 2133M,Version: 210302-5aea32f
0
***************************************************
*************** FLASH PROGRAMMING *****************
***************************************************
0:update uboot
1:quit
select the function:
--------8<----------
Press 0 and Enter. You will now see "C" characters being
displayed. Ask your serial port communication program to send
fw_payload.bin.out using the Xmodem protocol.
After reflashing is complete, restart the board, it will automatically
start the system from the SD card, and reach the login prompt.
Flashing low-level bootloaders
==============================
The BeagleV comes pre-flashed with functional low-level bootloaders
(called "secondboot" and "ddrinit"). Re-flashing them is not necessary
to use this Buildroot defconfig. However, for the sake of
completeness, Buildroot builds and provides those low-level bootloader
images.
You can flash them as follows:
- In the same "pre-loader" menu as the one used above, instead of
entering 0 or 1, enter the magic "root@s5t" string. This enters the
"expert" features.
- Then, press 0 and send over X-modem the
bootloader-JH7100-buildroot.bin.out file.
- Then, press 1 and send over X-modem the
ddrinit-2133-buildroot.bin.out.
Note that the reflashing mechanism itself relies on those low-level
bootloaders, so if you flash non-working versions, you'll have to go
through a recovery process. This requires wiring up to a separate
debug UART, which pins are located near the HDMI connector. See
https://wiki.seeedstudio.com/BeagleV-Update-bootloader-ddr-init-boot-uboot-Recover-bootloader/
section "Recover the bootloader" for more details. The instructions
make use of a jh7100-recover tool, which Buildroot has built as part
of this defconfig: it is available as output/host/bin/jh7100-recover.