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