WinLink E850-96 board
Overview
WinLink’s E850-96 board [1] is based on Samsung Exynos850 SoC and follows 96Boards Consumer Edition specification [2]. That makes it possible to use 96Boards mezzanine boards [3] along with it. It’s an open-hardware board and the hardware design files [4] were published, along with the supported software [5] and related documentation.
U-Boot can be used on E850-96 instead of the original Samsung LittleKernel based
bootloader [6]. Because FWBL1 [7] doesn’t verify bootloader’s signature, there
is no need to sign a U-Boot binary. That means U-Boot binary can be flashed into
bootloader
partition (instead of LittleKernel bootloader) and it will just
work.
Because BL2 bootloader already sets up DRAM and runs the final bootloader
(U-Boot) from DRAM, there is no need in U-Boot SPL. It’s enough to have only
U-Boot proper (u-boot.bin
).
Boot Flow
The boot path for Exynos850 is shown on the figure below.
Legend:
BL0
: Boot ROM codeBL1
: Software part of Boot ROMEPBL
: Exynos Primary Boot LoaderBL2
: Initializes CMU and DRAM and runs the final bootloaderBootloader
: Final bootloader (e.g. U-Boot); also called BL33 in terms of ARM boot flowEL3_MON
: EL3 monitor (trusted firmware, handles SMC calls); also called BL31 in terms of ARM boot flowLDFW
: Loadable Firmware
Build Procedure
Warning
At the moment USB is not enabled in U-Boot for this board. Although eMMC is
enabled, you won’t be able to flash images over USB (fastboot). So flashing
U-Boot binary WILL effectively brick your board. The dltool
[8] can
be used then to perform USB boot and flash LittleKernel bootloader binary [7]
to unbrick and revive the board. Flashing U-Boot binary might be helpful for
developers or anybody who want to check current state of U-Boot enablement on
E850-96 (which is mostly serial console, eMMC and related blocks).
Build U-Boot binary from source code (using AArch64 baremetal GCC toolchain):
export PATH=<toolchain path>/bin:$PATH
export CROSS_COMPILE=<toolchain prefix>
make e850-96_defconfig
make
Boot E850-96 board into fastboot mode as described in board software doc [9],
and flash U-Boot binary into bootloader
eMMC partition:
fastboot flash bootloader u-boot.bin
fastboot reboot
U-Boot will boot up to the shell.