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