Running Android on hikey960 board:

* Compiling userspace:
Pull AOSP source:
$ repo init -u https://android.googlesource.com/platform/manifest -b master & repo sync -j24

Download and extract HDMI binaries:
$ wget https://dl.google.com/dl/android/aosp/arm-hikey960-OPR-cf4e0c80.tgz
$ tar xzf arm-hikey960-OPR-cf4e0c80.tgz
$ ./extract-arm-hikey960.sh

Build:
$ . ./build/envsetup.sh
$ lunch hikey960-userdebug
$ make -j32

* Flashing images:
Enter fastboot mode by turning ON switch 1 and 3
$ cd device/linaro/hikey/installer/hikey960
$ ./flash-all.sh
 or
$ fastboot flash boot out/target/product/hikey960/boot.img
$ fastboot flash dts out/target/product/hikey960/dt.img
$ fastboot flash system out/target/product/hikey960/system.img
$ fastboot flash vendor out/target/product/hikey960/vendor.img
$ fastboot flash cache out/target/product/hikey960/cache.img
$ fastboot flash userdata out/target/product/hikey960/userdata.img
Turn OFF switch 3 and power cycle the board.

* Building kernel
$ git clone https://android.googlesource.com/kernel/hikey-linaro
$ cd hikey-linaro
$ git checkout -b android-hikey-linaro-4.9 origin/android-hikey-linaro-4.9
$ make ARCH=arm64 hikey960_defconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-android- -j24

* Update the kernel in the boot image
Copy hi3660-hikey960.dtb (arch/arm64/boot/dts/hisilicon/hi3660-hikey960.dtb)
  to the hikey-kernel directory as file: hi3660-hikey960.dtb-4.9
Copy the Image file (arch/arm64/boot/Image.gz) to the hikey-kernel
  directory as file: Image.gz-hikey960-4.9
$ make bootimage -j24

* Kernel serial output (uart3):
J2 (LS Expansion): 1 - Gnd, 11 - Rx, 13 - Tx

External links:
Board: http://www.96boards.org/product/hikey960/
Howto: http://www.96boards.org/documentation/ConsumerEdition/HiKey960/README.md/
Schematics: https://github.com/96boards/documentation/raw/master/ConsumerEdition/HiKey960/HardwareDocs/HiKey960_Schematics.pdf