xref: /rk3399_ARM-atf/docs/getting_started/prerequisites.rst (revision b50838bae79953178c3fc856c0ee015cce94e3ec)
143f35ef5SPaul BeesleyPrerequisites
243f35ef5SPaul Beesley=============
343f35ef5SPaul Beesley
443f35ef5SPaul BeesleyThis document describes the software requirements for building |TF-A| for
543f35ef5SPaul BeesleyAArch32 and AArch64 target platforms.
643f35ef5SPaul Beesley
743f35ef5SPaul BeesleyIt may possible to build |TF-A| with combinations of software packages that are
843f35ef5SPaul Beesleydifferent from those listed below, however only the software described in this
943f35ef5SPaul Beesleydocument can be officially supported.
104a1bcd50SSandrine Bailleux
1143f35ef5SPaul BeesleyBuild Host
1243f35ef5SPaul Beesley----------
1343f35ef5SPaul Beesley
1443f35ef5SPaul Beesley|TF-A| can be built using either a Linux or a Windows machine as the build host.
1543f35ef5SPaul Beesley
1643f35ef5SPaul BeesleyA relatively recent Linux distribution is recommended for building |TF-A|. We
1743f35ef5SPaul Beesleyhave performed tests using Ubuntu 16.04 LTS (64-bit) but other distributions
1843f35ef5SPaul Beesleyshould also work fine as a base, provided that the necessary tools and libraries
1943f35ef5SPaul Beesleycan be installed.
2043f35ef5SPaul Beesley
2143f35ef5SPaul Beesley.. _prerequisites_toolchain:
2243f35ef5SPaul Beesley
2343f35ef5SPaul BeesleyToolchain
2443f35ef5SPaul Beesley---------
2543f35ef5SPaul Beesley
2643f35ef5SPaul Beesley|TF-A| can be built with any of the following *cross-compiler* toolchains that
2743f35ef5SPaul Beesleytarget the Armv7-A or Armv8-A architectures:
2843f35ef5SPaul Beesley
2949154435SJayanth Dodderi Chidanand- GCC >= 11.3.Rel1 (from the `Arm Developer website`_)
30*b50838baSBoyan Karatotev
31*b50838baSBoyan Karatotev   You will need the targets ``arm-none-eabi`` and ``aarch64-none-elf`` for
32*b50838baSBoyan Karatotev   AArch32 and AArch64 builds respectively.
33*b50838baSBoyan Karatotev
34a5d36574SHarrison Mutai- Clang >= 14.0.0
35a5d36574SHarrison Mutai- Arm Compiler >= 6.18
3643f35ef5SPaul Beesley
3743f35ef5SPaul BeesleyIn addition, a native compiler is required to build the supporting tools.
3843f35ef5SPaul Beesley
3943f35ef5SPaul Beesley.. note::
4043f35ef5SPaul Beesley   The software has also been built on Windows 7 Enterprise SP1, using CMD.EXE,
4143f35ef5SPaul Beesley   Cygwin, and Msys (MinGW) shells, using version 5.3.1 of the GNU toolchain.
4243f35ef5SPaul Beesley
4343f35ef5SPaul Beesley.. note::
4443f35ef5SPaul Beesley   For instructions on how to select the cross compiler refer to
4543f35ef5SPaul Beesley   :ref:`Performing an Initial Build`.
4643f35ef5SPaul Beesley
4743f35ef5SPaul Beesley.. _prerequisites_software_and_libraries:
4843f35ef5SPaul Beesley
4943f35ef5SPaul BeesleySoftware and Libraries
5043f35ef5SPaul Beesley----------------------
5143f35ef5SPaul Beesley
5243f35ef5SPaul BeesleyThe following tools are required to obtain and build |TF-A|:
5343f35ef5SPaul Beesley
5443f35ef5SPaul Beesley- An appropriate toolchain (see :ref:`prerequisites_toolchain`)
5543f35ef5SPaul Beesley- GNU Make
5643f35ef5SPaul Beesley- Git
5743f35ef5SPaul Beesley
5843f35ef5SPaul BeesleyThe following libraries must be available to build one or more components or
5943f35ef5SPaul Beesleysupporting tools:
6043f35ef5SPaul Beesley
61cf2dd17dSJuan Pablo Conde- OpenSSL >= 1.1.1 (v3.0.0 to v3.0.6 highly discouraged due to security issues)
6243f35ef5SPaul Beesley
63cf2dd17dSJuan Pablo Conde   Required to build the cert_create, encrypt_fw, and fiptool tools.
6443f35ef5SPaul Beesley
658caf10acSJuan Pablo Conde   .. note::
668caf10acSJuan Pablo Conde
67cf2dd17dSJuan Pablo Conde    If using OpenSSL 3, older Linux versions may require it to be built from
68cf2dd17dSJuan Pablo Conde    source code, as it may not be available in the default package repositories.
69cf2dd17dSJuan Pablo Conde    Please refer to the OpenSSL project documentation for more information.
708caf10acSJuan Pablo Conde
715cae3373SSandrine BailleuxThe following libraries are required for Trusted Board Boot and Measured Boot
725cae3373SSandrine Bailleuxsupport:
7343f35ef5SPaul Beesley
7481f4abb8SDaniel Boulby- mbed TLS == 2.28.1 (tag: ``mbedtls-2.28.1``)
7543f35ef5SPaul Beesley
7643f35ef5SPaul BeesleyThese tools are optional:
7743f35ef5SPaul Beesley
7843f35ef5SPaul Beesley- Device Tree Compiler (DTC) >= 1.4.6
7943f35ef5SPaul Beesley
8043f35ef5SPaul Beesley   Needed if you want to rebuild the provided Flattened Device Tree (FDT)
8143f35ef5SPaul Beesley   source files (``.dts`` files). DTC is available for Linux through the package
8243f35ef5SPaul Beesley   repositories of most distributions.
8343f35ef5SPaul Beesley
844466cf82SDaniel Boulby- Arm `Development Studio (Arm-DS)`_
8543f35ef5SPaul Beesley
8643f35ef5SPaul Beesley   The standard software package used for debugging software on Arm development
8743f35ef5SPaul Beesley   platforms and |FVP| models.
8843f35ef5SPaul Beesley
8935cc497dSChris Kay- Node.js >= 16
90ba39362fSChris Kay
91ba39362fSChris Kay   Highly recommended, and necessary in order to install and use the packaged
92ba39362fSChris Kay   Git hooks and helper tools. Without these tools you will need to rely on the
93ba39362fSChris Kay   CI for feedback on commit message conformance.
94ba39362fSChris Kay
9543f35ef5SPaul BeesleyPackage Installation (Linux)
9643f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^
9743f35ef5SPaul Beesley
9843f35ef5SPaul BeesleyIf you are using the recommended Ubuntu distribution then you can install the
9943f35ef5SPaul Beesleyrequired packages with the following command:
10043f35ef5SPaul Beesley
10143f35ef5SPaul Beesley.. code:: shell
10243f35ef5SPaul Beesley
1038caf10acSJuan Pablo Conde    sudo apt install build-essential git
10443f35ef5SPaul Beesley
10543f35ef5SPaul BeesleyThe optional packages can be installed using:
10643f35ef5SPaul Beesley
10743f35ef5SPaul Beesley.. code:: shell
10843f35ef5SPaul Beesley
10943f35ef5SPaul Beesley    sudo apt install device-tree-compiler
11043f35ef5SPaul Beesley
11110c969c5SChris KayAdditionally, to install a version of Node.js compatible with TF-A's repository
11210c969c5SChris Kayscripts, you can use the `Node Version Manager`_. To install both NVM and an
11310c969c5SChris Kayappropriate version of Node.js, run the following **from the root directory of
11410c969c5SChris Kaythe repository**:
115ba39362fSChris Kay
116ba39362fSChris Kay.. code:: shell
117ba39362fSChris Kay
11810c969c5SChris Kay    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
11910c969c5SChris Kay    exec "$SHELL" -ic "nvm install; exec $SHELL"
120ba39362fSChris Kay
121ba39362fSChris Kay.. _Node Version Manager: https://github.com/nvm-sh/nvm#install--update-script
122ba39362fSChris Kay
12343f35ef5SPaul BeesleySupporting Files
12443f35ef5SPaul Beesley----------------
12543f35ef5SPaul Beesley
12643f35ef5SPaul BeesleyTF-A has been tested with pre-built binaries and file systems from `Linaro
12799a99eb4SZelalemRelease 20.01`_. Alternatively, you can build the binaries from source using
12843f35ef5SPaul Beesleyinstructions in :ref:`Performing an Initial Build`.
12943f35ef5SPaul Beesley
13043f35ef5SPaul Beesley.. _prerequisites_get_source:
13143f35ef5SPaul Beesley
13243f35ef5SPaul BeesleyGetting the TF-A Source
13343f35ef5SPaul Beesley-----------------------
13443f35ef5SPaul Beesley
13543f35ef5SPaul BeesleySource code for |TF-A| is maintained in a Git repository hosted on
13643f35ef5SPaul BeesleyTrustedFirmware.org. To clone this repository from the server, run the following
13743f35ef5SPaul Beesleyin your shell:
13843f35ef5SPaul Beesley
13943f35ef5SPaul Beesley.. code:: shell
14043f35ef5SPaul Beesley
141ba39362fSChris Kay    git clone "https://review.trustedfirmware.org/TF-A/trusted-firmware-a"
14243f35ef5SPaul Beesley
143ba39362fSChris KayAdditional Steps for Contributors
144ba39362fSChris Kay^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14543f35ef5SPaul Beesley
146ba39362fSChris KayIf you are planning on contributing back to TF-A, there are some things you'll
147ba39362fSChris Kaywant to know.
14843f35ef5SPaul Beesley
149ba39362fSChris KayTF-A is hosted by a `Gerrit Code Review`_ server. Gerrit requires that all
150ba39362fSChris Kaycommits include a ``Change-Id`` footer, and this footer is typically
151ba39362fSChris Kayautomatically generated by a Git hook installed by you, the developer.
152ba39362fSChris Kay
153ba39362fSChris KayIf you have Node.js installed already, you can automatically install this hook,
154ba39362fSChris Kayalong with any additional hooks and Javascript-based tooling that we use, by
155ba39362fSChris Kayrunning from within your newly-cloned repository:
15643f35ef5SPaul Beesley
15743f35ef5SPaul Beesley.. code:: shell
15843f35ef5SPaul Beesley
159a4371d1cSChris Kay    npm install --no-save
160ba39362fSChris Kay
161ba39362fSChris KayIf you have opted **not** to install Node.js, you can install the Gerrit hook
162ba39362fSChris Kaymanually by running:
163ba39362fSChris Kay
164ba39362fSChris Kay.. code:: shell
165ba39362fSChris Kay
166ba39362fSChris Kay    curl -Lo $(git rev-parse --git-dir)/hooks/commit-msg https://review.trustedfirmware.org/tools/hooks/commit-msg
167ba39362fSChris Kay    chmod +x $(git rev-parse --git-dir)/hooks/commit-msg
168ba39362fSChris Kay
169ba39362fSChris KayYou can read more about Git hooks in the *githooks* page of the Git
170ba39362fSChris Kaydocumentation, available `here <https://git-scm.com/docs/githooks>`_.
17143f35ef5SPaul Beesley
17243f35ef5SPaul Beesley--------------
17343f35ef5SPaul Beesley
174a5d36574SHarrison Mutai*Copyright (c) 2021-2022, Arm Limited. All rights reserved.*
17543f35ef5SPaul Beesley
17671a5543bSSandrine Bailleux.. _Arm Developer website: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads
177ba39362fSChris Kay.. _Gerrit Code Review: https://www.gerritcodereview.com/
17843f35ef5SPaul Beesley.. _Linaro Release Notes: https://community.arm.com/dev-platforms/w/docs/226/old-release-notes
17943f35ef5SPaul Beesley.. _Linaro instructions: https://community.arm.com/dev-platforms/w/docs/304/arm-reference-platforms-deliverables
1804466cf82SDaniel Boulby.. _Development Studio (Arm-DS): https://developer.arm.com/Tools%20and%20Software/Arm%20Development%20Studio
18199a99eb4SZelalem.. _Linaro Release 20.01: http://releases.linaro.org/members/arm/platforms/20.01
182