* SD card
* GPIO
-Compile u-boot
-==============
+The HiKey U-Boot port has been tested with l-loader, booting ATF, which then boots
+U-Boot as the bl33.bin executable.
- > mkdir -p ./aarch64/bin
- > cd ./aarch64
- > git clone http://git.denx.de/u-boot.git
- > make CROSS_COMPILE=aarch64-linux-gnu- hikey_config
- > make CROSS_COMPILE=aarch64-linux-gnu-
- > cp u-boot.bin ./aarch64/bin/u-boot-hikey.bin
+Compile from source
+===================
-ARM Trusted Firmware (ATF) & l-loader
-=====================================
+First get all the sources
-This u-boot port has been tested with l-loader, booting ATF, which then boots
-u-boot as the bl33.bin executable.
+ > 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 mcu binary.
- > wget -P aarch64/bin https://builds.96boards.org/releases/hikey/linaro/binaries/15.05/mcuimage.bin
+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.
-1. Get ATF source code
- > cd ./aarch64
- > git clone https://github.com/96boards/arm-trusted-firmware.git
- > cd ./arm-trusted-firmware
+ > cp edk2/HisiPkg/HiKeyPkg/NonFree/mcuimage.bin ~/hikey/bin/
-2. Compile ATF, I use the build-tf.mak in the directory with this README, and copy it to ATF directory
- > cp ../u-boot/board/hisilicon/hikey/build-tf.mak .
- > make -f build-tf.mak build
+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
-3. Get l-loader
- > cd ../
- > git clone https://github.com/96boards/l-loader.git
- > cd ./l-loader
+Compile U-Boot
+==============
-4. Make sym links to ATF bl1 / fip binaries
- > ln -s ../bin/bl1-hikey.bin bl1.bin
- > ln -s ../bin/fip-hikey.bin fip.bin
+ > 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
- > arm-linux-gnueabihf-gcc -c -o start.o start.S
- > arm-linux-gnueabihf-gcc -c -o debug.o debug.S
- > arm-linux-gnueabihf-ld -Bstatic -Tl-loader.lds -Ttext 0xf9800800 start.o debug.o -o loader
- > arm-linux-gnueabihf-objcopy -O binary loader temp
- > python gen_loader.py -o ../bin/l-loader.bin --img_loader=temp --img_bl1=bl1.bin
- > sudo bash -x generate_ptable.sh
- > python gen_loader.py -o ../bin/ptable.img --img_prm_ptable=./prm_ptable.img --img_sec_ptable=./sec_ptable.img
+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
========
1. Connect the second jumper on J15 BOOT SEL, to go into recovery mode and flash l-loader.bin with
-fastboot using the hisi-idt.py utility.
-
- > cd ../
- > git clone https://github.com/96boards/burn-boot.git
+the hisi-idt.py utility.
The command below assumes HiKey enumerated as the first USB serial port
- > sudo ./burn-boot/hisi-idt.py -d /dev/ttyUSB0 --img1=./bin/l-loader.bin
+ > sudo ~/hikey/burn_boot/hisi-idt.py -d /dev/ttyUSB0 --img1=~/hikey/bin/l-loader.bin
-2. Once LED 0 comes on solid, it should be detected as a fastboot device by plugging a USB A to mini B
+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
- > wget -P aarch64/bin wget https://builds.96boards.org/releases/hikey/linaro/binaries/latest/nvme.img
- > sudo fastboot flash ptable ./bin/ptable.img
- > sudo fastboot flash fastboot ./bin/fip-hikey.bin
- > sudo fastboot flash nvme ./bin/nvme.img
+
+ > 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
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: -
+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......