1.. SPDX-License-Identifier: GPL-2.0+ 2 3U-Boot for NanoPi-K2 4==================== 5 6NanoPi-K2 is a single board computer manufactured by FriendlyElec 7with the following specifications: 8 9 - Amlogic S905 ARM Cortex-A53 quad-core SoC @ 1.5GHz 10 - ARM Mali 450 GPU 11 - 2GB DDR3 SDRAM 12 - Gigabit Ethernet 13 - HDMI 2.0 4K/60Hz display 14 - 40-pin GPIO header 15 - 4 x USB 2.0 Host, 1 x USB OTG 16 - eMMC, microSD 17 - Infrared receiver 18 19Schematics are available on the manufacturer website. 20 21U-Boot compilation 22------------------ 23 24.. code-block:: bash 25 26 $ export CROSS_COMPILE=aarch64-none-elf- 27 $ make nanopi-k2_defconfig 28 $ make 29 30Image creation 31-------------- 32 33Amlogic doesn't provide sources for the firmware and for tools needed 34to create the bootloader image, so it is necessary to obtain them from 35the git tree published by the board vendor: 36 37.. code-block:: bash 38 39 $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 40 $ wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 41 $ tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 42 $ tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 43 $ 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 44 $ git clone https://github.com/BayLibre/u-boot.git -b libretech-cc amlogic-u-boot 45 $ git clone https://github.com/friendlyarm/u-boot.git -b nanopi-k2-v2015.01 amlogic-u-boot 46 $ cd amlogic-u-boot 47 $ sed -i 's/aarch64-linux-gnu-/aarch64-none-elf-/' Makefile 48 $ sed -i 's/arm-linux-/arm-none-eabi-/' arch/arm/cpu/armv8/gxb/firmware/scp_task/Makefile 49 $ make nanopi-k2_defconfig 50 $ make 51 $ export FIPDIR=$PWD/fip 52 53Go back to mainline U-Boot source tree then : 54 55.. code-block:: bash 56 57 $ mkdir fip 58 59 $ cp $FIPDIR/gxb/bl2.bin fip/ 60 $ cp $FIPDIR/gxb/acs.bin fip/ 61 $ cp $FIPDIR/gxb/bl21.bin fip/ 62 $ cp $FIPDIR/gxb/bl30.bin fip/ 63 $ cp $FIPDIR/gxb/bl301.bin fip/ 64 $ cp $FIPDIR/gxb/bl31.img fip/ 65 $ cp u-boot.bin fip/bl33.bin 66 67 $ $FIPDIR/blx_fix.sh \ 68 fip/bl30.bin \ 69 fip/zero_tmp \ 70 fip/bl30_zero.bin \ 71 fip/bl301.bin \ 72 fip/bl301_zero.bin \ 73 fip/bl30_new.bin \ 74 bl30 75 76 $ $FIPDIR/fip_create \ 77 --bl30 fip/bl30_new.bin \ 78 --bl31 fip/bl31.img \ 79 --bl33 fip/bl33.bin \ 80 fip/fip.bin 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 $ cat fip/bl2_new.bin fip/fip.bin > fip/boot_new.bin 94 95 $ $FIPDIR/gxb/aml_encrypt_gxb --bootsig \ 96 --input fip/boot_new.bin 97 --output fip/u-boot.bin 98 99and then write the image to SD with: 100 101.. code-block:: bash 102 103 $ DEV=/dev/your_sd_device 104 $ dd if=fip/u-boot.bin of=$DEV conv=fsync,notrunc bs=512 seek=1 105