mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-21 01:18:52 +09:00
![Peter Griffin](/assets/img/avatar_default.png)
This patch updates and simplifies the hikey README. The old instructions were hard to follow, and convoluted. This patch also updates the link to the mcuimage.bin which was outdated. Using an outdated mcuimage.bin results in the additional a53 cores not coming online when the kernel issues PSCI requests to arm trusted firmware (ATF). Signed-off-by: Peter Griffin <peter.griffin@linaro.org> Reviewed-by: Tom Rini <trini@konsulko.com>
261 lines
9.9 KiB
Plaintext
261 lines
9.9 KiB
Plaintext
Introduction
|
|
============
|
|
|
|
HiKey is the first certified 96Boards Consumer Edition board. The board/SoC has: -
|
|
* HiSilicon Kirin 6220 eight-core ARM Cortex-A53 64-bit SoC running at 1.2GHz.
|
|
* ARM Mali 450-MP4 GPU
|
|
* 1GB 800MHz LPDDR3 DRAM
|
|
* 4GB eMMC Flash Storage
|
|
* microSD
|
|
* 802.11a/b/g/n WiFi, Bluetooth
|
|
|
|
The HiKey schematic can be found here: -
|
|
https://github.com/96boards/documentation/blob/master/hikey/96Boards-Hikey-Rev-A1.pdf
|
|
|
|
A SoC datasheet can be found here: -
|
|
https://github.com/96boards/documentation/blob/master/hikey/
|
|
Hi6220V100_Multi-Mode_Application_Processor_Function_Description.pdf
|
|
|
|
Currently the u-boot port supports: -
|
|
* USB
|
|
* eMMC
|
|
* SD card
|
|
* GPIO
|
|
|
|
The HiKey U-Boot port has been tested with l-loader, booting ATF, which then boots
|
|
U-Boot as the bl33.bin executable.
|
|
|
|
Compile from source
|
|
===================
|
|
|
|
First get all the sources
|
|
|
|
> mkdir -p ~/hikey/src ~/hikey/bin
|
|
> cd ~/hikey/src
|
|
> git clone https://github.com/96boards/edk2.git
|
|
> git clone https://github.com/96boards/arm-trusted-firmware.git
|
|
> git clone https://github.com/96boards/l-loader.git
|
|
> git clone https://github.com/96boards/burn-boot.git
|
|
|
|
Get the BL30 mcuimage.bin binary. It is shipped as part of the UEFI source.
|
|
The latest version can be obtained from the edk2 repo.
|
|
|
|
> cp edk2/HisiPkg/HiKeyPkg/NonFree/mcuimage.bin ~/hikey/bin/
|
|
|
|
Get nvme.img binary (check this link is still the latest)
|
|
> wget -P ~/hikey/bin https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/nvme.img
|
|
|
|
Compile U-Boot
|
|
==============
|
|
|
|
> cd ~/hikey/src/u-boot
|
|
> make CROSS_COMPILE=aarch64-linux-gnu- hikey_config
|
|
> make CROSS_COMPILE=aarch64-linux-gnu-
|
|
> cp u-boot.bin ~/hikey/bin
|
|
|
|
Compile ARM Trusted Firmware (ATF)
|
|
==================================
|
|
|
|
> cd ~/hikey/src/atf
|
|
> make CROSS_COMPILE=aarch64-linux-gnu- all fip \
|
|
BL30=~/hikey/bin/mcuimage.bin \
|
|
BL33=~/hikey/bin/u-boot.bin DEBUG=1 PLAT=hikey
|
|
|
|
Copy resulting binaries
|
|
> cp build/hikey/debug/bl1.bin ~/hikey/bin
|
|
> cp build/hikey/debug/fip.bin ~/hikey/bin
|
|
|
|
Compile l-loader
|
|
===============
|
|
> cd ~/hikey/l-loader
|
|
> make BL1=~/hikey/bin/bl1.bin all
|
|
> cp *.img ~/hikey/bin
|
|
> cp l-loader.bin ~/hikey.bin
|
|
|
|
These instructions are adapted from
|
|
https://github.com/96boards/documentation/wiki/HiKeyUEFI
|
|
|
|
FLASHING
|
|
========
|
|
|
|
1. Connect the second jumper on J15 BOOT SEL, to go into recovery mode and flash l-loader.bin with
|
|
the hisi-idt.py utility.
|
|
|
|
The command below assumes HiKey enumerated as the first USB serial port
|
|
> sudo ~/hikey/burn_boot/hisi-idt.py -d /dev/ttyUSB0 --img1=~/hikey/bin/l-loader.bin
|
|
|
|
2. Once LED 0 comes on solid, HiKey board should be detected as a fastboot device by plugging a USB A to mini B
|
|
cable from your PC to the USB OTG port of HiKey (on some boards I've found this to be unreliable).
|
|
|
|
> sudo fastboot devices
|
|
|
|
0123456789ABCDEF fastboot
|
|
|
|
3. Flash the images
|
|
|
|
> sudo fastboot flash ptable ~/hikey/bin/ptable.img
|
|
> sudo fastboot flash fastboot ~/hikey/bin/fip.bin
|
|
> sudo fastboot flash nvme ~/hikey/bin/nvme.img
|
|
|
|
4. Disconnect second jumper on J15 BOOT SEL, and reset the board and you will now (hopefully)
|
|
have ATF, booting u-boot from eMMC. On 'new' boards I've had to do the
|
|
flashing twice in the past to avoid an ATF error.
|
|
|
|
Note: To get USB host working, also disconnect the USB OTG cable used for flashing. Otherwise you
|
|
will get 'dwc_otg_core_host_init: Timeout!' errors.
|
|
|
|
See working boot trace below (by default trace is now output to UART3 not UART0 on latest
|
|
ATF, U-Boot and Kernel sources): -
|
|
|
|
debug EMMC boot: send RST_N .
|
|
debug EMMC boot: start eMMC boot......
|
|
load fastboot1!
|
|
|
|
Switch to aarch64 mode. CPU0 executes at 0xf9801000!
|
|
|
|
INFO: BL1: 0xf9810000 - 0xf9817000 [size = 28672]
|
|
NOTICE: Booting Trusted Firmware
|
|
NOTICE: BL1: v1.1(debug):e8b7174
|
|
NOTICE: BL1: Built : 19:16:44, Sep 8 2015
|
|
INFO: BL1: RAM 0xf9810000 - 0xf9817000
|
|
NOTICE: syspll frequency:1190494208Hz
|
|
NOTICE: succeed to init lpddr3 rank0 dram phy
|
|
INFO: lpddr3_freq_init, set ddrc 533mhz
|
|
INFO: init ddr3 rank0
|
|
INFO: ddr3 rank1 init pass
|
|
INFO: lpddr3_freq_init, set ddrc 800mhz
|
|
INFO: init ddr3 rank0
|
|
INFO: ddr3 rank1 init pass
|
|
INFO: Elpida DDR
|
|
INFO: ddr test value:0xa5a55a5a
|
|
INFO: Hisilicon HiKey platform is initialized
|
|
INFO: Using FIP
|
|
INFO: Loading file 'bl2.bin' at address 0xf9818000
|
|
INFO: File 'bl2.bin' loaded: 0xf9818000 - 0xf9821100
|
|
NOTICE: BL1: Booting BL2
|
|
INFO: BL1: BL2 address = 0xf9818000
|
|
INFO: BL1: BL2 spsr = 0x3c5
|
|
INFO: [BDID] [fff91c18] midr: 0x410fd033
|
|
INFO: [BDID] [fff91c1c] board type: 0
|
|
INFO: [BDID] [fff91c20] board id: 0x2b
|
|
INFO: init_acpu_dvfs: pmic version 17
|
|
INFO: init_acpu_dvfs: ACPU_CHIP_MAX_FREQ=0x186a00.
|
|
INFO: acpu_dvfs_volt_init: success!
|
|
INFO: acpu_dvfs_set_freq: support freq num is 5
|
|
INFO: acpu_dvfs_set_freq: start prof is 0x4
|
|
INFO: acpu_dvfs_set_freq: magic is 0x5a5ac5c5
|
|
INFO: acpu_dvfs_set_freq: voltage:
|
|
INFO: - 0: 0x49
|
|
INFO: - 1: 0x49
|
|
INFO: - 2: 0x50
|
|
INFO: - 3: 0x60
|
|
INFO: - 4: 0x78
|
|
NOTICE: acpu_dvfs_set_freq: set acpu freq success!NOTICE: BL2: v1.1(debug):e8b7174
|
|
NOTICE: BL2: Built : 19:16:46, Sep 8 2015
|
|
INFO: BL2: Loading BL3-0
|
|
INFO: Using FIP
|
|
INFO: Loading file 'bl30.bin' at address 0x1000000
|
|
INFO: Skip reserving memory: 0x1000000 - 0x1023270
|
|
INFO: File 'bl30.bin' loaded: 0x1000000 - 0x1023270
|
|
INFO: bl2_plat_handle_bl30: [1000000] 3a334d43 34313032 2f38302f 30203133
|
|
INFO: bl2_plat_handle_bl30: [10000c8] 0 0 b 0
|
|
INFO: bl2_plat_handle_bl30: [1000190] 17 0 0 0
|
|
INFO: bl2_plat_handle_bl30: [1023260] 0 0 0 0
|
|
INFO: hisi_mcu_load_image: mcu sections 0:
|
|
INFO: hisi_mcu_load_image: src = 0x1000200
|
|
INFO: hisi_mcu_load_image: dst = 0xf6000000
|
|
INFO: hisi_mcu_load_image: size = 512
|
|
INFO: hisi_mcu_load_image: [SRC 0x1000200] 0x7600 0x201 0x1eae1 0x1ea71
|
|
INFO: hisi_mcu_load_image: [DST 0xf6000000] 0x7600 0x201 0x1eae1 0x1ea71
|
|
INFO: hisi_mcu_load_image: mcu sections 1:
|
|
INFO: hisi_mcu_load_image: src = 0x1000400
|
|
INFO: hisi_mcu_load_image: dst = 0xf6000200
|
|
INFO: hisi_mcu_load_image: size = 27828
|
|
INFO: hisi_mcu_load_image: [SRC 0x1000400] 0xbf00bf00 0x4815b672 0x48154780 0x60014915
|
|
INFO: hisi_mcu_load_image: [DST 0xf6000200] 0xbf00bf00 0x4815b672 0x48154780 0x60014915
|
|
INFO: hisi_mcu_load_image: mcu sections 2:
|
|
INFO: hisi_mcu_load_image: src = 0x10070b4
|
|
INFO: hisi_mcu_load_image: dst = 0xf6007200
|
|
INFO: hisi_mcu_load_image: size = 1024
|
|
INFO: hisi_mcu_load_image: [SRC 0x10070b4] 0x55 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: [DST 0xf6007200] 0x55 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: mcu sections 3:
|
|
INFO: hisi_mcu_load_image: src = 0x10074b4
|
|
INFO: hisi_mcu_load_image: dst = 0xfff8e000
|
|
INFO: hisi_mcu_load_image: size = 12704
|
|
INFO: hisi_mcu_load_image: [SRC 0x10074b4] 0x55 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: [DST 0xfff8e000] 0x55 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: mcu sections 4:
|
|
INFO: hisi_mcu_load_image: src = 0x100a654
|
|
INFO: hisi_mcu_load_image: dst = 0x5e00000
|
|
INFO: hisi_mcu_load_image: size = 82912
|
|
INFO: hisi_mcu_load_image: [SRC 0x100a654] 0x4ff0e92d 0x2cc5f645 0x2600b0ab 0x2c7cf6c0
|
|
INFO: hisi_mcu_load_image: [DST 0x5e00000] 0x4ff0e92d 0x2cc5f645 0x2600b0ab 0x2c7cf6c0
|
|
INFO: hisi_mcu_load_image: mcu sections 5:
|
|
INFO: hisi_mcu_load_image: src = 0x101ea34
|
|
INFO: hisi_mcu_load_image: dst = 0x5e143e0
|
|
INFO: hisi_mcu_load_image: size = 12816
|
|
INFO: hisi_mcu_load_image: [SRC 0x101ea34] 0x33323130 0x37363534 0x42413938 0x46454443
|
|
INFO: hisi_mcu_load_image: [DST 0x5e143e0] 0x33323130 0x37363534 0x42413938 0x46454443
|
|
INFO: hisi_mcu_load_image: mcu sections 6:
|
|
INFO: hisi_mcu_load_image: src = 0x1021c44
|
|
INFO: hisi_mcu_load_image: dst = 0x5e1c1d0
|
|
INFO: hisi_mcu_load_image: size = 3060
|
|
INFO: hisi_mcu_load_image: [SRC 0x1021c44] 0x0 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: [DST 0x5e1c1d0] 0x0 0x0 0x0 0x0
|
|
INFO: hisi_mcu_load_image: mcu sections 7:
|
|
INFO: hisi_mcu_load_image: src = 0x1022838
|
|
INFO: hisi_mcu_load_image: dst = 0x5e1cdc4
|
|
INFO: hisi_mcu_load_image: size = 2616
|
|
INFO: hisi_mcu_load_image: [SRC 0x1022838] 0xf80000a0 0x0 0xf80000ac 0x0
|
|
INFO: hisi_mcu_load_image: [DST 0x5e1cdc4] 0xf80000a0 0x0 0xf80000ac 0x0
|
|
INFO: hisi_mcu_start_run: AO_SC_SYS_CTRL2=0
|
|
INFO: bl2_plat_handle_bl30: mcu pc is 42933301
|
|
INFO: bl2_plat_handle_bl30: AO_SC_PERIPH_CLKSTAT4 is 39018f09
|
|
INFO: BL2: TrustZone: protecting 16777216 bytes of memory at 0x3f000000
|
|
INFO: BL2: Loading BL3-1
|
|
INFO: Using FIP
|
|
INFO: Loading file 'bl31.bin' at address 0xf9858000
|
|
INFO: File 'bl31.bin' loaded: 0xf9858000 - 0xf9861010
|
|
INFO: BL2: Loading BL3-2
|
|
INFO: Using FIP
|
|
WARNING: Failed to access image 'bl32.bin' (-1)
|
|
WARNING: Failed to load BL3-2 (-1)
|
|
INFO: BL2: Loading BL3-3
|
|
INFO: Using FIP
|
|
INFO: Loading file 'bl33.bin' at address 0x35000000
|
|
INFO: File 'bl33.bin' loaded: 0x35000000 - 0x3504c468
|
|
NOTICE: BL1: Booting BL3-1
|
|
INFO: BL1: BL3-1 address = 0xf9858000
|
|
INFO: BL1: BL3-1 spsr = 0x3cd
|
|
INFO: BL1: BL3-1 params address = 0xf9821920
|
|
INFO: BL1: BL3-1 plat params address = 0x0
|
|
NOTICE: BL3-1: v1.1(debug):e8b7174
|
|
NOTICE: BL3-1: Built : 19:16:49, Sep 8 2015
|
|
INFO: BL3-1: Initializing runtime services
|
|
INFO: BL3-1: Preparing for EL3 exit to normal world
|
|
INFO: BL3-1: Next image address = 0x35000000
|
|
INFO: BL3-1: Next image spsr = 0x3c9
|
|
|
|
U-Boot 2015.10-rc2 (Sep 08 2015 - 20:29:33 +0100)hikey
|
|
|
|
DRAM: 1008 MiB
|
|
HI6553 PMIC init
|
|
MMC: config_sd_carddetect: SD card not present
|
|
HiKey DWMMC: 0, HiKey DWMMC: 1
|
|
Card did not respond to voltage select!
|
|
** Bad device mmc 1 **
|
|
Using default environment
|
|
|
|
In: serial
|
|
Out: serial
|
|
Err: serial
|
|
Net: Net Initialization Skipped
|
|
No ethernet found.
|
|
Hit any key to stop autoboot: 0
|
|
starting USB...
|
|
USB0: Core Release: 3.00a
|
|
scanning bus 0 for devices... 2 USB Device(s) found
|
|
scanning usb for storage devices... 0 Storage Device(s) found
|
|
scanning usb for ethernet devices... 0 Ethernet Device(s) found
|