These instructions will help you in flashing the prebuilt bootloader
images and AOSP images (built from sources) on hikey960.

There are two versions of HiKey960: v1 and v2.
* v1 is using Jumper (J2001)
* v2 is using DIP switch (SW2201).
Both are located at the bottom side of the board.

Jumper Pin 1-2 = DIP switch 1 (AutoBoot)
Jumper Pin 3-4 = DIP switch 2 (Recovery Mode)
JUmper Pin 5-6 = DIP switch 3 (Fastboot Mode)

* Always power off the board before changing the switches or
  jumpers.
* To boot into fastboot mode set switch 1 & 3 to ON state and
  switch 2 to OFF state.
* To boot into normal mode set switch 1 to ON and switch 2 & 3 to
  OFF state.

To flash the OS to the board, set the jumpers to fastboot mode, and
power on the device. Connect a USB-C cable to the OTG port and your
host device.

On your host device, run the flash-all.sh script to update boot files
using fastboot. It assumes that you have already build hikey960 AOSP
images locally, or are flashing a factory image.
$ ./flash-all.sh

After that completes, power the board off, and set the switches back
to normal mode and boot the device.

Known Issues:
-------------
When flashing ontop of the HiSi bootloader, you may see the following
failure:
  sending 'xloader' (151 KB)...
  OKAY [  0.006s]
  writing 'xloader'...
  FAILED (remote: flash write back vrl failure)

This is a transient error and can be ignored.


Trouble shooting:
-----------------
If you have any trouble booting the device after running ./flash-all.sh
you may need to do a board recovery. This is hopefully uncommon, but
may be necessary in some cases (like if your board has pre-release
firmware on it). In this case clone the git project here:
  https://github.com/96boards-hikey/tools-images-hikey960/

And follow the instructions in the README.md
  https://github.com/96boards-hikey/tools-images-hikey960/blob/master/README.md
