blob: 0a7b6fc0c9ddce3b3c2995f671363f0f2534d619 [file] [log] [blame]
Sam Protsenko29c80272024-01-10 21:09:08 -06001.. SPDX-License-Identifier: GPL-2.0+
2.. sectionauthor:: Sam Protsenko <semen.protsenko@linaro.org>
3
4WinLink E850-96 board
5=====================
6
7Overview
8--------
9
10WinLink's E850-96 board [1]_ is based on Samsung Exynos850 SoC and follows
1196Boards Consumer Edition specification [2]_. That makes it possible to use
1296Boards mezzanine boards [3]_ along with it. It's an open-hardware board and
13the hardware design files [4]_ were published, along with the supported
14software [5]_ and related documentation.
15
16U-Boot can be used on E850-96 instead of the original Samsung LittleKernel based
17bootloader [6]_. Because FWBL1 [7]_ doesn't verify bootloader's signature, there
18is no need to sign a U-Boot binary. That means U-Boot binary can be flashed into
19``bootloader`` partition (instead of LittleKernel bootloader) and it will just
20work.
21
22Because BL2 bootloader already sets up DRAM and runs the final bootloader
23(U-Boot) from DRAM, there is no need in U-Boot SPL. It's enough to have only
24U-Boot proper (``u-boot.bin``).
25
26Boot Flow
27---------
28
29The boot path for Exynos850 is shown on the figure below.
30
31.. image:: img/exynos850-boot-architecture.svg
32 :alt: Exynos850 SoC boot flow
33
34Legend:
35
36* ``BL0``: Boot ROM code
37* ``BL1``: Software part of Boot ROM
38* ``EPBL``: Exynos Primary Boot Loader
39* ``BL2``: Initializes CMU and DRAM and runs the final bootloader
40* ``Bootloader``: Final bootloader (e.g. U-Boot); also called BL33 in terms of
41 ARM boot flow
42* ``EL3_MON``: EL3 monitor (trusted firmware, handles SMC calls); also called
43 BL31 in terms of ARM boot flow
44* ``LDFW``: Loadable Firmware
45
46Build Procedure
47---------------
48
49.. warning::
Sam Protsenko686ae982024-08-07 22:14:44 -050050 At the moment USB is not enabled in U-Boot for this board. Although eMMC is
51 enabled, you won't be able to flash images over USB (fastboot). So flashing
Sam Protsenko29c80272024-01-10 21:09:08 -060052 U-Boot binary **WILL** effectively brick your board. The ``dltool`` [8]_ can
53 be used then to perform USB boot and flash LittleKernel bootloader binary [7]_
54 to unbrick and revive the board. Flashing U-Boot binary might be helpful for
55 developers or anybody who want to check current state of U-Boot enablement on
Sam Protsenko686ae982024-08-07 22:14:44 -050056 E850-96 (which is mostly serial console, eMMC and related blocks).
Sam Protsenko29c80272024-01-10 21:09:08 -060057
58Build U-Boot binary from source code (using AArch64 baremetal GCC toolchain):
59
60.. prompt:: bash $
61
62 export PATH=<toolchain path>/bin:$PATH
63 export CROSS_COMPILE=<toolchain prefix>
64 make e850-96_defconfig
65 make
66
67Boot E850-96 board into fastboot mode as described in board software doc [9]_,
68and flash U-Boot binary into ``bootloader`` eMMC partition:
69
70.. prompt:: bash $
71
72 fastboot flash bootloader u-boot.bin
73 fastboot reboot
74
75U-Boot will boot up to the shell.
76
77References
78----------
79
80.. [1] https://www.96boards.org/product/e850-96b/
81.. [2] https://www.96boards.org/products/ce/
82.. [3] https://www.96boards.org/products/mezzanine/
83.. [4] https://www.96boards.org/documentation/consumer/e850-96b/hardware-docs/
84.. [5] https://gitlab.com/Linaro/96boards/e850-96/
85.. [6] https://gitlab.com/Linaro/96boards/e850-96/lk
86.. [7] https://gitlab.com/Linaro/96boards/e850-96/images
87.. [8] https://gitlab.com/Linaro/96boards/e850-96/tools/dltool
88.. [9] https://gitlab.com/Linaro/96boards/e850-96/doc