board: stm32mp1: adapt MTD partition for BOOT from NOR or NAND
[oweals/u-boot.git] / board / hisilicon / hikey960 / README
1 Introduction
2 ============
3
4 HiKey960 is one of the 96Boards Consumer Edition board from HiSilicon.
5 The board/SoC has: -
6 * HiSilicon Kirin960 (HI3660) SoC with 4xCortex-A73 and 4xCortex-A53
7 * ARM Mali G71 MP8 GPU
8 * 3GB LPDDR4 SDRAM
9 * 32GB UFS Flash Storage
10 * microSD
11 * 802.11a/b/g/n WiFi, Bluetooth
12
13 More information about this board can be found in 96Boards website:
14 https://www.96boards.org/product/hikey960/
15
16 Currently the u-boot port supports: -
17 * SD card
18
19 Compile from source
20 ===================
21
22 First get all the sources
23
24   > mkdir -p ~/hikey960/src ~/hikey960/bin
25   > cd ~/hikey960/src
26   > git clone https://github.com/ARM-software/arm-trusted-firmware
27   > git clone https://github.com/96boards-hikey/OpenPlatformPkg -b testing/hikey960_v1.3.4
28   > git clone https://github.com/96boards-hikey/l-loader -b testing/hikey960_v1.2
29   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/config
30   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/hisi-sec_usb_xloader.img
31   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/hisi-sec_uce_boot.img
32   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/sec_xloader.img
33   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/recovery.bin
34   > wget http://snapshots.linaro.org/96boards/reference-platform/components/uefi-staging/latest/hikey960/release/hikey_idt
35
36 Get the SCP_BL2 lpm3.img binary. It is shipped as part of the UEFI source.
37 The latest version can be obtained from the OpenPlatformPkg repo.
38
39   > cp OpenPlatformPkg/Platforms/Hisilicon/HiKey960/Binary/lpm3.img ~/hikey960/bin/
40
41 Compile U-Boot
42 ==============
43
44   > cd ~/hikey960/src/u-boot
45   > make CROSS_COMPILE=aarch64-linux-gnu- hikey960_defconfig
46   > make CROSS_COMPILE=aarch64-linux-gnu-
47   > cp u-boot.bin ~/hikey960/bin/
48
49 Compile ARM Trusted Firmware (ATF)
50 ==================================
51
52   > cd ~/hikey960/src/arm-trusted-firmware
53   > make CROSS_COMPILE=aarch64-linux-gnu- all fip \
54     SCP_BL2=~/hikey960/bin/lpm3.img \
55     BL33=~/hikey960/bin/u-boot.bin DEBUG=1 PLAT=hikey960
56
57 Copy the resulting FIP binary
58   > cp build/hikey960/debug/fip.bin ~/hikey960/bin
59
60 Compile l-loader
61 ================
62   > cd ~/hikey960/src/l-loader
63   > ln -sf ~/hikey960/src/arm-trusted-firmware/build/hikey960/debug/bl1.bin
64   > ln -sf ~/hikey960/src/arm-trusted-firmware/build/hikey960/debug/bl2.bin
65   > ln -sf ~/hikey960/src/arm-trusted-firmware/build/hikey960/debug/fip.bin
66   > ln -sf ~/hikey960/bin/u-boot.bin
67   > make hikey960 PTABLE_LST=linux-32g NS_BL1U=u-boot.bin
68
69 Copy the resulting binaries
70   > cp *.img ~/hikey960/bin
71   > cp l-loader.bin ~/hikey960/bin
72
73 These instructions are adapted from
74 https://github.com/ARM-software/arm-trusted-firmware/blob/master/docs/plat/hikey960.rst
75
76 Setup Console
77 =============
78
79 Install ser2net. Use telnet as the console since UEFI in recovery mode
80 output window fails to display in minicom.
81
82   > sudo apt-get install ser2net
83
84 Configure ser2net
85
86   > sudo vi /etc/ser2net.conf
87
88 Append one line for serial-over-USB in #ser2net.conf
89
90   > 2004:telnet:0:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT banner
91
92 Start ser2net
93
94   > sudo killall ser2net
95   > sudo ser2net -u
96
97 Open the console.
98
99   > telnet localhost 2004
100
101 And you could open the console remotely, too.
102
103 Flashing
104 ========
105
106 1. Boot Hikey960 into recovery mode as per the below document:
107 https://github.com/96boards/documentation/blob/master/consumer/hikey/hikey960/installation/board-recovery.md
108
109 Once Hikey960 is in recovery mode, flash the recovery binary:
110
111   > cd ~/hikey960/src
112   > chmod +x ./hikey_idt
113   > sudo ./hikey_idt -c config -p /dev/ttyUSB1
114
115 Now move to the Hikey960 console and press `f` during UEFI boot. This
116 will allow the board to boot into fastboot mode. Once the board is in
117 fastboot mode, you should see the ID of the HiKey960 board using the
118 following command
119
120   > sudo fastboot devices
121
122 1ED3822A018E3372        fastboot
123
124 3. Flash the images
125
126 Now, the images can be flashed using fastboot:
127
128   > sudo fastboot flash ptable ~/hikey960/bin/prm_ptable.img
129   > sudo fastboot flash xloader ~/hikey960/bin/sec_xloader.img
130   > sudo fastboot flash fastboot ~/hikey960/bin/l-loader.bin
131   > sudo fastboot flash fip ~/hikey960/bin/fip.bin
132
133 4. Set the "Boot Mode" switch to OFF position for normal boot mode.
134 Then power on HiKey960
135
136 Observe the console traces using UART6 on the Low Speed Expansion header:
137
138 NOTICE:  BL2: v2.1(debug):v2.1-531-g3ee48f40
139 NOTICE:  BL2: Built : 18:15:58, Aug  2 2019
140 INFO:    BL2: Doing platform setup
141 INFO:    UFS LUN0 contains 1024 blocks with 4096-byte size
142 INFO:    UFS LUN1 contains 1024 blocks with 4096-byte size
143 INFO:    UFS LUN2 contains 2048 blocks with 4096-byte size
144 INFO:    UFS LUN3 contains 7805952 blocks with 4096-byte size
145 INFO:    ufs: change power mode success
146 INFO:    BL2: Loading image id 2
147 INFO:    Loading image id=2 at address 0x89c80000
148 INFO:    Image id=2 loaded: 0x89c80000 - 0x89cb5088
149 INFO:    BL2: Initiating SCP_BL2 transfer to SCP
150 INFO:    BL2: SCP_BL2: 0x89c80000@0x35088
151 INFO:    BL2: SCP_BL2 HEAD:
152 INFO:    BL2: SCP_BL2 0x7000 0x179 0x159 0x149
153 INFO:    BL2: SCP_BL2 0x189 0x18b 0x18d 0x0
154 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x18f
155 INFO:    BL2: SCP_BL2 0x191 0x0 0x193 0x195
156 INFO:    BL2: SCP_BL2 0x18fd 0x18fd 0x18fd 0x18fd
157 INFO:    BL2: SCP_BL2 0x18fd 0x18fd 0x18fd 0x18fd
158 INFO:    BL2: SCP_BL2 0x18fd 0x18fd 0x18fd 0x18fd
159 INFO:    BL2: SCP_BL2 0x4d454355 0x43494741 0x424d554e 0x21215245
160 INFO:    BL2: SCP_BL2 0x4a054904 0x42912000 0xf841bfbc 0xe7fa0b04
161 INFO:    BL2: SCP_BL2 0xb88cf000 0x3b18 0x3d1c 0x6809493e
162 INFO:    BL2: SCP_BL2 0x4613680a 0x201f102 0xf0002a04 0x600a804c
163 INFO:    BL2: SCP_BL2 0x204f04f 0xf203fb02 0xf102440a 0x60100204
164 INFO:    BL2: SCP_BL2 0x160f04f 0xf103fb01 0x68004834 0x61044408
165 INFO:    BL2: SCP_BL2 0x61866145 0xf8c061c7 0xf8c08020 0xf8c09024
166 INFO:    BL2: SCP_BL2 0xf8c0a028 0xf3efb02c 0xf3ef8208 0x68118309
167 INFO:    BL2: SCP_BL2 0xf1026401 0xf0110204 0xbf070f04 0x46113220
168 INFO:    BL2: SCP_BL2 TAIL:
169 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
170 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
171 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
172 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
173 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
174 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
175 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
176 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
177 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
178 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
179 INFO:    BL2: SCP_BL2 0x0 0x19cad151 0x19b80040 0x0
180 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
181 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
182 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
183 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
184 INFO:    BL2: SCP_BL2 0x0 0x0 0x0 0x0
185 INFO:    BL2: SCP_BL2 transferred to SCP
186 INFO:    start fw loading
187 INFO:    fw load success
188 WARNING: BL2: Platform setup already done!!
189 INFO:    BL2: Loading image id 3
190 INFO:    Loading image id=3 at address 0x1ac58000
191 INFO:    Image id=3 loaded: 0x1ac58000 - 0x1ac63024
192 INFO:    BL2: Loading image id 5
193 INFO:    Loading image id=5 at address 0x1ac98000
194 INFO:    Image id=5 loaded: 0x1ac98000 - 0x1ad0819c
195 NOTICE:  BL2: Booting BL31
196 INFO:    Entry point address = 0x1ac58000
197 INFO:    SPSR = 0x3cd
198 NOTICE:  BL31: v2.1(debug):v2.1-531-g3ee48f40
199 NOTICE:  BL31: Built : 18:16:01, Aug  2 2019
200 INFO:    ARM GICv2 driver initialized
201 INFO:    BL31: Initializing runtime services
202 INFO:    BL31: cortex_a53: CPU workaround for 855873 was applied
203 INFO:    plat_setup_psci_ops: sec_entrypoint=0x1ac580fc
204 INFO:    BL31: Preparing for EL3 exit to normal world
205 INFO:    Entry point address = 0x1ac98000
206 INFO:    SPSR = 0x3c9
207
208
209 U-Boot 2019.07-00628-g286f05a6fc-dirty (Aug 02 2019 - 17:14:05 +0530)
210 Hikey960
211
212 DRAM:  3 GiB
213 PSCI:  v1.1
214 MMC:   dwmmc1@ff37f000: 0
215 Loading Environment from EXT4... ** File not found /uboot.env **
216
217 ** Unable to read "/uboot.env" from mmc0:2 **
218 In:    serial@fff32000
219 Out:   serial@fff32000
220 Err:   serial@fff32000
221 Net:   Net Initialization Skipped
222 No ethernet found.
223 Hit any key to stop autoboot:  0
224 switch to partitions #0, OK
225 mmc0 is current device
226 Scanning mmc 0:1...
227 Found /extlinux/extlinux.conf
228 Retrieving file: /extlinux/extlinux.conf
229 201 bytes read in 12 ms (15.6 KiB/s)
230 1:      hikey960-kernel
231 Retrieving file: /Image
232 24689152 bytes read in 4377 ms (5.4 MiB/s)
233 append: earlycon=pl011,mmio32,0xfff32000 console=ttyAMA6,115200 rw root=/dev/mmcblk0p2 rot
234 Retrieving file: /hi3660-hikey960.dtb
235 35047 bytes read in 14 ms (2.4 MiB/s)
236 ## Flattened Device Tree blob at 10000000
237    Booting using the fdt blob at 0x10000000
238    Using Device Tree in place at 0000000010000000, end 000000001000b8e6
239
240 Starting kernel ...
241
242 [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
243 [    0.000000] Linux version 5.2.0-03138-gd75da80dce39 (mani@Mani-XPS-13-9360) (gcc versi9
244 [    0.000000] Machine model: HiKey960
245 [    0.000000] earlycon: pl11 at MMIO32 0x00000000fff32000 (options '')
246 [    0.000000] printk: bootconsole [pl11] enabled
247 [    0.000000] efi: Getting EFI parameters from FDT: