hikey.rst 4.93 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Description
===========

HiKey is one of 96boards. Hisilicon Kirin6220 processor is installed on HiKey.

More information are listed in `link`_.

How to build
============

Code Locations
--------------

-  ARM Trusted Firmware:
   `link <https://github.com/ARM-software/arm-trusted-firmware>`__

17
18
19
-  OP-TEE
   `link <https://github.com/OP-TEE/optee_os>`__

20
21
22
23
24
25
26
27
28
29
-  edk2:
   `link <https://github.com/96boards-hikey/edk2/tree/testing/hikey960_v2.5>`__

-  OpenPlatformPkg:
   `link <https://github.com/96boards-hikey/OpenPlatformPkg/tree/testing/hikey960_v1.3.4>`__

-  l-loader:
   `link <https://github.com/96boards-hikey/l-loader/tree/testing/hikey960_v1.2>`__

-  uefi-tools:
Victor Chong's avatar
Victor Chong committed
30
   `link <https://git.linaro.org/uefi/uefi-tools.git>`__
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

-  atf-fastboot:
   `link <https://github.com/96boards-hikey/atf-fastboot/tree/master>`__

Build Procedure
---------------

-  Fetch all the above repositories into local host.
   Make all the repositories in the same ${BUILD\_PATH}.

-  Create the symbol link to OpenPlatformPkg in edk2.

   .. code:: shell

       $cd ${BUILD_PATH}/edk2
       $ln -sf ../OpenPlatformPkg

-  Prepare AARCH64 && AARCH32 toolchain. Prepare python.

-  If your hikey hardware is built by CircuitCo, update *uefi-tools/platform.config* first. *(optional)*
   **Uncomment the below sentence. Otherwise, UEFI can't output messages on serial
   console on hikey.**

   .. code:: shell

       BUILDFLAGS=-DSERIAL_BASE=0xF8015000

   If your hikey hardware is built by LeMarker, nothing to do.

-  Build it as debug mode. Create your own build script file or you could refer to **build\_uefi.sh** in l-loader git repository.

   .. code:: shell

       BUILD_OPTION=DEBUG
       export AARCH64_TOOLCHAIN=GCC5
       export UEFI_TOOLS_DIR=${BUILD_PATH}/uefi-tools
       export EDK2_DIR=${BUILD_PATH}/edk2
       EDK2_OUTPUT_DIR=${EDK2_DIR}/Build/HiKey/${BUILD_OPTION}_${AARCH64_TOOLCHAIN}
       # Build fastboot for ARM Trust Firmware. It's used for recovery mode.
       cd ${BUILD_PATH}/atf-fastboot
       CROSS_COMPILE=aarch64-linux-gnu- make PLAT=hikey DEBUG=1
       # Convert DEBUG/RELEASE to debug/release
       FASTBOOT_BUILD_OPTION=$(echo ${BUILD_OPTION} | tr '[A-Z]' '[a-z]')
       cd ${EDK2_DIR}
       # Build UEFI & ARM Trust Firmware
76
       ${UEFI_TOOLS_DIR}/uefi-build.sh -b ${BUILD_OPTION} -a ../arm-trusted-firmware -s ../optee_os hikey
77
78
79
80
81
82
83
84
85
86
87
88
89
       # Generate l-loader.bin
       cd ${BUILD_PATH}/l-loader
       ln -sf ${EDK2_OUTPUT_DIR}/FV/bl1.bin
       ln -sf ${BUILD_PATH}/atf-fastboot/build/hikey/${FASTBOOT_BUILD_OPTION}/bl1.bin fastboot.bin
       arm-linux-gnueabihf-gcc -c -o start.o start.S
       arm-linux-gnueabihf-ld -Bstatic -Tl-loader.lds -Ttext 0xf9800800 start.o -o loader
       arm-linux-gnueabihf-objcopy -O binary loader temp
       python gen_loader_hikey.py -o l-loader.bin --img_loader=temp --img_bl1=bl1.bin --img_ns_bl1u=fastboot.bin

-  Generate partition table for aosp. The eMMC capacity is either 4GB or 8GB. Just change "aosp-4g" to "linux-4g" for debian.

   .. code:: shell

Victor Chong's avatar
Victor Chong committed
90
       PTABLE=aosp-4g SECTOR_SIZE=512 bash -x generate_ptable.sh
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

Setup Console
-------------

-  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.**

   .. code:: shell

       $sudo apt-get install ser2net

-  Configure ser2net.

   .. code:: shell

       $sudo vi /etc/ser2net.conf

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

   .. code:: shell

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

Victor Chong's avatar
Victor Chong committed
114
115
116
117
118
119
120
-  Start ser2net

   .. code:: shell

       $sudo killall ser2net
       $sudo ser2net -u

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
-  Open the console.

   .. code:: shell

       $telnet localhost 2004

   And you could open the console remotely, too.

Flush images in recovery mode
-----------------------------

-  Make sure Pin3-Pin4 on J15 are connected for recovery mode. Then power on HiKey.

-  Remove the modemmanager package. This package may cause the idt tool failure.

   .. code:: shell

       $sudo apt-get purge modemmanager

-  Run the command to download l-loader.bin into HiKey.

   .. code:: shell

       $sudo python hisi-idt.py -d /dev/ttyUSB1 --img1 l-loader.bin

-  Update images. All aosp or debian images could be fetched from `link <https://builds.96boards.org/>`__.

   .. code:: shell

       $sudo fastboot flash ptable prm_ptable.img
       $sudo fastboot flash fastboot 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

Boot UEFI in normal mode
------------------------

-  Make sure Pin3-Pin4 on J15 are open for normal boot mode. Then power on HiKey.

-  Reference `link <https://github.com/96boards-hikey/tools-images-hikey960/blob/master/build-from-source/README-ATF-UEFI-build-from-source.md>`__

.. _link: https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Quickstart/README.md