1U-Boot for Khadas VIM2 2======================= 3 4Khadas VIM2 is an Open Source DIY Box manufactured by Shenzhen Wesion 5Technology Co., Ltd with the following specifications: 6 7 - Amlogic S912 ARM Cortex-A53 octo-core SoC @ 1.5GHz 8 - ARM Mali T860 GPU 9 - 2/3GB DDR4 SDRAM 10 - 10/100/1000 Ethernet 11 - HDMI 2.0 4K/60Hz display 12 - 40-pin GPIO header 13 - 2 x USB 2.0 Host, 1 x USB 2.0 Type-C OTG 14 - 16GB/32GB/64GB eMMC 15 - 2MB SPI Flash 16 - microSD 17 - SDIO Wifi Module, Bluetooth 18 - Two channels IR receiver 19 20Currently the u-boot port supports the following devices: 21 - serial 22 - eMMC, microSD 23 - Ethernet 24 - I2C 25 - Regulators 26 - Reset controller 27 - Clock controller 28 - USB Host 29 - ADC 30 31U-Boot compilation 32================== 33 34 > export ARCH=arm 35 > export CROSS_COMPILE=aarch64-none-elf- 36 > make khadas-vim2_defconfig 37 > make 38 39Image creation 40============== 41 42Amlogic doesn't provide sources for the firmware and for tools needed 43to create the bootloader image, so it is necessary to obtain them from 44the git tree published by the board vendor: 45 46 > wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 47 > wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 48 > tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 49 > tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 50 > 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 51 > git clone https://github.com/khadas/u-boot -b Vim vim-u-boot 52 > cd vim-u-boot 53 > make kvim_defconfig 54 > make 55 > export FIPDIR=$PWD/fip 56 57Go back to mainline U-Boot source tree then : 58 > mkdir fip 59 60 > cp $FIPDIR/gxl/bl2.bin fip/ 61 > cp $FIPDIR/gxl/acs.bin fip/ 62 > cp $FIPDIR/gxl/bl21.bin fip/ 63 > cp $FIPDIR/gxl/bl30.bin fip/ 64 > cp $FIPDIR/gxl/bl301.bin fip/ 65 > cp $FIPDIR/gxl/bl31.img fip/ 66 > cp u-boot.bin fip/bl33.bin 67 68 > $FIPDIR/blx_fix.sh \ 69 fip/bl30.bin \ 70 fip/zero_tmp \ 71 fip/bl30_zero.bin \ 72 fip/bl301.bin \ 73 fip/bl301_zero.bin \ 74 fip/bl30_new.bin \ 75 bl30 76 77 > python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 78 79 > $FIPDIR/blx_fix.sh \ 80 fip/bl2_acs.bin \ 81 fip/zero_tmp \ 82 fip/bl2_zero.bin \ 83 fip/bl21.bin \ 84 fip/bl21_zero.bin \ 85 fip/bl2_new.bin \ 86 bl2 87 88 > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin 89 > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl31.img 90 > $FIPDIR/gxl/aml_encrypt_gxl --bl3enc --input fip/bl33.bin 91 > $FIPDIR/gxl/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig 92 > $FIPDIR/gxl/aml_encrypt_gxl --bootmk \ 93 --output fip/u-boot.bin \ 94 --bl2 fip/bl2.n.bin.sig \ 95 --bl30 fip/bl30_new.bin.enc \ 96 --bl31 fip/bl31.img.enc \ 97 --bl33 fip/bl33.bin.enc 98 99and then write the image to SD with: 100 101 > DEV=/dev/your_sd_device 102 > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 103 > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444 104