|
@@ -22,50 +22,55 @@ Currently the u-boot port supports: -
|
|
|
* 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
|
|
@@ -74,15 +79,12 @@ FLASHING
|
|
|
========
|
|
|
|
|
|
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
|
|
@@ -90,10 +92,10 @@ The command below assumes HiKey enumerated as the first USB serial port
|
|
|
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
|
|
@@ -102,7 +104,8 @@ The command below assumes HiKey enumerated as the first USB serial port
|
|
|
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......
|