1HiKey
2=====
3
4HiKey is one of 96boards. Hisilicon Kirin6220 processor is installed on HiKey.
5
6More information are listed in `link`_.
7
8How to build
9------------
10
11Code Locations
12~~~~~~~~~~~~~~
13
14-  Trusted Firmware-A:
15   `link <https://github.com/ARM-software/arm-trusted-firmware>`__
16
17-  OP-TEE
18   `link <https://github.com/OP-TEE/optee_os>`__
19
20-  edk2:
21   `link <https://github.com/96boards-hikey/edk2/tree/testing/hikey960_v2.5>`__
22
23-  OpenPlatformPkg:
24   `link <https://github.com/96boards-hikey/OpenPlatformPkg/tree/testing/hikey960_v1.3.4>`__
25
26-  l-loader:
27   `link <https://github.com/96boards-hikey/l-loader/tree/testing/hikey960_v1.2>`__
28
29-  atf-fastboot:
30   `link <https://github.com/96boards-hikey/atf-fastboot/tree/master>`__
31
32Build Procedure
33~~~~~~~~~~~~~~~
34
35-  Fetch all the above repositories into local host.
36   Make all the repositories in the same ${BUILD\_PATH}.
37
38  .. code:: shell
39
40       git clone https://github.com/ARM-software/arm-trusted-firmware -b integration
41       git clone https://github.com/OP-TEE/optee_os
42       git clone https://github.com/96boards-hikey/edk2 -b testing/hikey960_v2.5
43       git clone https://github.com/96boards-hikey/OpenPlatformPkg -b testing/hikey960_v1.3.4
44       git clone https://github.com/96boards-hikey/l-loader -b testing/hikey960_v1.2
45       git clone https://github.com/96boards-hikey/atf-fastboot
46
47-  Create the symbol link to OpenPlatformPkg in edk2.
48
49   .. code:: shell
50
51       $cd ${BUILD_PATH}/edk2
52       $ln -sf ../OpenPlatformPkg
53
54-  Prepare AARCH64 && AARCH32 toolchain. Prepare python.
55
56-  If your hikey hardware is built by CircuitCo, update *OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKey.dsc* first. *(optional)*
57   console on hikey.**
58
59   .. code:: shell
60
61       DEFINE SERIAL_BASE=0xF8015000
62
63   If your hikey hardware is built by LeMaker, nothing to do.
64
65-  Build it as debug mode. Create your own build script file or you could refer to **build\_uefi.sh** in l-loader git repository.
66
67   .. code:: shell
68
69       cd {BUILD_PATH}/arm-trusted-firmware
70       sh ../l-loader/build_uefi.sh hikey
71
72-  Generate l-loader.bin and partition table for aosp. The eMMC capacity is either 8GB or 4GB. Just change "aosp-8g" to "linux-8g" for debian.
73
74   .. code:: shell
75
76       cd ${BUILD_PATH}/l-loader
77       ln -sf ${EDK2_OUTPUT_DIR}/FV/bl1.bin
78       ln -sf ${EDK2_OUTPUT_DIR}/FV/bl2.bin
79       ln -sf ${BUILD_PATH}/atf-fastboot/build/hikey/${FASTBOOT_BUILD_OPTION}/bl1.bin fastboot.bin
80       make hikey PTABLE_LST=aosp-8g
81
82Setup Console
83-------------
84
85-  Install ser2net. Use telnet as the console since UEFI fails to display Boot Manager GUI in minicom. **If you don't need Boot Manager GUI, just ignore this section.**
86
87   .. code:: shell
88
89       $sudo apt-get install ser2net
90
91-  Configure ser2net.
92
93   .. code:: shell
94
95       $sudo vi /etc/ser2net.conf
96
97   Append one line for serial-over-USB in below.
98   *#ser2net.conf*
99
100   .. code:: shell
101
102       2004:telnet:0:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT banner
103
104-  Start ser2net
105
106   .. code:: shell
107
108       $sudo killall ser2net
109       $sudo ser2net -u
110
111-  Open the console.
112
113   .. code:: shell
114
115       $telnet localhost 2004
116
117   And you could open the console remotely, too.
118
119Flash images in recovery mode
120-----------------------------
121
122-  Make sure Pin3-Pin4 on J15 are connected for recovery mode. Then power on HiKey.
123
124-  Remove the modemmanager package. This package may cause the idt tool failure.
125
126   .. code:: shell
127
128       $sudo apt-get purge modemmanager
129
130-  Run the command to download recovery.bin into HiKey.
131
132   .. code:: shell
133
134       $sudo python hisi-idt.py -d /dev/ttyUSB1 --img1 recovery.bin
135
136-  Update images. All aosp or debian images could be fetched from `link <http://releases.linaro.org/96boards/>`__.
137
138   .. code:: shell
139
140       $sudo fastboot flash ptable prm_ptable.img
141       $sudo fastboot flash loader l-loader.bin
142       $sudo fastboot flash fastboot fip.bin
143       $sudo fastboot flash boot boot.img
144       $sudo fastboot flash cache cache.img
145       $sudo fastboot flash system system.img
146       $sudo  fastboot flash userdata userdata.img
147
148Boot UEFI in normal mode
149------------------------
150
151-  Make sure Pin3-Pin4 on J15 are open for normal boot mode. Then power on HiKey.
152
153-  Reference `link <https://github.com/96boards-hikey/tools-images-hikey960/blob/master/build-from-source/README-ATF-UEFI-build-from-source.md>`__
154
155.. _link: https://www.96boards.org/documentation/consumer/hikey/
156