1f9a9fc6fSPeter GriffinIntroduction 2f9a9fc6fSPeter Griffin============ 3f9a9fc6fSPeter Griffin 4f9a9fc6fSPeter GriffinHiKey is the first certified 96Boards Consumer Edition board. The board/SoC has: - 5f9a9fc6fSPeter Griffin* HiSilicon Kirin 6220 eight-core ARM Cortex-A53 64-bit SoC running at 1.2GHz. 6f9a9fc6fSPeter Griffin* ARM Mali 450-MP4 GPU 7f9a9fc6fSPeter Griffin* 1GB 800MHz LPDDR3 DRAM 8f9a9fc6fSPeter Griffin* 4GB eMMC Flash Storage 9f9a9fc6fSPeter Griffin* microSD 10f9a9fc6fSPeter Griffin* 802.11a/b/g/n WiFi, Bluetooth 11f9a9fc6fSPeter Griffin 12f9a9fc6fSPeter GriffinThe HiKey schematic can be found here: - 13f9a9fc6fSPeter Griffinhttps://github.com/96boards/documentation/blob/master/hikey/96Boards-Hikey-Rev-A1.pdf 14f9a9fc6fSPeter Griffin 15f9a9fc6fSPeter GriffinA SoC datasheet can be found here: - 16f9a9fc6fSPeter Griffinhttps://github.com/96boards/documentation/blob/master/hikey/ 17f9a9fc6fSPeter GriffinHi6220V100_Multi-Mode_Application_Processor_Function_Description.pdf 18f9a9fc6fSPeter Griffin 19f9a9fc6fSPeter GriffinCurrently the u-boot port supports: - 20f9a9fc6fSPeter Griffin* USB 21f9a9fc6fSPeter Griffin* eMMC 22f9a9fc6fSPeter Griffin* SD card 23f9a9fc6fSPeter Griffin* GPIO 24f9a9fc6fSPeter Griffin 25532d5203SPeter GriffinThe HiKey U-Boot port has been tested with l-loader, booting ATF, which then boots 26532d5203SPeter GriffinU-Boot as the bl33.bin executable. 27532d5203SPeter Griffin 28532d5203SPeter GriffinCompile from source 29532d5203SPeter Griffin=================== 30532d5203SPeter Griffin 31532d5203SPeter GriffinFirst get all the sources 32532d5203SPeter Griffin 33532d5203SPeter Griffin > mkdir -p ~/hikey/src ~/hikey/bin 34532d5203SPeter Griffin > cd ~/hikey/src 35532d5203SPeter Griffin > git clone https://github.com/96boards/edk2.git 36532d5203SPeter Griffin > git clone https://github.com/96boards/arm-trusted-firmware.git 37532d5203SPeter Griffin > git clone https://github.com/96boards/l-loader.git 38532d5203SPeter Griffin > git clone https://github.com/96boards/burn-boot.git 39532d5203SPeter Griffin 40532d5203SPeter GriffinGet the BL30 mcuimage.bin binary. It is shipped as part of the UEFI source. 41532d5203SPeter GriffinThe latest version can be obtained from the edk2 repo. 42532d5203SPeter Griffin 43532d5203SPeter Griffin > cp edk2/HisiPkg/HiKeyPkg/NonFree/mcuimage.bin ~/hikey/bin/ 44532d5203SPeter Griffin 45532d5203SPeter GriffinGet nvme.img binary (check this link is still the latest) 46532d5203SPeter Griffin > wget -P ~/hikey/bin https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/nvme.img 47532d5203SPeter Griffin 48532d5203SPeter GriffinCompile U-Boot 49f9a9fc6fSPeter Griffin============== 50f9a9fc6fSPeter Griffin 51532d5203SPeter Griffin > cd ~/hikey/src/u-boot 529c71a21dSPeter Griffin > make CROSS_COMPILE=aarch64-linux-gnu- hikey_config 539c71a21dSPeter Griffin > make CROSS_COMPILE=aarch64-linux-gnu- 54532d5203SPeter Griffin > cp u-boot.bin ~/hikey/bin 55f9a9fc6fSPeter Griffin 56532d5203SPeter GriffinCompile ARM Trusted Firmware (ATF) 57532d5203SPeter Griffin================================== 58f9a9fc6fSPeter Griffin 59*a83afb6bSMichal Simek > cd ~/hikey/src/arm-trusted-firmware 60532d5203SPeter Griffin > make CROSS_COMPILE=aarch64-linux-gnu- all fip \ 61532d5203SPeter Griffin BL30=~/hikey/bin/mcuimage.bin \ 62532d5203SPeter Griffin BL33=~/hikey/bin/u-boot.bin DEBUG=1 PLAT=hikey 63f9a9fc6fSPeter Griffin 64532d5203SPeter GriffinCopy resulting binaries 65532d5203SPeter Griffin > cp build/hikey/debug/bl1.bin ~/hikey/bin 66532d5203SPeter Griffin > cp build/hikey/debug/fip.bin ~/hikey/bin 67f9a9fc6fSPeter Griffin 68532d5203SPeter GriffinCompile l-loader 69532d5203SPeter Griffin=============== 70*a83afb6bSMichal Simek > cd ~/hikey/src/l-loader 71532d5203SPeter Griffin > make BL1=~/hikey/bin/bl1.bin all 72532d5203SPeter Griffin > cp *.img ~/hikey/bin 73*a83afb6bSMichal Simek > cp l-loader.bin ~/hikey/bin 74f9a9fc6fSPeter Griffin 75f9a9fc6fSPeter GriffinThese instructions are adapted from 76f9a9fc6fSPeter Griffinhttps://github.com/96boards/documentation/wiki/HiKeyUEFI 77f9a9fc6fSPeter Griffin 78f9a9fc6fSPeter GriffinFLASHING 79f9a9fc6fSPeter Griffin======== 80f9a9fc6fSPeter Griffin 819c71a21dSPeter Griffin1. Connect the second jumper on J15 BOOT SEL, to go into recovery mode and flash l-loader.bin with 82532d5203SPeter Griffinthe hisi-idt.py utility. 83f9a9fc6fSPeter Griffin 849c71a21dSPeter GriffinThe command below assumes HiKey enumerated as the first USB serial port 85*a83afb6bSMichal Simek > sudo ~/hikey/src/burn-boot/hisi-idt.py -d /dev/ttyUSB0 --img1=~/hikey/bin/l-loader.bin 86f9a9fc6fSPeter Griffin 87532d5203SPeter Griffin2. Once LED 0 comes on solid, HiKey board should be detected as a fastboot device by plugging a USB A to mini B 889c71a21dSPeter Griffin cable from your PC to the USB OTG port of HiKey (on some boards I've found this to be unreliable). 899c71a21dSPeter Griffin 909c71a21dSPeter Griffin > sudo fastboot devices 919c71a21dSPeter Griffin 929c71a21dSPeter Griffin0123456789ABCDEF fastboot 93f9a9fc6fSPeter Griffin 94f9a9fc6fSPeter Griffin3. Flash the images 95532d5203SPeter Griffin 96532d5203SPeter Griffin > sudo fastboot flash ptable ~/hikey/bin/ptable.img 97532d5203SPeter Griffin > sudo fastboot flash fastboot ~/hikey/bin/fip.bin 98532d5203SPeter Griffin > sudo fastboot flash nvme ~/hikey/bin/nvme.img 99f9a9fc6fSPeter Griffin 1009c71a21dSPeter Griffin4. Disconnect second jumper on J15 BOOT SEL, and reset the board and you will now (hopefully) 101f9a9fc6fSPeter Griffin have ATF, booting u-boot from eMMC. On 'new' boards I've had to do the 102f9a9fc6fSPeter Griffin flashing twice in the past to avoid an ATF error. 103f9a9fc6fSPeter Griffin 1049c71a21dSPeter Griffin Note: To get USB host working, also disconnect the USB OTG cable used for flashing. Otherwise you 1059c71a21dSPeter Griffin will get 'dwc_otg_core_host_init: Timeout!' errors. 1069c71a21dSPeter Griffin 107532d5203SPeter GriffinSee working boot trace below (by default trace is now output to UART3 not UART0 on latest 108532d5203SPeter GriffinATF, U-Boot and Kernel sources): - 109f9a9fc6fSPeter Griffin 110f9a9fc6fSPeter Griffindebug EMMC boot: send RST_N . 111f9a9fc6fSPeter Griffindebug EMMC boot: start eMMC boot...... 112f9a9fc6fSPeter Griffinload fastboot1! 1139c71a21dSPeter Griffin 114f9a9fc6fSPeter GriffinSwitch to aarch64 mode. CPU0 executes at 0xf9801000! 1159c71a21dSPeter Griffin 1169c71a21dSPeter GriffinINFO: BL1: 0xf9810000 - 0xf9817000 [size = 28672] 117f9a9fc6fSPeter GriffinNOTICE: Booting Trusted Firmware 1189c71a21dSPeter GriffinNOTICE: BL1: v1.1(debug):e8b7174 1199c71a21dSPeter GriffinNOTICE: BL1: Built : 19:16:44, Sep 8 2015 1209c71a21dSPeter GriffinINFO: BL1: RAM 0xf9810000 - 0xf9817000 1219c71a21dSPeter GriffinNOTICE: syspll frequency:1190494208Hz 122f9a9fc6fSPeter GriffinNOTICE: succeed to init lpddr3 rank0 dram phy 123f9a9fc6fSPeter GriffinINFO: lpddr3_freq_init, set ddrc 533mhz 124f9a9fc6fSPeter GriffinINFO: init ddr3 rank0 125f9a9fc6fSPeter GriffinINFO: ddr3 rank1 init pass 126f9a9fc6fSPeter GriffinINFO: lpddr3_freq_init, set ddrc 800mhz 127f9a9fc6fSPeter GriffinINFO: init ddr3 rank0 128f9a9fc6fSPeter GriffinINFO: ddr3 rank1 init pass 129f9a9fc6fSPeter GriffinINFO: Elpida DDR 1309c71a21dSPeter GriffinINFO: ddr test value:0xa5a55a5a 1319c71a21dSPeter GriffinINFO: Hisilicon HiKey platform is initialized 1329c71a21dSPeter GriffinINFO: Using FIP 1339c71a21dSPeter GriffinINFO: Loading file 'bl2.bin' at address 0xf9818000 1349c71a21dSPeter GriffinINFO: File 'bl2.bin' loaded: 0xf9818000 - 0xf9821100 135f9a9fc6fSPeter GriffinNOTICE: BL1: Booting BL2 1369c71a21dSPeter GriffinINFO: BL1: BL2 address = 0xf9818000 1379c71a21dSPeter GriffinINFO: BL1: BL2 spsr = 0x3c5 138f9a9fc6fSPeter GriffinINFO: [BDID] [fff91c18] midr: 0x410fd033 139f9a9fc6fSPeter GriffinINFO: [BDID] [fff91c1c] board type: 0 140f9a9fc6fSPeter GriffinINFO: [BDID] [fff91c20] board id: 0x2b 141f9a9fc6fSPeter GriffinINFO: init_acpu_dvfs: pmic version 17 142f9a9fc6fSPeter GriffinINFO: init_acpu_dvfs: ACPU_CHIP_MAX_FREQ=0x186a00. 143f9a9fc6fSPeter GriffinINFO: acpu_dvfs_volt_init: success! 144f9a9fc6fSPeter GriffinINFO: acpu_dvfs_set_freq: support freq num is 5 145f9a9fc6fSPeter GriffinINFO: acpu_dvfs_set_freq: start prof is 0x4 146f9a9fc6fSPeter GriffinINFO: acpu_dvfs_set_freq: magic is 0x5a5ac5c5 147f9a9fc6fSPeter GriffinINFO: acpu_dvfs_set_freq: voltage: 1489c71a21dSPeter GriffinINFO: - 0: 0x49 1499c71a21dSPeter GriffinINFO: - 1: 0x49 1509c71a21dSPeter GriffinINFO: - 2: 0x50 1519c71a21dSPeter GriffinINFO: - 3: 0x60 1529c71a21dSPeter GriffinINFO: - 4: 0x78 1539c71a21dSPeter GriffinNOTICE: acpu_dvfs_set_freq: set acpu freq success!NOTICE: BL2: v1.1(debug):e8b7174 1549c71a21dSPeter GriffinNOTICE: BL2: Built : 19:16:46, Sep 8 2015 155f9a9fc6fSPeter GriffinINFO: BL2: Loading BL3-0 156f9a9fc6fSPeter GriffinINFO: Using FIP 1579c71a21dSPeter GriffinINFO: Loading file 'bl30.bin' at address 0x1000000 1589c71a21dSPeter GriffinINFO: Skip reserving memory: 0x1000000 - 0x1023270 1599c71a21dSPeter GriffinINFO: File 'bl30.bin' loaded: 0x1000000 - 0x1023270 1609c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: [1000000] 3a334d43 34313032 2f38302f 30203133 1619c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: [10000c8] 0 0 b 0 1629c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: [1000190] 17 0 0 0 1639c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: [1023260] 0 0 0 0 1649c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 0: 1659c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x1000200 1669c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0xf6000000 1679c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 512 1689c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x1000200] 0x7600 0x201 0x1eae1 0x1ea71 1699c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0xf6000000] 0x7600 0x201 0x1eae1 0x1ea71 1709c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 1: 1719c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x1000400 1729c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0xf6000200 1739c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 27828 1749c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x1000400] 0xbf00bf00 0x4815b672 0x48154780 0x60014915 1759c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0xf6000200] 0xbf00bf00 0x4815b672 0x48154780 0x60014915 1769c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 2: 1779c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x10070b4 1789c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0xf6007200 1799c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 1024 1809c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x10070b4] 0x55 0x0 0x0 0x0 1819c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0xf6007200] 0x55 0x0 0x0 0x0 1829c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 3: 1839c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x10074b4 1849c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0xfff8e000 1859c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 12704 1869c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x10074b4] 0x55 0x0 0x0 0x0 1879c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0xfff8e000] 0x55 0x0 0x0 0x0 1889c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 4: 1899c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x100a654 1909c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0x5e00000 1919c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 82912 1929c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x100a654] 0x4ff0e92d 0x2cc5f645 0x2600b0ab 0x2c7cf6c0 1939c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0x5e00000] 0x4ff0e92d 0x2cc5f645 0x2600b0ab 0x2c7cf6c0 1949c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 5: 1959c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x101ea34 1969c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0x5e143e0 1979c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 12816 1989c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x101ea34] 0x33323130 0x37363534 0x42413938 0x46454443 1999c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0x5e143e0] 0x33323130 0x37363534 0x42413938 0x46454443 2009c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 6: 2019c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x1021c44 2029c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0x5e1c1d0 2039c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 3060 2049c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x1021c44] 0x0 0x0 0x0 0x0 2059c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0x5e1c1d0] 0x0 0x0 0x0 0x0 2069c71a21dSPeter GriffinINFO: hisi_mcu_load_image: mcu sections 7: 2079c71a21dSPeter GriffinINFO: hisi_mcu_load_image: src = 0x1022838 2089c71a21dSPeter GriffinINFO: hisi_mcu_load_image: dst = 0x5e1cdc4 2099c71a21dSPeter GriffinINFO: hisi_mcu_load_image: size = 2616 2109c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [SRC 0x1022838] 0xf80000a0 0x0 0xf80000ac 0x0 2119c71a21dSPeter GriffinINFO: hisi_mcu_load_image: [DST 0x5e1cdc4] 0xf80000a0 0x0 0xf80000ac 0x0 2129c71a21dSPeter GriffinINFO: hisi_mcu_start_run: AO_SC_SYS_CTRL2=0 2139c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: mcu pc is 42933301 2149c71a21dSPeter GriffinINFO: bl2_plat_handle_bl30: AO_SC_PERIPH_CLKSTAT4 is 39018f09 215f9a9fc6fSPeter GriffinINFO: BL2: TrustZone: protecting 16777216 bytes of memory at 0x3f000000 216f9a9fc6fSPeter GriffinINFO: BL2: Loading BL3-1 217f9a9fc6fSPeter GriffinINFO: Using FIP 218f9a9fc6fSPeter GriffinINFO: Loading file 'bl31.bin' at address 0xf9858000 2199c71a21dSPeter GriffinINFO: File 'bl31.bin' loaded: 0xf9858000 - 0xf9861010 220f9a9fc6fSPeter GriffinINFO: BL2: Loading BL3-2 221f9a9fc6fSPeter GriffinINFO: Using FIP 222f9a9fc6fSPeter GriffinWARNING: Failed to access image 'bl32.bin' (-1) 223f9a9fc6fSPeter GriffinWARNING: Failed to load BL3-2 (-1) 224f9a9fc6fSPeter GriffinINFO: BL2: Loading BL3-3 225f9a9fc6fSPeter GriffinINFO: Using FIP 226f9a9fc6fSPeter GriffinINFO: Loading file 'bl33.bin' at address 0x35000000 2279c71a21dSPeter GriffinINFO: File 'bl33.bin' loaded: 0x35000000 - 0x3504c468 228f9a9fc6fSPeter GriffinNOTICE: BL1: Booting BL3-1 2299c71a21dSPeter GriffinINFO: BL1: BL3-1 address = 0xf9858000 2309c71a21dSPeter GriffinINFO: BL1: BL3-1 spsr = 0x3cd 2319c71a21dSPeter GriffinINFO: BL1: BL3-1 params address = 0xf9821920 2329c71a21dSPeter GriffinINFO: BL1: BL3-1 plat params address = 0x0 2339c71a21dSPeter GriffinNOTICE: BL3-1: v1.1(debug):e8b7174 2349c71a21dSPeter GriffinNOTICE: BL3-1: Built : 19:16:49, Sep 8 2015 235f9a9fc6fSPeter GriffinINFO: BL3-1: Initializing runtime services 236f9a9fc6fSPeter GriffinINFO: BL3-1: Preparing for EL3 exit to normal world 237f9a9fc6fSPeter GriffinINFO: BL3-1: Next image address = 0x35000000 238f9a9fc6fSPeter GriffinINFO: BL3-1: Next image spsr = 0x3c9 239f9a9fc6fSPeter Griffin 2409c71a21dSPeter GriffinU-Boot 2015.10-rc2 (Sep 08 2015 - 20:29:33 +0100)hikey 241f9a9fc6fSPeter Griffin 242f9a9fc6fSPeter GriffinDRAM: 1008 MiB 2439c71a21dSPeter GriffinHI6553 PMIC init 2449c71a21dSPeter GriffinMMC: config_sd_carddetect: SD card not present 245f9a9fc6fSPeter GriffinHiKey DWMMC: 0, HiKey DWMMC: 1 2469c71a21dSPeter GriffinCard did not respond to voltage select! 2479c71a21dSPeter Griffin** Bad device mmc 1 ** 2489c71a21dSPeter GriffinUsing default environment 2499c71a21dSPeter Griffin 250f9a9fc6fSPeter GriffinIn: serial 251f9a9fc6fSPeter GriffinOut: serial 252f9a9fc6fSPeter GriffinErr: serial 253f9a9fc6fSPeter GriffinNet: Net Initialization Skipped 254f9a9fc6fSPeter GriffinNo ethernet found. 255f9a9fc6fSPeter GriffinHit any key to stop autoboot: 0 2569c71a21dSPeter Griffinstarting USB... 2579c71a21dSPeter GriffinUSB0: Core Release: 3.00a 2589c71a21dSPeter Griffinscanning bus 0 for devices... 2 USB Device(s) found 2599c71a21dSPeter Griffin scanning usb for storage devices... 0 Storage Device(s) found 2609c71a21dSPeter Griffin scanning usb for ethernet devices... 0 Ethernet Device(s) found 261