1.. SPDX-License-Identifier: GPL-2.0+ 2 3U-Boot for LibreTech CCs 4======================== 5 6LibreTech CC is a single board computer manufactured by Libre Technology 7with the following specifications: 8 9V1: 10 11 - Amlogic S905X ARM Cortex-A53 quad-core SoC @ 1.5GHz 12 - ARM Mali 450 GPU 13 - 2GB DDR3 SDRAM 14 - 10/100 Ethernet 15 - HDMI 2.0 4K/60Hz display 16 - 40-pin GPIO header 17 - 4 x USB 2.0 Host 18 - eMMC, microSD 19 - Infrared receiver 20 - Jack for CVBS and Audio 21 22V2: 23 24 - Added SPI NOR 25 - Removed Jack 26 27Schematics are available on the manufacturer website. 28 29U-Boot compilation 30------------------ 31 32.. code-block:: bash 33 34 $ export CROSS_COMPILE=aarch64-none-elf- 35 $ make libretech-cc_defconfig 36 $ make 37 38Use libretech-cc_v2_defconfig for v2. 39 40Image creation 41-------------- 42 43To boot the system, u-boot must be combined with several earlier stage 44bootloaders: 45 46* bl2.bin: vendor-provided binary blob 47* bl21.bin: built from vendor u-boot source 48* bl30.bin: vendor-provided binary blob 49* bl301.bin: built from vendor u-boot source 50* bl31.bin: vendor-provided binary blob 51* acs.bin: built from vendor u-boot source 52 53These binaries and the tools required below have been collected and prebuilt 54for convenience at <https://github.com/BayLibre/u-boot/releases/>. These 55apply to both v1 and v2. 56 57Download and extract the libretech-cc release from there, and set FIPDIR to 58point to the `fip` subdirectory. 59 60.. code-block:: bash 61 62 $ export FIPDIR=/path/to/extracted/fip 63 64Alternatively, you can obtain the original vendor u-boot tree which 65contains the required blobs and sources, and build yourself. 66Note that old compilers are required for this to build. The compilers here 67are suggested by Amlogic, and they are 32-bit x86 binaries. 68 69.. code-block:: bash 70 71 $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 72 $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 73 $ tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 74 $ tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 75 $ 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 76 $ git clone https://github.com/BayLibre/u-boot.git -b libretech-cc amlogic-u-boot 77 $ cd amlogic-u-boot 78 $ make libretech_cc_defconfig 79 $ make 80 $ export FIPDIR=$PWD/fip 81 82Once you have the binaries available (either through the prebuilt download, 83or having built the vendor u-boot yourself), you can then proceed to glue 84everything together. Go back to mainline U-Boot source tree then : 85 86.. code-block:: bash 87 88 $ mkdir fip 89 90 $ cp $FIPDIR/gxl/bl2.bin fip/ 91 $ cp $FIPDIR/gxl/acs.bin fip/ 92 $ cp $FIPDIR/gxl/bl21.bin fip/ 93 $ cp $FIPDIR/gxl/bl30.bin fip/ 94 $ cp $FIPDIR/gxl/bl301.bin fip/ 95 $ cp $FIPDIR/gxl/bl31.img fip/ 96 $ cp u-boot.bin fip/bl33.bin 97 98 $ $FIPDIR/blx_fix.sh \ 99 fip/bl30.bin \ 100 fip/zero_tmp \ 101 fip/bl30_zero.bin \ 102 fip/bl301.bin \ 103 fip/bl301_zero.bin \ 104 fip/bl30_new.bin \ 105 bl30 106 107 $ $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 108 109 $ $FIPDIR/blx_fix.sh \ 110 fip/bl2_acs.bin \ 111 fip/zero_tmp \ 112 fip/bl2_zero.bin \ 113 fip/bl21.bin \ 114 fip/bl21_zero.bin \ 115 fip/bl2_new.bin \ 116 bl2 117 118 $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin 119 $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img 120 $ $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin 121 $ $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig 122 $ $FIPDIR/gxl/aml_encrypt_gxl --bootmk \ 123 --output fip/u-boot.bin \ 124 --bl2 fip/bl2.n.bin.sig \ 125 --bl30 fip/bl30_new.bin.enc \ 126 --bl31 fip/bl31.img.enc \ 127 --bl33 fip/bl33.bin.enc 128 129and then write the image to SD with: 130 131.. code-block:: bash 132 133 $ DEV=/dev/your_sd_device 134 $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 135 $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444 136 137Note that Amlogic provides aml_encrypt_gxl as a 32-bit x86 binary with no 138source code. Should you prefer to avoid that, there are open source reverse 139engineered versions available: 140 1411. gxlimg <https://github.com/repk/gxlimg>, which comes with a handy 142 Makefile that automates the whole process. 1432. meson-tools <https://github.com/afaerber/meson-tools> 144 145However, these community-developed alternatives are not endorsed by or 146supported by Amlogic. 147