diff --git a/content/install-guides/llvm-embedded.md b/content/install-guides/llvm-embedded.md index a562536779..fd801c4001 100644 --- a/content/install-guides/llvm-embedded.md +++ b/content/install-guides/llvm-embedded.md @@ -1,113 +1,101 @@ --- -### Title the install tools article with the name of the tool to be installed -### Include vendor name where appropriate -title: LLVM Embedded Toolchain for Arm -description: Install the LLVM Embedded Toolchain for Arm on Windows, macOS, or Linux and verify clang for Cortex-M embedded development. +title: Arm Toolchain for Embedded +description: Install Arm Toolchain for Embedded on Windows, macOS, or Linux and verify clang for bare-metal Arm embedded development. -### Optional additional search terms (one per line) to assist in finding the article additional_search_terms: - clang - llvm - compiler - open source - cortex-m +- ATfE +- LLVM Embedded Toolchain -### Estimated completion time in minutes (please use integer multiple of 5) minutes_to_complete: 10 -### Link to official documentation -official_docs: https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm +official_docs: https://github.com/arm/arm-toolchain/blob/arm-software/arm-software/embedded/README.md author: Ronan Synnott -### PAGE SETUP -weight: 1 # Defines page ordering. Must be 1 for first (or only) page. -tool_install: true # Set to true to be listed in main selection page, else false -multi_install: false # Set to true if first page of multi-page article, else false -multitool_install_part: false # Set to true if a sub-page of a multi-page article, else false -layout: installtoolsall # DO NOT MODIFY. Always true for tool install articles +weight: 1 +tool_install: true +multi_install: false +multitool_install_part: false +layout: installtoolsall --- -The [LLVM Embedded Toolchain for Arm](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm) allows Cortex-M developers to build projects with the `clang` compiler. +Arm Toolchain for Embedded (ATfE) is a free, open-source LLVM-based toolchain for bare-metal Arm development. It targets Cortex-M, Cortex-R, and Cortex-A processors from Armv6-M and newer, and includes `clang`, `lld`, `libc++`, `compiler-rt`, and `picolibc`. -[Pre-built binaries](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases) are available for Windows (x86_64), macOS (x86_64 and Apple Silicon), and Linux (x86_64 and AArch64) hosts. +ATfE is the successor to the LLVM Embedded Toolchain for Arm. The [LLVM Embedded Toolchain for Arm repository](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm) is deprecated; use ATfE for LLVM 20 and later. -## Install the LLVM Embedded Toolchain for Arm on Windows {#windows} +Pre-built binaries are available for Windows (x86_64), macOS (universal), and Linux (x86_64 and AArch64) hosts. -To download the latest release from GitHub, copy and paste the following URL into your browser: - -{{% notice Note %}} -The following step uses LLVM Embedded Toolchain for Arm version 19.1.5. The same step works with other versions. Replace the file used in this step with the file for your version of choice. To find the latest version, see [LLVM Embedded Toolchain releases](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases). +{{% notice Toolchain version %}} +The following steps use Arm Toolchain for Embedded version 22.1.0. The same steps work with other versions. Replace the version number in file names and URLs with your version of choice. To find the latest version, see [Arm Toolchain releases](https://github.com/arm/arm-toolchain/releases). {{% /notice %}} -```url -https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Windows-x86_64.zip +## Install Arm Toolchain for Embedded on Windows {#windows} + +To download the latest release from GitHub, copy and paste the following URL into your browser: + +```console +https://github.com/arm/arm-toolchain/releases/download/release-22.1.0-ATfE/ATfE-22.1.0-Windows-x86_64.zip ``` -Unzip the download to a location of your choice on your host machine. +Extract the zip file to a location of your choice on your host machine. -Open Windows `Control Panel` and add the LLVM `bin` directory to the `Path`. +Open Windows **Control Panel** and add the ATfE `bin` directory to the **Path**. -Open a `Command Prompt` and [test your installation](#test). +Open a **Command Prompt** and [test your installation](#test). -## Install the LLVM Embedded Toolchain for Arm on macOS {#macos} +## Install Arm Toolchain for Embedded on macOS {#macos} To download the latest release from GitHub, copy and paste the following URL into your browser: -{{% notice Note %}} -The following step uses LLVM Embedded Toolchain for Arm version 19.1.5. The same step works with other versions. Replace the file used in this step with the file for your version of choice. To find the latest version, see [LLVM Embedded Toolchain releases](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases). -{{% /notice %}} - -```url -https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Darwin-universal.dmg +```console +https://github.com/arm/arm-toolchain/releases/download/release-22.1.0-ATfE/ATfE-22.1.0-Darwin-universal.dmg ``` -Install the toolchain by clicking the dmg file and following the instructions. +Install the toolchain by opening the `.dmg` file and following the instructions. -Add the LLVM `bin` directory to your `PATH`: +Add the ATfE `bin` directory to your `PATH`: ```command -export PATH=/Applications/LLVM-ET-Arm-19.1.5-Darwin-universal/bin:$PATH +export PATH=/Applications/ATfE-22.1.0-Darwin-universal/bin:$PATH ``` -The toolchain binaries might be quarantined. Navigate to the `bin` directory and use the `xattr` command to remove the quarantine: +The toolchain binaries might be quarantined. Navigate to the `bin` directory and use the `xattr` command to remove the quarantine: -``` command -cd /Applications/LLVM-ET-Arm-19.1.5-Darwin-universal/bin +```command +cd /Applications/ATfE-22.1.0-Darwin-universal/bin find . -type f -perm +0111 | xargs xattr -d com.apple.quarantine ``` You can now [test your installation](#test). -## Install the LLVM Embedded Toolchain for Arm on Linux {#linux} +## Install Arm Toolchain for Embedded on Linux {#linux} -The following steps assume `Ubuntu Linux` on an `AArch64` host. Modify the filenames and paths as needed for other hosts. +The following steps assume Ubuntu Linux on an AArch64 host. Modify the filenames and paths as needed for other hosts or x86_64 systems. Download the latest release using `wget`: -{{% notice Note %}} -The following commands use LLVM Embedded Toolchain for Arm version 19.1.5. The same commands work with other versions. Replace the file used in these steps with the file for your version of choice. To find the latest version, see [LLVM Embedded Toolchain releases](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases). -{{% /notice %}} - ```command -wget https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Linux-AArch64.tar.xz +wget https://github.com/arm/arm-toolchain/releases/download/release-22.1.0-ATfE/ATfE-22.1.0-Linux-AArch64.tar.xz ``` -Open a terminal application and use `tar` to extract the file: +Use `tar` to extract the file: ```command -tar xfJ LLVM-ET-Arm-19.1.5-Linux-AArch64.tar.xz -C $HOME +tar xfJ ATfE-22.1.0-Linux-AArch64.tar.xz -C $HOME ``` -Add the LLVM `bin` directory to your `PATH`: +Add the ATfE `bin` directory to your `PATH`: ```command -export PATH=$HOME/LLVM-ET-Arm-19.1.5-Linux-AArch64/bin:$PATH +export PATH=$HOME/ATfE-22.1.0-Linux-AArch64/bin:$PATH ``` -## Test the LLVM Embedded Toolchain installation {#test} - -You can now test your installation. +## Test the installation {#test} ### Verify the clang installation @@ -120,17 +108,18 @@ clang --version The output is similar to: ```output -clang version 19.1.5 +clang version 22.1.0 Target: aarch64-unknown-linux-gnu Thread model: posix -InstalledDir: /home/ubuntu/LLVM-ET-Arm-19.1.5-Linux-AArch64/bin +InstalledDir: /home/ubuntu/ATfE-22.1.0-Linux-AArch64/bin +Arm Toolchain ID: E0075 (44010d72) ``` ### Build a sample application with clang -Use a text editor to create an example source file with the name `hello.c` and the following code: +Use a text editor to create an example source file named `hello.c` with the following code: -```C +```c #include int main() @@ -140,41 +129,41 @@ int main() } ``` -A number of compiler options are needed. For more information, see [Using the toolchain](https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm#using-the-toolchain). +Several compiler options are needed. For more information, see [Using the toolchain](https://github.com/arm/arm-toolchain/blob/arm-software/embedded/README.md#using-the-toolchain). -To build for `Armv6-M`, run: +To build for Armv6-M, run: ```command clang --target=armv6m-none-eabi -fno-exceptions -fno-rtti -lcrt0-semihost -lsemihost -T picolibc.ld -o hello_v6m hello.c ``` -To build for `Armv7-M`, run: +To build for Armv7-M, run: -``` +```command clang --target=armv7m-none-eabi -fno-exceptions -fno-rtti -lcrt0-semihost -lsemihost -T picolibc.ld -o hello_v7m hello.c ``` ### Run the example applications -The applications can be run on [Fixed Virtual Platforms (FVP)](/install-guides/fm_fvp/fvp/). +The applications can be run on [Fixed Virtual Platforms (FVP)](/install-guides/fm_fvp/fvp/). {{% notice Note %}} There is no FVP release for macOS. {{% /notice %}} -To run the `Armv6-M` example on `Cortex-M0` FVP: +To run the Armv6-M example on a Cortex-M0 FVP: ```command FVP_MPS2_Cortex-M0 -a hello_v6m ``` -To run the `Armv7-M` example on `Cortex-M3` FVP: +To run the Armv7-M example on a Cortex-M3 FVP: ```command FVP_MPS2_Cortex-M3 -a hello_v7m ``` -You'll see the `hello` message on the console, as well as other diagnostic output from the FVP: +The output includes the `hello` message along with diagnostic output from the FVP: ```output telnetterminal1: Listening for serial connection on port 5000 @@ -183,4 +172,5 @@ telnetterminal0: Listening for serial connection on port 5001 hello Info: /OSCI/SystemC: Simulation stopped by user. ``` -You're now ready to use LLVM Embedded Toolchain for Arm. + +You're now ready to use Arm Toolchain for Embedded.