xref: /rk3399_ARM-atf/docs/getting_started/prerequisites.rst (revision 4466cf8255aef834e79e5d69ddc4fbd71f6e3236)
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.
1043f35ef5SPaul BeesleyBuild Host
1143f35ef5SPaul Beesley----------
1243f35ef5SPaul Beesley
1343f35ef5SPaul Beesley|TF-A| can be built using either a Linux or a Windows machine as the build host.
1443f35ef5SPaul Beesley
1543f35ef5SPaul BeesleyA relatively recent Linux distribution is recommended for building |TF-A|. We
1643f35ef5SPaul Beesleyhave performed tests using Ubuntu 16.04 LTS (64-bit) but other distributions
1743f35ef5SPaul Beesleyshould also work fine as a base, provided that the necessary tools and libraries
1843f35ef5SPaul Beesleycan be installed.
1943f35ef5SPaul Beesley
2043f35ef5SPaul Beesley.. _prerequisites_toolchain:
2143f35ef5SPaul Beesley
2243f35ef5SPaul BeesleyToolchain
2343f35ef5SPaul Beesley---------
2443f35ef5SPaul Beesley
2543f35ef5SPaul Beesley|TF-A| can be built with any of the following *cross-compiler* toolchains that
2643f35ef5SPaul Beesleytarget the Armv7-A or Armv8-A architectures:
2743f35ef5SPaul Beesley
28a58a25e5SDaniel Boulby- GCC >= 11.2-2022.02 (from the `Arm Developer website`_)
29a5d36574SHarrison Mutai- Clang >= 14.0.0
30a5d36574SHarrison Mutai- Arm Compiler >= 6.18
3143f35ef5SPaul Beesley
3243f35ef5SPaul BeesleyIn addition, a native compiler is required to build the supporting tools.
3343f35ef5SPaul Beesley
3443f35ef5SPaul Beesley.. note::
3543f35ef5SPaul Beesley   The software has also been built on Windows 7 Enterprise SP1, using CMD.EXE,
3643f35ef5SPaul Beesley   Cygwin, and Msys (MinGW) shells, using version 5.3.1 of the GNU toolchain.
3743f35ef5SPaul Beesley
3843f35ef5SPaul Beesley.. note::
3943f35ef5SPaul Beesley   For instructions on how to select the cross compiler refer to
4043f35ef5SPaul Beesley   :ref:`Performing an Initial Build`.
4143f35ef5SPaul Beesley
4243f35ef5SPaul Beesley.. _prerequisites_software_and_libraries:
4343f35ef5SPaul Beesley
4443f35ef5SPaul BeesleySoftware and Libraries
4543f35ef5SPaul Beesley----------------------
4643f35ef5SPaul Beesley
4743f35ef5SPaul BeesleyThe following tools are required to obtain and build |TF-A|:
4843f35ef5SPaul Beesley
4943f35ef5SPaul Beesley- An appropriate toolchain (see :ref:`prerequisites_toolchain`)
5043f35ef5SPaul Beesley- GNU Make
5143f35ef5SPaul Beesley- Git
5243f35ef5SPaul Beesley
5343f35ef5SPaul BeesleyThe following libraries must be available to build one or more components or
5443f35ef5SPaul Beesleysupporting tools:
5543f35ef5SPaul Beesley
569bc52d33SJuan Pablo Conde- OpenSSL >= 3.0
5743f35ef5SPaul Beesley
5843f35ef5SPaul Beesley   Required to build the cert_create tool.
5943f35ef5SPaul Beesley
605cae3373SSandrine BailleuxThe following libraries are required for Trusted Board Boot and Measured Boot
615cae3373SSandrine Bailleuxsupport:
6243f35ef5SPaul Beesley
635cae3373SSandrine Bailleux- mbed TLS == 2.28.0 (tag: ``mbedtls-2.28.0``)
6443f35ef5SPaul Beesley
6543f35ef5SPaul BeesleyThese tools are optional:
6643f35ef5SPaul Beesley
6743f35ef5SPaul Beesley- Device Tree Compiler (DTC) >= 1.4.6
6843f35ef5SPaul Beesley
6943f35ef5SPaul Beesley   Needed if you want to rebuild the provided Flattened Device Tree (FDT)
7043f35ef5SPaul Beesley   source files (``.dts`` files). DTC is available for Linux through the package
7143f35ef5SPaul Beesley   repositories of most distributions.
7243f35ef5SPaul Beesley
73*4466cf82SDaniel Boulby- Arm `Development Studio (Arm-DS)`_
7443f35ef5SPaul Beesley
7543f35ef5SPaul Beesley   The standard software package used for debugging software on Arm development
7643f35ef5SPaul Beesley   platforms and |FVP| models.
7743f35ef5SPaul Beesley
7835cc497dSChris Kay- Node.js >= 16
79ba39362fSChris Kay
80ba39362fSChris Kay   Highly recommended, and necessary in order to install and use the packaged
81ba39362fSChris Kay   Git hooks and helper tools. Without these tools you will need to rely on the
82ba39362fSChris Kay   CI for feedback on commit message conformance.
83ba39362fSChris Kay
8443f35ef5SPaul BeesleyPackage Installation (Linux)
8543f35ef5SPaul Beesley^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8643f35ef5SPaul Beesley
8743f35ef5SPaul BeesleyIf you are using the recommended Ubuntu distribution then you can install the
8843f35ef5SPaul Beesleyrequired packages with the following command:
8943f35ef5SPaul Beesley
9043f35ef5SPaul Beesley.. code:: shell
9143f35ef5SPaul Beesley
9243f35ef5SPaul Beesley    sudo apt install build-essential git libssl-dev
9343f35ef5SPaul Beesley
9443f35ef5SPaul BeesleyThe optional packages can be installed using:
9543f35ef5SPaul Beesley
9643f35ef5SPaul Beesley.. code:: shell
9743f35ef5SPaul Beesley
9843f35ef5SPaul Beesley    sudo apt install device-tree-compiler
9943f35ef5SPaul Beesley
100ba39362fSChris KayAdditionally, to install an up-to-date version of Node.js, you can use the `Node
10135cc497dSChris KayVersion Manager`_ to install a version of your choosing (we recommend 16, but
102ba39362fSChris Kaylater LTS versions might offer a more stable experience):
103ba39362fSChris Kay
104ba39362fSChris Kay.. code:: shell
105ba39362fSChris Kay
10635cc497dSChris Kay    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | "$SHELL"
10735cc497dSChris Kay    exec "$SHELL" -ic "nvm install 16; exec $SHELL"
108ba39362fSChris Kay
109ba39362fSChris Kay.. _Node Version Manager: https://github.com/nvm-sh/nvm#install--update-script
110ba39362fSChris Kay
11143f35ef5SPaul BeesleySupporting Files
11243f35ef5SPaul Beesley----------------
11343f35ef5SPaul Beesley
11443f35ef5SPaul BeesleyTF-A has been tested with pre-built binaries and file systems from `Linaro
11599a99eb4SZelalemRelease 20.01`_. Alternatively, you can build the binaries from source using
11643f35ef5SPaul Beesleyinstructions in :ref:`Performing an Initial Build`.
11743f35ef5SPaul Beesley
11843f35ef5SPaul Beesley.. _prerequisites_get_source:
11943f35ef5SPaul Beesley
12043f35ef5SPaul BeesleyGetting the TF-A Source
12143f35ef5SPaul Beesley-----------------------
12243f35ef5SPaul Beesley
12343f35ef5SPaul BeesleySource code for |TF-A| is maintained in a Git repository hosted on
12443f35ef5SPaul BeesleyTrustedFirmware.org. To clone this repository from the server, run the following
12543f35ef5SPaul Beesleyin your shell:
12643f35ef5SPaul Beesley
12743f35ef5SPaul Beesley.. code:: shell
12843f35ef5SPaul Beesley
129ba39362fSChris Kay    git clone "https://review.trustedfirmware.org/TF-A/trusted-firmware-a"
13043f35ef5SPaul Beesley
131ba39362fSChris KayAdditional Steps for Contributors
132ba39362fSChris Kay^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
13343f35ef5SPaul Beesley
134ba39362fSChris KayIf you are planning on contributing back to TF-A, there are some things you'll
135ba39362fSChris Kaywant to know.
13643f35ef5SPaul Beesley
137ba39362fSChris KayTF-A is hosted by a `Gerrit Code Review`_ server. Gerrit requires that all
138ba39362fSChris Kaycommits include a ``Change-Id`` footer, and this footer is typically
139ba39362fSChris Kayautomatically generated by a Git hook installed by you, the developer.
140ba39362fSChris Kay
141ba39362fSChris KayIf you have Node.js installed already, you can automatically install this hook,
142ba39362fSChris Kayalong with any additional hooks and Javascript-based tooling that we use, by
143ba39362fSChris Kayrunning from within your newly-cloned repository:
14443f35ef5SPaul Beesley
14543f35ef5SPaul Beesley.. code:: shell
14643f35ef5SPaul Beesley
147a4371d1cSChris Kay    npm install --no-save
148ba39362fSChris Kay
149ba39362fSChris KayIf you have opted **not** to install Node.js, you can install the Gerrit hook
150ba39362fSChris Kaymanually by running:
151ba39362fSChris Kay
152ba39362fSChris Kay.. code:: shell
153ba39362fSChris Kay
154ba39362fSChris Kay    curl -Lo $(git rev-parse --git-dir)/hooks/commit-msg https://review.trustedfirmware.org/tools/hooks/commit-msg
155ba39362fSChris Kay    chmod +x $(git rev-parse --git-dir)/hooks/commit-msg
156ba39362fSChris Kay
157ba39362fSChris KayYou can read more about Git hooks in the *githooks* page of the Git
158ba39362fSChris Kaydocumentation, available `here <https://git-scm.com/docs/githooks>`_.
15943f35ef5SPaul Beesley
16043f35ef5SPaul Beesley--------------
16143f35ef5SPaul Beesley
162a5d36574SHarrison Mutai*Copyright (c) 2021-2022, Arm Limited. All rights reserved.*
16343f35ef5SPaul Beesley
16471a5543bSSandrine Bailleux.. _Arm Developer website: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads
165ba39362fSChris Kay.. _Gerrit Code Review: https://www.gerritcodereview.com/
16643f35ef5SPaul Beesley.. _Linaro Release Notes: https://community.arm.com/dev-platforms/w/docs/226/old-release-notes
16743f35ef5SPaul Beesley.. _Linaro instructions: https://community.arm.com/dev-platforms/w/docs/304/arm-reference-platforms-deliverables
168*4466cf82SDaniel Boulby.. _Development Studio (Arm-DS): https://developer.arm.com/Tools%20and%20Software/Arm%20Development%20Studio
16999a99eb4SZelalem.. _Linaro Release 20.01: http://releases.linaro.org/members/arm/platforms/20.01
170