9. HiKey960

HiKey960 is one of 96boards. Hisilicon Hi3660 processor is installed on HiKey960.

More information are listed in link.

9.1. How to build

9.1.1. Code Locations

9.1.2. Build Procedure

  • Fetch all the above 5 repositories into local host. Make all the repositories in the same ${BUILD_PATH}.

git clone https://github.com/ARM-software/arm-trusted-firmware -b integration
git clone https://github.com/OP-TEE/optee_os
git clone https://github.com/96boards-hikey/edk2 -b testing/hikey960_v2.5
git clone https://github.com/96boards-hikey/OpenPlatformPkg -b testing/hikey960_v1.3.4
git clone https://github.com/96boards-hikey/l-loader -b testing/hikey960_v1.2
  • Create the symbol link to OpenPlatformPkg in edk2.

    $cd ${BUILD_PATH}/edk2
    $ln -sf ../OpenPlatformPkg
    
  • Prepare AARCH64 toolchain.

  • If your hikey960 hardware is v1, update OpenPlatformPkg/Platforms/Hisilicon/HiKey960/HiKey960.dsc first. (optional)

    DEFINE SERIAL_BASE=0xFDF05000
    

    If your hikey960 hardware is v2 or newer, nothing to do.

  • Build it as debug mode. Create script file for build.

    cd {BUILD_PATH}/arm-trusted-firmware
    sh ../l-loader/build_uefi.sh hikey960
    
  • Generate l-loader.bin and partition table. Make sure that you’re using the sgdisk in the l-loader directory.

    cd ${BUILD_PATH}/l-loader
    ln -sf ${EDK2_OUTPUT_DIR}/FV/bl1.bin
    ln -sf ${EDK2_OUTPUT_DIR}/FV/bl2.bin
    ln -sf ${EDK2_OUTPUT_DIR}/FV/fip.bin
    ln -sf ${EDK2_OUTPUT_DIR}/FV/BL33_AP_UEFI.fd
    make hikey960
    

9.2. Setup Console

  • Install ser2net. Use telnet as the console since UEFI will output window that fails to display in minicom.

    $sudo apt-get install ser2net
    
  • Configure ser2net.

    $sudo vi /etc/ser2net.conf
    

    Append one line for serial-over-USB in #ser2net.conf

    2004:telnet:0:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT banner
    
  • Start ser2net

    $sudo killall ser2net
    $sudo ser2net -u
    
  • Open the console.

    $telnet localhost 2004
    

    And you could open the console remotely, too.

9.3. Boot UEFI in recovery mode

  • Fetch that are used in recovery mode. The code location is in below. link

  • Prepare recovery binary.

    $cd tools-images-hikey960
    $ln -sf ${BUILD_PATH}/l-loader/l-loader.bin
    $ln -sf ${BUILD_PATH}/l-loader/fip.bin
    $ln -sf ${BUILD_PATH}/l-loader/recovery.bin
    
  • Prepare config file.

    $vi config
    # The content of config file
    ./sec_usb_xloader.img 0x00020000
    ./sec_uce_boot.img 0x6A908000
    ./recovery.bin 0x1AC00000
    
  • Remove the modemmanager package. This package may causes hikey_idt tool failure.

    $sudo apt-get purge modemmanager
    
  • Run the command to download recovery.bin into HiKey960.

    $sudo ./hikey_idt -c config -p /dev/ttyUSB1
    
  • UEFI running in recovery mode. When prompt ‘.’ is displayed on console, press hotkey ‘f’ in keyboard. Then Android fastboot app is running. The timeout of prompt ‘.’ is 10 seconds.

  • Update images.

    $sudo fastboot flash ptable prm_ptable.img
    $sudo fastboot flash xloader sec_xloader.img
    $sudo fastboot flash fastboot l-loader.bin
    $sudo fastboot flash fip fip.bin
    $sudo fastboot flash boot boot.img
    $sudo fastboot flash cache cache.img
    $sudo fastboot flash system system.img
    $sudo fastboot flash userdata userdata.img
    
  • Notice: UEFI could also boot kernel in recovery mode, but BL31 isn’t loaded in recovery mode.

9.4. Boot UEFI in normal mode

  • Make sure “Boot Mode” switch is OFF for normal boot mode. Then power on HiKey960.

  • Reference link