1.. SPDX-License-Identifier: GPL-2.0+
2
3U-Boot for WeTek Core2 (S912)
4=============================
5
6WeTek Core2 is an Android STB based on the Q200 reference design with the following
7specifications:
8
9 - Amlogic S912 ARM Cortex-A53 octo-core SoC @ 1.5GHz
10 - ARM Mali T820 GPU
11 - 3GB DDR4 SDRAM
12 - 10/100 Realtek RTL8152 Ethernet (internal USB)
13 - HDMI 2.0 4K/60Hz display
14 - 2x USB 2.0 Host
15 - 1x USB 2.0 OTG (internal)
16 - 32GB eMMC
17 - microSD
18 - SDIO Wifi Module, Bluetooth
19 - Two channel IR receiver
20
21U-Boot Compilation
22------------------
23
24.. code-block:: bash
25
26    $ export CROSS_COMPILE=aarch64-none-elf-
27    $ make wetek-core2_defconfig
28    $ make
29
30U-Boot Signing with Pre-Built FIP repo
31--------------------------------------
32
33.. code-block:: bash
34
35    $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1
36    $ cd amlogic-boot-fip
37    $ mkdir my-output-dir
38    $ ./build-fip.sh wetek-core2 /path/to/u-boot/u-boot.bin my-output-dir
39
40U-Boot Manual Signing
41---------------------
42
43Amlogic does not provide firmware sources or tools needed to create the bootloader image
44and WeTek has not publicly shared the precompiled FIP binaries. However the Khadas VIM2
45sources also work with the Core2 box so we can use the Khadas git tree:
46
47.. code-block:: bash
48
49    $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz
50    $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz
51    $ tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz
52    $ tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz
53    $ export PATH=$PWD/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux/bin:$PWD/gcc-linaro-arm-none-eabi-4.8-2013.11_linux/bin:$PATH
54    $ git clone https://github.com/khadas/u-boot -b khadas-vim-v2015.01 vim-u-boot
55    $ cd vim-u-boot
56    $ make kvim2_defconfig
57    $ make
58    $ export FIPDIR=$PWD/fip
59
60Go back to the mainline U-Boot source tree then:
61
62.. code-block:: bash
63
64    $ mkdir fip
65    $ cp $FIPDIR/gxl/bl2.bin fip/
66    $ cp $FIPDIR/gxl/acs.bin fip/
67    $ cp $FIPDIR/gxl/bl21.bin fip/
68    $ cp $FIPDIR/gxl/bl30.bin fip/
69    $ cp $FIPDIR/gxl/bl301.bin fip/
70    $ cp $FIPDIR/gxl/bl31.img fip/
71    $ cp u-boot.bin fip/bl33.bin
72
73    $ $FIPDIR/blx_fix.sh \
74              fip/bl30.bin \
75              fip/zero_tmp \
76              fip/bl30_zero.bin \
77              fip/bl301.bin \
78              fip/bl301_zero.bin \
79              fip/bl30_new.bin \
80              bl30
81
82    $ python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0
83
84    $ $FIPDIR/blx_fix.sh \
85              fip/bl2_acs.bin \
86              fip/zero_tmp \
87              fip/bl2_zero.bin \
88              fip/bl21.bin \
89              fip/bl21_zero.bin \
90              fip/bl2_new.bin \
91              bl2
92
93    $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin
94    $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img
95    $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin
96    $ $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig
97    $ $FIPDIR/gxl/aml_encrypt_gxl --bootmk \
98                                  --output fip/u-boot.bin \
99                                  --bl2 fip/bl2.n.bin.sig \
100                                  --bl30 fip/bl30_new.bin.enc \
101                                  --bl31 fip/bl31.img.enc \
102                                  --bl33 fip/bl33.bin.enc
103
104Then write U-Boot to SD or eMMC with:
105
106.. code-block:: bash
107
108    $ DEV=/dev/boot_device
109    $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1
110    $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440
111