Sam Protsenko | 29c8027 | 2024-01-10 21:09:08 -0600 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0+ |
| 2 | .. sectionauthor:: Sam Protsenko <semen.protsenko@linaro.org> |
| 3 | |
| 4 | WinLink E850-96 board |
| 5 | ===================== |
| 6 | |
| 7 | Overview |
| 8 | -------- |
| 9 | |
| 10 | WinLink's E850-96 board [1]_ is based on Samsung Exynos850 SoC and follows |
| 11 | 96Boards Consumer Edition specification [2]_. That makes it possible to use |
| 12 | 96Boards mezzanine boards [3]_ along with it. It's an open-hardware board and |
| 13 | the hardware design files [4]_ were published, along with the supported |
| 14 | software [5]_ and related documentation. |
| 15 | |
| 16 | U-Boot can be used on E850-96 instead of the original Samsung LittleKernel based |
| 17 | bootloader [6]_. Because FWBL1 [7]_ doesn't verify bootloader's signature, there |
| 18 | is 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 |
| 20 | work. |
| 21 | |
| 22 | Because 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 |
| 24 | U-Boot proper (``u-boot.bin``). |
| 25 | |
| 26 | Boot Flow |
| 27 | --------- |
| 28 | |
| 29 | The 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 | |
| 34 | Legend: |
| 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 | |
| 46 | Build Procedure |
| 47 | --------------- |
| 48 | |
| 49 | .. warning:: |
| 50 | At the moment both eMMC and USB features are not enabled in U-Boot. Flashing |
| 51 | U-Boot binary **WILL** effectively brick your board. The ``dltool`` [8]_ can |
| 52 | be used then to perform USB boot and flash LittleKernel bootloader binary [7]_ |
| 53 | to unbrick and revive the board. Flashing U-Boot binary might be helpful for |
| 54 | developers or anybody who want to check current state of U-Boot enablement on |
| 55 | E850-96 (which is mostly serial console and related blocks). |
| 56 | |
| 57 | Build U-Boot binary from source code (using AArch64 baremetal GCC toolchain): |
| 58 | |
| 59 | .. prompt:: bash $ |
| 60 | |
| 61 | export PATH=<toolchain path>/bin:$PATH |
| 62 | export CROSS_COMPILE=<toolchain prefix> |
| 63 | make e850-96_defconfig |
| 64 | make |
| 65 | |
| 66 | Boot E850-96 board into fastboot mode as described in board software doc [9]_, |
| 67 | and flash U-Boot binary into ``bootloader`` eMMC partition: |
| 68 | |
| 69 | .. prompt:: bash $ |
| 70 | |
| 71 | fastboot flash bootloader u-boot.bin |
| 72 | fastboot reboot |
| 73 | |
| 74 | U-Boot will boot up to the shell. |
| 75 | |
| 76 | References |
| 77 | ---------- |
| 78 | |
| 79 | .. [1] https://www.96boards.org/product/e850-96b/ |
| 80 | .. [2] https://www.96boards.org/products/ce/ |
| 81 | .. [3] https://www.96boards.org/products/mezzanine/ |
| 82 | .. [4] https://www.96boards.org/documentation/consumer/e850-96b/hardware-docs/ |
| 83 | .. [5] https://gitlab.com/Linaro/96boards/e850-96/ |
| 84 | .. [6] https://gitlab.com/Linaro/96boards/e850-96/lk |
| 85 | .. [7] https://gitlab.com/Linaro/96boards/e850-96/images |
| 86 | .. [8] https://gitlab.com/Linaro/96boards/e850-96/tools/dltool |
| 87 | .. [9] https://gitlab.com/Linaro/96boards/e850-96/doc |