1*b72794e3SNeil ArmstrongU-Boot for Amlogic S400 2*b72794e3SNeil Armstrong======================= 3*b72794e3SNeil Armstrong 4*b72794e3SNeil ArmstrongS400 is a reference board manufactured by Amlogic with the following 5*b72794e3SNeil Armstrongspecifications: 6*b72794e3SNeil Armstrong 7*b72794e3SNeil Armstrong - Amlogic A113DX ARM Cortex-A53 quad-core SoC @ 1.2GHz 8*b72794e3SNeil Armstrong - 1GB DDR4 SDRAM 9*b72794e3SNeil Armstrong - 10/100 Ethernet 10*b72794e3SNeil Armstrong - 2 x USB 2.0 Host 11*b72794e3SNeil Armstrong - eMMC 12*b72794e3SNeil Armstrong - Infrared receiver 13*b72794e3SNeil Armstrong - SDIO WiFi Module 14*b72794e3SNeil Armstrong - MIPI DSI Connector 15*b72794e3SNeil Armstrong - Audio HAT Connector 16*b72794e3SNeil Armstrong - PCI-E M.2 Connectors 17*b72794e3SNeil Armstrong 18*b72794e3SNeil ArmstrongSchematics are available from Amlogic on demand. 19*b72794e3SNeil Armstrong 20*b72794e3SNeil ArmstrongCurrently the u-boot port supports the following devices: 21*b72794e3SNeil Armstrong - serial 22*b72794e3SNeil Armstrong - eMMC 23*b72794e3SNeil Armstrong - Ethernet 24*b72794e3SNeil Armstrong - I2C 25*b72794e3SNeil Armstrong - Regulators 26*b72794e3SNeil Armstrong - Reset controller 27*b72794e3SNeil Armstrong - Clock controller 28*b72794e3SNeil Armstrong - USB Host 29*b72794e3SNeil Armstrong - ADC 30*b72794e3SNeil Armstrong 31*b72794e3SNeil Armstrongu-boot compilation 32*b72794e3SNeil Armstrong================== 33*b72794e3SNeil Armstrong 34*b72794e3SNeil Armstrong > export ARCH=arm 35*b72794e3SNeil Armstrong > export CROSS_COMPILE=aarch64-none-elf- 36*b72794e3SNeil Armstrong > make s400_defconfig 37*b72794e3SNeil Armstrong > make 38*b72794e3SNeil Armstrong 39*b72794e3SNeil ArmstrongImage creation 40*b72794e3SNeil Armstrong============== 41*b72794e3SNeil Armstrong 42*b72794e3SNeil ArmstrongAmlogic doesn't provide sources for the firmware and for tools needed 43*b72794e3SNeil Armstrongto create the bootloader image, so it is necessary to obtain them from 44*b72794e3SNeil Armstrongthe git tree published by the board vendor: 45*b72794e3SNeil Armstrong 46*b72794e3SNeil Armstrong > wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 47*b72794e3SNeil Armstrong > wget https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 48*b72794e3SNeil Armstrong > tar xvfJ gcc-linaro-aarch64-none-elf-4.8-2013.11_linux.tar.xz 49*b72794e3SNeil Armstrong > tar xvfJ gcc-linaro-arm-none-eabi-4.8-2013.11_linux.tar.xz 50*b72794e3SNeil Armstrong > 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*b72794e3SNeil Armstrong > git clone https://github.com/BayLibre/u-boot.git -b n-amlogic-openlinux-20170606 amlogic-u-boot 52*b72794e3SNeil Armstrong > cd amlogic-u-boot 53*b72794e3SNeil Armstrong > make axg_s400_v1_defconfig 54*b72794e3SNeil Armstrong > make 55*b72794e3SNeil Armstrong > export FIPDIR=$PWD/fip 56*b72794e3SNeil Armstrong 57*b72794e3SNeil ArmstrongGo back to mainline U-boot source tree then : 58*b72794e3SNeil Armstrong > mkdir fip 59*b72794e3SNeil Armstrong 60*b72794e3SNeil Armstrong > cp $FIPDIR/axg/bl2.bin fip/ 61*b72794e3SNeil Armstrong > cp $FIPDIR/axg/acs.bin fip/ 62*b72794e3SNeil Armstrong > cp $FIPDIR/axg/bl21.bin fip/ 63*b72794e3SNeil Armstrong > cp $FIPDIR/axg/bl30.bin fip/ 64*b72794e3SNeil Armstrong > cp $FIPDIR/axg/bl301.bin fip/ 65*b72794e3SNeil Armstrong > cp $FIPDIR/axg/bl31.img fip/ 66*b72794e3SNeil Armstrong > cp u-boot.bin fip/bl33.bin 67*b72794e3SNeil Armstrong 68*b72794e3SNeil Armstrong > $FIPDIR/blx_fix.sh \ 69*b72794e3SNeil Armstrong fip/bl30.bin \ 70*b72794e3SNeil Armstrong fip/zero_tmp \ 71*b72794e3SNeil Armstrong fip/bl30_zero.bin \ 72*b72794e3SNeil Armstrong fip/bl301.bin \ 73*b72794e3SNeil Armstrong fip/bl301_zero.bin \ 74*b72794e3SNeil Armstrong fip/bl30_new.bin \ 75*b72794e3SNeil Armstrong bl30 76*b72794e3SNeil Armstrong 77*b72794e3SNeil Armstrong > $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 78*b72794e3SNeil Armstrong 79*b72794e3SNeil Armstrong > $FIPDIR/blx_fix.sh \ 80*b72794e3SNeil Armstrong fip/bl2_acs.bin \ 81*b72794e3SNeil Armstrong fip/zero_tmp \ 82*b72794e3SNeil Armstrong fip/bl2_zero.bin \ 83*b72794e3SNeil Armstrong fip/bl21.bin \ 84*b72794e3SNeil Armstrong fip/bl21_zero.bin \ 85*b72794e3SNeil Armstrong fip/bl2_new.bin \ 86*b72794e3SNeil Armstrong bl2 87*b72794e3SNeil Armstrong 88*b72794e3SNeil Armstrong > $FIPDIR/axg/aml_encrypt_axg --bl3sig --input fip/bl30_new.bin \ 89*b72794e3SNeil Armstrong --output fip/bl30_new.bin.enc \ 90*b72794e3SNeil Armstrong --level v3 --type bl30 91*b72794e3SNeil Armstrong > $FIPDIR/axg/aml_encrypt_axg --bl3sig --input fip/bl31.img \ 92*b72794e3SNeil Armstrong --output fip/bl31.img.enc \ 93*b72794e3SNeil Armstrong --level v3 --type bl31 94*b72794e3SNeil Armstrong > $FIPDIR/axg/aml_encrypt_axg --bl3sig --input fip/bl33.bin --compress lz4 \ 95*b72794e3SNeil Armstrong --output fip/bl33.bin.enc \ 96*b72794e3SNeil Armstrong --level v3 --type bl33 97*b72794e3SNeil Armstrong > $FIPDIR/axg/aml_encrypt_axg --bl2sig --input fip/bl2_new.bin \ 98*b72794e3SNeil Armstrong --output fip/bl2.n.bin.sig 99*b72794e3SNeil Armstrong > $FIPDIR/axg/aml_encrypt_axg --bootmk \ 100*b72794e3SNeil Armstrong --output fip/u-boot.bin \ 101*b72794e3SNeil Armstrong --bl2 fip/bl2.n.bin.sig \ 102*b72794e3SNeil Armstrong --bl30 fip/bl30_new.bin.enc \ 103*b72794e3SNeil Armstrong --bl31 fip/bl31.img.enc \ 104*b72794e3SNeil Armstrong --bl33 fip/bl33.bin.enc --level v3 105*b72794e3SNeil Armstrong 106*b72794e3SNeil Armstrongand then write the image to SD with: 107*b72794e3SNeil Armstrong 108*b72794e3SNeil Armstrong > DEV=/dev/your_sd_device 109*b72794e3SNeil Armstrong > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 110*b72794e3SNeil Armstrong > dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=444 111