xref: /openbmc/u-boot/board/hisilicon/hikey/README (revision a81f663ff77f2e9c5938e9f1514807b8f96c93cd)
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: -
13*a81f663fSManivannan Sadhasivamhttps://github.com/96boards/documentation/blob/master/consumer/hikey/hikey620/hardware-docs/HiKey_schematics_LeMaker_version_Rev_A1.pdf
14f9a9fc6fSPeter Griffin
15*a81f663fSManivannan SadhasivamThe SoC datasheet can be found here: -
16*a81f663fSManivannan Sadhasivamhttps://github.com/96boards/documentation/blob/master/consumer/hikey/hikey620/hardware-docs/Hi6220V100_Multi-Mode_Application_Processor_Function_Description.pdf
17f9a9fc6fSPeter Griffin
18f9a9fc6fSPeter GriffinCurrently the u-boot port supports: -
19f9a9fc6fSPeter Griffin* USB
20f9a9fc6fSPeter Griffin* eMMC
21f9a9fc6fSPeter Griffin* SD card
22f9a9fc6fSPeter Griffin* GPIO
23f9a9fc6fSPeter Griffin
24532d5203SPeter GriffinThe HiKey U-Boot port has been tested with l-loader, booting ATF, which then boots
25532d5203SPeter GriffinU-Boot as the bl33.bin executable.
26532d5203SPeter Griffin
27532d5203SPeter GriffinCompile from source
28532d5203SPeter Griffin===================
29532d5203SPeter Griffin
30532d5203SPeter GriffinFirst get all the sources
31532d5203SPeter Griffin
32532d5203SPeter Griffin  > mkdir -p ~/hikey/src ~/hikey/bin
33532d5203SPeter Griffin  > cd ~/hikey/src
34*a81f663fSManivannan Sadhasivam  > git clone https://github.com/96boards-hikey/edk2 -b testing/hikey960_v2.5
35*a81f663fSManivannan Sadhasivam  > git clone https://github.com/ARM-software/arm-trusted-firmware
36*a81f663fSManivannan Sadhasivam  > git clone https://github.com/96boards-hikey/l-loader -b testing/hikey960_v1.2
37*a81f663fSManivannan Sadhasivam  > git clone https://github.com/96boards-hikey/OpenPlatformPkg -b testing/hikey960_v1.3.4
38*a81f663fSManivannan Sadhasivam  > git clone https://github.com/96boards-hikey/atf-fastboot
39*a81f663fSManivannan Sadhasivam  > wget https://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey/release/hisi-idt.py
40532d5203SPeter Griffin
41532d5203SPeter GriffinGet the BL30 mcuimage.bin binary. It is shipped as part of the UEFI source.
42*a81f663fSManivannan SadhasivamThe latest version can be obtained from the OpenPlatformPkg repo.
43532d5203SPeter Griffin
44*a81f663fSManivannan Sadhasivam  > cp OpenPlatformPkg/Platforms/Hisilicon/HiKey/Binary/mcuimage.bin ~/hikey/bin/
45532d5203SPeter Griffin
46*a81f663fSManivannan SadhasivamGet nvme.img binary
47*a81f663fSManivannan Sadhasivam  > wget -P ~/hikey/bin https://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey/release/nvme.img
48532d5203SPeter Griffin
49532d5203SPeter GriffinCompile U-Boot
50f9a9fc6fSPeter Griffin==============
51f9a9fc6fSPeter Griffin
52532d5203SPeter Griffin  > cd ~/hikey/src/u-boot
539c71a21dSPeter Griffin  > make CROSS_COMPILE=aarch64-linux-gnu- hikey_config
549c71a21dSPeter Griffin  > make CROSS_COMPILE=aarch64-linux-gnu-
55532d5203SPeter Griffin  > cp u-boot.bin ~/hikey/bin
56f9a9fc6fSPeter Griffin
57532d5203SPeter GriffinCompile ARM Trusted Firmware (ATF)
58532d5203SPeter Griffin==================================
59f9a9fc6fSPeter Griffin
60a83afb6bSMichal Simek  > cd ~/hikey/src/arm-trusted-firmware
61532d5203SPeter Griffin  > make CROSS_COMPILE=aarch64-linux-gnu- all fip \
62*a81f663fSManivannan Sadhasivam    SCP_BL2=~/hikey/bin/mcuimage.bin \
63532d5203SPeter Griffin    BL33=~/hikey/bin/u-boot.bin DEBUG=1 PLAT=hikey
64f9a9fc6fSPeter Griffin
65*a81f663fSManivannan SadhasivamCopy the resulting FIP binary
66532d5203SPeter Griffin  > cp build/hikey/debug/fip.bin ~/hikey/bin
67f9a9fc6fSPeter Griffin
68*a81f663fSManivannan SadhasivamCompile ATF Fastboot
69*a81f663fSManivannan Sadhasivam====================
70*a81f663fSManivannan Sadhasivam
71*a81f663fSManivannan Sadhasivam  > cd ~/hikey/src/atf-fastboot
72*a81f663fSManivannan Sadhasivam  > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=hikey DEBUG=1
73*a81f663fSManivannan Sadhasivam
74532d5203SPeter GriffinCompile l-loader
75*a81f663fSManivannan Sadhasivam================
76a83afb6bSMichal Simek  > cd ~/hikey/src/l-loader
77*a81f663fSManivannan Sadhasivam  > ln -sf ~/hikey/src/arm-trusted-firmware/build/hikey/debug/bl1.bin
78*a81f663fSManivannan Sadhasivam  > ln -sf ~/hikey/src/arm-trusted-firmware/build/hikey/debug/bl2.bin
79*a81f663fSManivannan Sadhasivam  > ln -sf ~/hikey/src/atf-fastboot/build/hikey/debug/bl1.bin fastboot.bin
80*a81f663fSManivannan Sadhasivam  > make hikey PTABLE_LST=aosp-8g
81*a81f663fSManivannan Sadhasivam
82*a81f663fSManivannan SadhasivamCopy the resulting binaries
83532d5203SPeter Griffin  > cp *.img ~/hikey/bin
84a83afb6bSMichal Simek  > cp l-loader.bin ~/hikey/bin
85*a81f663fSManivannan Sadhasivam  > cp recovery.bin ~/hikey/bin
86f9a9fc6fSPeter Griffin
87f9a9fc6fSPeter GriffinThese instructions are adapted from
88*a81f663fSManivannan Sadhasivamhttps://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/hikey.rst
89f9a9fc6fSPeter Griffin
90f9a9fc6fSPeter GriffinFLASHING
91f9a9fc6fSPeter Griffin========
92f9a9fc6fSPeter Griffin
939c71a21dSPeter Griffin1. Connect the second jumper on J15 BOOT SEL, to go into recovery mode and flash l-loader.bin with
94*a81f663fSManivannan Sadhasivamthe hisi-idt.py utility. Then connect a USB A to B mini cable from your PC to the USB OTG port of HiKey and execute the below command.
95f9a9fc6fSPeter Griffin
969c71a21dSPeter GriffinThe command below assumes HiKey enumerated as the first USB serial port
97f9a9fc6fSPeter Griffin
98*a81f663fSManivannan Sadhasivam  > sudo python ~/hikey/src/hisi-idt.py -d /dev/ttyUSB0 --img1 ~/hikey/bin/recovery.bin
99*a81f663fSManivannan Sadhasivam
100*a81f663fSManivannan Sadhasivam2. Once LED 0 comes on solid, HiKey board should be detected as a fastboot device.
1019c71a21dSPeter Griffin
1029c71a21dSPeter Griffin  > sudo fastboot devices
1039c71a21dSPeter Griffin
1049c71a21dSPeter Griffin0123456789ABCDEF	fastboot
105f9a9fc6fSPeter Griffin
106f9a9fc6fSPeter Griffin3. Flash the images
107532d5203SPeter Griffin
108*a81f663fSManivannan Sadhasivam  > sudo fastboot flash ptable ~/hikey/bin/prm_ptable.img
109*a81f663fSManivannan Sadhasivam  > sudo fastboot flash loader ~/hikey/bin/l-loader.bin
110532d5203SPeter Griffin  > sudo fastboot flash fastboot ~/hikey/bin/fip.bin
111532d5203SPeter Griffin  > sudo fastboot flash nvme ~/hikey/bin/nvme.img
112f9a9fc6fSPeter Griffin
1139c71a21dSPeter Griffin4. Disconnect second jumper on J15 BOOT SEL, and reset the board and you will now (hopefully)
114*a81f663fSManivannan Sadhasivam   have ATF, booting u-boot from eMMC.
115f9a9fc6fSPeter Griffin
1169c71a21dSPeter Griffin   Note: To get USB host working, also disconnect the USB OTG cable used for flashing. Otherwise you
1179c71a21dSPeter Griffin   will get 'dwc_otg_core_host_init: Timeout!' errors.
1189c71a21dSPeter Griffin
119*a81f663fSManivannan SadhasivamSee working boot trace below on UART3 available at Low Speed Expansion header: -
120f9a9fc6fSPeter Griffin
121*a81f663fSManivannan SadhasivamNOTICE:  BL2: v1.5(debug):v1.5-694-g6d4f6aea
122*a81f663fSManivannan SadhasivamNOTICE:  BL2: Built : 09:21:42, Aug 29 2018
123*a81f663fSManivannan SadhasivamINFO:    BL2: Doing platform setup
124f9a9fc6fSPeter GriffinINFO:    ddr3 rank1 init pass
125*a81f663fSManivannan SadhasivamINFO:    succeed to set ddrc 150mhz
126f9a9fc6fSPeter GriffinINFO:    ddr3 rank1 init pass
127*a81f663fSManivannan SadhasivamINFO:    succeed to set ddrc 266mhz
128*a81f663fSManivannan SadhasivamINFO:    ddr3 rank1 init pass
129*a81f663fSManivannan SadhasivamINFO:    succeed to set ddrc 400mhz
130*a81f663fSManivannan SadhasivamINFO:    ddr3 rank1 init pass
131*a81f663fSManivannan SadhasivamINFO:    succeed to set ddrc 533mhz
132*a81f663fSManivannan SadhasivamINFO:    ddr3 rank1 init pass
133*a81f663fSManivannan SadhasivamINFO:    succeed to set ddrc 800mhz
134*a81f663fSManivannan SadhasivamINFO:    Samsung DDR
1359c71a21dSPeter GriffinINFO:    ddr test value:0xa5a55a5a
136*a81f663fSManivannan SadhasivamINFO:    BL2: TrustZone: protecting 16777216 bytes of memory at 0x3f000000
137*a81f663fSManivannan SadhasivamINFO:    BL2: TrustZone: protecting 4194304 bytes of memory at 0x3e800000
138f9a9fc6fSPeter GriffinINFO:    [BDID] [fff91c18] midr: 0x410fd033
139f9a9fc6fSPeter GriffinINFO:    init_acpu_dvfs: pmic version 17
140f9a9fc6fSPeter GriffinINFO:    init_acpu_dvfs: ACPU_CHIP_MAX_FREQ=0x186a00.
141f9a9fc6fSPeter GriffinINFO:    acpu_dvfs_volt_init: success!
142f9a9fc6fSPeter GriffinINFO:    acpu_dvfs_set_freq: support freq num is 5
143f9a9fc6fSPeter GriffinINFO:    acpu_dvfs_set_freq: start prof is 0x4
144f9a9fc6fSPeter GriffinINFO:    acpu_dvfs_set_freq: magic is 0x5a5ac5c5
145f9a9fc6fSPeter GriffinINFO:    acpu_dvfs_set_freq: voltage:
1469c71a21dSPeter GriffinINFO:      - 0: 0x49
1479c71a21dSPeter GriffinINFO:      - 1: 0x49
1489c71a21dSPeter GriffinINFO:      - 2: 0x50
1499c71a21dSPeter GriffinINFO:      - 3: 0x60
1509c71a21dSPeter GriffinINFO:      - 4: 0x78
151*a81f663fSManivannan SadhasivamNOTICE:  acpu_dvfs_set_freq: set acpu freq success!INFO:    BL2: Loading image id 2
152*a81f663fSManivannan SadhasivamINFO:    Loading image id=2 at address 0x1000000
153*a81f663fSManivannan SadhasivamINFO:    Image id=2 loaded: 0x1000000 - 0x1023d00
1549c71a21dSPeter GriffinINFO:    hisi_mcu_load_image: mcu sections 0:
1559c71a21dSPeter GriffinINFO:    hisi_mcu_load_image:  src  = 0x1000200
1569c71a21dSPeter GriffinINFO:    hisi_mcu_load_image:  dst  = 0xf6000000
157*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  size = 31184
158*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [SRC 0x1000200] 0x8000 0x3701 0x7695 0x7689
159*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [DST 0xf6000000] 0x8000 0x3701 0x7695 0x7689
1609c71a21dSPeter GriffinINFO:    hisi_mcu_load_image: mcu sections 1:
161*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  src  = 0x1007bd0
1629c71a21dSPeter GriffinINFO:    hisi_mcu_load_image:  dst  = 0x5e00000
163*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  size = 93828
164*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [SRC 0x1007bd0] 0xf000b510 0x2103fb3d 0xf0004604 0xf003fb57
165*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [DST 0x5e00000] 0xf000b510 0x2103fb3d 0xf0004604 0xf003fb57
166*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image: mcu sections 2:
167*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  src  = 0x101ea54
168*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  dst  = 0x5e16e84
169*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  size = 15428
170*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [SRC 0x101ea54] 0x9 0x1020640 0x10001 0x8f0d180
171*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [DST 0x5e16e84] 0x9 0x1020640 0x10001 0x8f0d180
172*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image: mcu sections 3:
173*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  src  = 0x1022698
174*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  dst  = 0x5e22a10
1759c71a21dSPeter GriffinINFO:    hisi_mcu_load_image:  size = 3060
176*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [SRC 0x1022698] 0x0 0x0 0x0 0x0
177*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [DST 0x5e22a10] 0x0 0x0 0x0 0x0
178*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image: mcu sections 4:
179*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  src  = 0x102328c
180*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  dst  = 0x5e23604
1819c71a21dSPeter GriffinINFO:    hisi_mcu_load_image:  size = 2616
182*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [SRC 0x102328c] 0xf80000a0 0x0 0xf80000ac 0x0
183*a81f663fSManivannan SadhasivamINFO:    hisi_mcu_load_image:  [DST 0x5e23604] 0xf80000a0 0x0 0xf80000ac 0x0
1849c71a21dSPeter GriffinINFO:    hisi_mcu_start_run: AO_SC_SYS_CTRL2=0
185*a81f663fSManivannan SadhasivamINFO:    plat_hikey_bl2_handle_scp_bl2: MCU PC is at 0x42933301
186*a81f663fSManivannan SadhasivamINFO:    plat_hikey_bl2_handle_scp_bl2: AO_SC_PERIPH_CLKSTAT4 is 0x3b018f09
187*a81f663fSManivannan SadhasivamWARNING: BL2: Platform setup already done!!
188*a81f663fSManivannan SadhasivamINFO:    BL2: Loading image id 3
189*a81f663fSManivannan SadhasivamINFO:    Loading image id=3 at address 0xf9858000
190*a81f663fSManivannan SadhasivamINFO:    Image id=3 loaded: 0xf9858000 - 0xf9860058
191*a81f663fSManivannan SadhasivamINFO:    BL2: Loading image id 5
192*a81f663fSManivannan SadhasivamINFO:    Loading image id=5 at address 0x35000000
193*a81f663fSManivannan SadhasivamINFO:    Image id=5 loaded: 0x35000000 - 0x35061cd2
194*a81f663fSManivannan SadhasivamNOTICE:  BL2: Booting BL31
195*a81f663fSManivannan SadhasivamINFO:    Entry point address = 0xf9858000
196*a81f663fSManivannan SadhasivamINFO:    SPSR = 0x3cd
197*a81f663fSManivannan SadhasivamNOTICE:  BL31: v1.5(debug):v1.5-694-g6d4f6aea
198*a81f663fSManivannan SadhasivamNOTICE:  BL31: Built : 09:21:44, Aug 29 2018
199*a81f663fSManivannan SadhasivamWARNING: Using deprecated integer interrupt array in gicv2_driver_data_t
200*a81f663fSManivannan SadhasivamWARNING: Please migrate to using an interrupt_prop_t array
201*a81f663fSManivannan SadhasivamINFO:    ARM GICv2 driver initialized
202*a81f663fSManivannan SadhasivamINFO:    BL31: Initializing runtime services
203*a81f663fSManivannan SadhasivamINFO:    BL31: cortex_a53: CPU workaround for disable_non_temporal_hint was applied
204*a81f663fSManivannan SadhasivamINFO:    BL31: cortex_a53: CPU workaround for 843419 was applied
205*a81f663fSManivannan SadhasivamINFO:    BL31: cortex_a53: CPU workaround for 855873 was applied
206*a81f663fSManivannan SadhasivamINFO:    BL31: Preparing for EL3 exit to normal world
207*a81f663fSManivannan SadhasivamINFO:    Entry point address = 0x35000000
208*a81f663fSManivannan SadhasivamINFO:    SPSR = 0x3c9
209f9a9fc6fSPeter Griffin
210f9a9fc6fSPeter Griffin
211*a81f663fSManivannan SadhasivamU-Boot 2018.09-rc1 (Aug 22 2018 - 14:55:49 +0530)hikey
212*a81f663fSManivannan Sadhasivam
213*a81f663fSManivannan SadhasivamDRAM:  990 MiB
2149c71a21dSPeter GriffinHI6553 PMIC init
215*a81f663fSManivannan SadhasivamMMC:   config_sd_carddetect: SD card present
216*a81f663fSManivannan SadhasivamHisilicon DWMMC: 0, Hisilicon DWMMC: 1
217*a81f663fSManivannan SadhasivamLoading Environment from FAT... Unable to use mmc 1:1... Failed (-5)
218*a81f663fSManivannan SadhasivamIn:    uart@f7113000
219*a81f663fSManivannan SadhasivamOut:   uart@f7113000
220*a81f663fSManivannan SadhasivamErr:   uart@f7113000
221f9a9fc6fSPeter GriffinNet:   Net Initialization Skipped
222f9a9fc6fSPeter GriffinNo ethernet found.
223f9a9fc6fSPeter GriffinHit any key to stop autoboot:  0
2249c71a21dSPeter Griffinstarting USB...
225*a81f663fSManivannan SadhasivamUSB0:   scanning bus 0 for devices... 2 USB Device(s) found
2269c71a21dSPeter Griffin       scanning usb for storage devices... 0 Storage Device(s) found
2279c71a21dSPeter Griffin       scanning usb for ethernet devices... 0 Ethernet Device(s) found
228