DeepComputing Framework Motherboard (FLM13V01)

The DeepComputing Framework motherboard (FLM13V01) can be combined with a 13 inch Framework laptop chassis to provide a complete laptop.

U-Boot for the board uses the same binaries as the VisionFive 2 board. Currently only serial console output is supported by mainline U-Boot.

Building

Setup the cross compilation environment variable:

export CROSS_COMPILE=riscv64-linux-gnu-

The M-mode software OpenSBI provides the supervisor binary interface (SBI) and is responsible for the switch to S-Mode. It is a prerequisite for building U-Boot. Support for the JH7110 was introduced in OpenSBI 1.2. It is recommended to use a current release.

git clone https://github.com/riscv/opensbi.git
cd opensbi
make PLATFORM=generic FW_TEXT_START=0x40000000 FW_OPTIONS=0
export OPENSBI="$(pwd)/build/platform/generic/firmware/fw_dynamic.bin"

Now build U-Boot SPL and main U-Boot.

cd <U-Boot-dir>
make starfive_visionfive2_defconfig
make

This will generate the U-Boot SPL image (spl/u-boot-spl.bin.normal.out) as well as the FIT image (u-boot.itb) with OpenSBI, U-Boot, and device-trees.

Device-tree selection

The product ID stored in the board EEPROM is used by U-Boot SPL to select the right configuration and device-tree from the u-boot.itb FIT image.

Furthermore if variable $fdtfile has not been saved in the environment it is set based on the product ID to starfive/jh7110-deepcomputing-fml13v01.dtb.

To overrule this default the variable can be set manually and saved in the environment

setenv fdtfile my_device-tree.dtb
env save

Power switch

A tiny power switch is located in right upper corner of the board.

Open case detection

The board has an open case detection switch. Red lights will flash and the board will not boot if the switch is not held down.

UART

UART 0 is exposed via the side channel contacts SBU1 and SBU2 of the lower, right USB C connector. A USB C cable and a breakout board are needed for physical access. It depends on the cable orientation on which of SBU1 and SBU2 you will find RX and TX. The signal voltage is 3.3 V. The baud rate is 115200.

Boot source selection

The board provides DIP switches to select the device for loading the boot firmware.

Boot source

SW1

SW2

UART

OFF

OFF

SD-card

ON

OFF

eMMC

OFF

ON

SPI flash

ON

ON

Flashing a new U-Boot version

U-Boot SPL is provided as file spl/u-boot-spl.bin.normal.out. Main U-Boot is in file u-boot.itb.

Assuming your new U-Boot version is on partition 1 of an SD-card you could install it to the SPI flash with:

sf probe
load mmc 1:1 $kernel_addr_r u-boot-spl.bin.normal.out
sf update $kernel_addr_r 0 $filesize
load mmc 1:1 $kernel_addr_r u-boot.itb
sf update $kernel_addr_r 0x100000 $filesize

For loading the files from a TFTP server refer to the dhcp and tftpboot commands.

After updating U-Boot you may want to erase a saved environment and reboot.

env erase
reset

Booting from SD-Card

The device boot ROM loads U-Boot SPL (u-boot-spl.bin.normal.out) from the partition with type GUID 2E54B353-1271-4842-806F-E436D6AF6985. You are free to choose any partition number.

With the default configuration U-Boot SPL loads the U-Boot FIT image (u-boot.itb) from partition 2 (CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x2). When formatting it is recommended to use GUID BC13C2FF-59E6-4262-A352-B275FD6F7172 for this partition.

Booting from eMMC

The device boot ROM tries to load U-Boot SPL (u-boot-spl.bin.normal.out) from sector 0 of the eMMC’s main hardware partition. But this conflicts with GPT partitioning. Fortunately eMMC can alternatively load U-Boot SPL from a backup position.

For U-Boot SPL (u-boot-spl.bin.normal.out) starting at sector 2048 (position 0x100000) write the following bytes to the eMMC device after GPT partitioning:

Address

Bytes

0x0000

40 02 00 00 00 00 10 00

0x0290

40 02 00 00 00 00 10 00

With the default configuration U-Boot SPL loads the U-Boot FIT image (u-boot.itb) from partition 2 (CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x2). When formatting it is recommended to use GUID BC13C2FF-59E6-4262-A352-B275FD6F7172 for this partition.

Booting from UART

The boot ROM supports the X-modem protocol to upload spl/u-boot-spl.bin.normal.out. U-Boot SPL support loading the FIT image u-boot.itb via the Y-modem protocol.

Due to restrictions of the boot ROM not all X-modem implementations are compatible. The package tio (https://github.com/tio/tio) has been found to be usable.

Debug UART

By default the SBI interface is used for the debug UART. But this only works in main U-Boot. To enable the debug UART in SPL, too, use the following settings:

CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_NS16550=y
CONFIG_DEBUG_UART_BASE=0x10000000
CONFIG_SPL_DEBUG_UART_BASE=0x10000000
CONFIG_DEBUG_UART_CLOCK=24000000
CONFIG_DEBUG_UART_SHIFT=2