Introduction

Arm Compiler provides the earliest, most complete, and most accurate support for the latest architectural features and extensions of the Arm architecture. Arm Compiler supports all the latest Arm Cortex, Neoverse and SecurCore processors, including cores that are in development.

Arm Compiler is a mature toolchain that is tailored to the development of bare-metal software, firmware, and Real-Time Operating System (RTOS) applications. Arm Compiler is used by leading companies in a wide variety of industries, including automotive (ISO 26262), consumer electronics, industrial (IEC 61508), medical (IEC 62304), networking, railway (EN 50128), storage, and telecommunications. For HPC and scientific applications, see the Linux user-space C/C++ Compiler and Linux user-space Fortran compiler.

The Arm Compiler includes many powerful space-saving and performance-enhancing optimization techniques, including low-level microarchitecture-specific instruction scheduling, unused section elimination, and aggressive Link-Time Optimization (LTO).

Components

  1. armclang:
    1. Is built on modern LLVM and Clang technology
    2. Supports GNU syntax assembly
    3. Is highly compatible with source code originally written for GCC
    4. Implements specifications including ANSI/ISO C and C++, ABI for the Arm architecture, ABI for the 64-bit Arm architecture, and Arm C Language Extensions (ACLE)
  2. armlink: Feature-rich dedicated embedded linker that combines objects and libraries to produce an executable
  3. Arm C libraries: Optimized by Arm for performance and code density, and include the tiny MicroLib for deeply embedded applications.
  4. Arm C++ libraries: Libraries based on the LLVM libc++ project
  5. fromelf: Image conversion utility and disassembler
  6. armar: Archiver that enables sets of object files to be collected together

Workflow

Use cases

Developing efficient software

From low-cost, memory-constrained embedded systems to high-end complex heterogeneous systems, Arm Compiler is optimized for a wide range of embedded workloads, with performance and code density that can be tuned for your specific target application.

Verifying system design

Developed in collaboration with Arm’s processor and architecture projects, Arm Compiler is the ideal toolchain for verifying your design. Arm Compiler provides the earliest, most complete, and most accurate support for the latest Arm cores and architectural extensions.

Exploring Arm architecture features

Selecting the right Arm IP is one of the most important decisions for your SoC design. Combined with Arm Flexible Access, Arm Compiler lets you evaluate which Arm solution best suits your application and market requirements.

Building safety-critical code

Developing complex safety-related applications can be challenging and time-consuming. Specific releases of Arm Compiler and the C Libraries have been certified by TÜV SÜD for development to the most demanding Safety Integrity Levels (SIL), accelerating your certification process.

Developing for secure systems

Some critical systems, like Secure firmware, have specific security requirements. Arm Compiler lets you generate execute-only code, and securely interface between Secure and Non-secure software in systems that implement TrustZone for Armv8-M.

Get Arm Compiler

Try Arm Compiler

Get a free 30-day license for Arm Compiler in Development Studio, or through a seven-day evaluation of Keil MDK Professional.

Evaluate

Already have a license?

Install: Arm Compiler is included with our development suites Development Studio or Keil MDK.

Update: To update Arm Compiler in your existing Development Studio or Keil MDK installation, download the latest Arm Compiler.

Arm Compiler for Functional Safety

Get entitlement to the Qualified Arm Compiler for Functional Safety by licensing any of the following:
Arm Development Studio Gold or Platinum edition,
Keil MDK Professional edition,
or a specific qualified Arm Compiler for Functional Safety branch.

Support

Community Forums

Not answered File not recognized: Bad value Error while using RTEMS linker script. 0 votes 91 views 0 replies Started yesterday by Aby Answer this
Not answered ARM MDK 5.29 cannot input Chinese in ANSI 0 votes 52 views 0 replies Started yesterday by Fang Di Answer this
Suggested answer ARM GNU MCU Compiler and Eclipse
  • GNU Arm Eclipse
0 votes 353 views 3 replies Latest yesterday by Ronan Synnott Answer this
Suggested answer How to check images created by different ARM Compilers (Specifically CLANG 6.13.1 vs 6.12)
  • Arm Compiler 6
0 votes 381 views 4 replies Latest 4 days ago by Ronan Synnott Answer this
Answered Is there any reference code for initialize Cortex-A53? 0 votes 289 views 2 replies Latest 6 days ago by zhanglii2011 Answer this
Suggested answer arm-eabi-gdb.exe failed to launch 0 votes 434 views 3 replies Latest 7 days ago by zhanglii2011 Answer this
Suggested answer How to build an OpenCV project using ARM compiler 6
  • Arm Compiler 6
  • Cross compiling
  • Windows 7
0 votes 250 views 2 replies Latest 9 days ago by TakiEddine Answer this
Suggested answer Migrating from armcc to armclang causes section type conflict
  • Arm Compiler 6
  • Compilation error
  • Arm Compiler 5
  • Memory
0 votes 455 views 3 replies Latest 11 days ago by Seng Tak GOH Answer this
Suggested answer Error: L6449E: While processing .
  • Technical discussion
  • Library
  • Arm Support
0 votes 212 views 1 replies Latest 11 days ago by Andy Neil Answer this
Answered Why are dynamically-sized arrays implemented as malloc()?
  • Arm Compiler 5
0 votes 311 views 2 replies Latest 14 days ago by Paul Black Answer this
Suggested answer icc_sre_el2 register not recognised with arm-none-eabi 0 votes 783 views 1 replies Latest 19 days ago by Tamar Christina Answer this
Answered Token-pasting ("##") with armcc 5.06
  • Keil MDK
  • Arm Compiler 5
0 votes 429 views 2 replies Latest 22 days ago by Brandon Price Answer this
Not answered File not recognized: Bad value Error while using RTEMS linker script. Started yesterday by Aby 0 replies 91 views
Not answered ARM MDK 5.29 cannot input Chinese in ANSI Started yesterday by Fang Di 0 replies 52 views
Suggested answer ARM GNU MCU Compiler and Eclipse Latest yesterday by Ronan Synnott 3 replies 353 views
Suggested answer How to check images created by different ARM Compilers (Specifically CLANG 6.13.1 vs 6.12) Latest 4 days ago by Ronan Synnott 4 replies 381 views
Answered Is there any reference code for initialize Cortex-A53? Latest 6 days ago by zhanglii2011 2 replies 289 views
Suggested answer arm-eabi-gdb.exe failed to launch Latest 7 days ago by zhanglii2011 3 replies 434 views
Suggested answer How to build an OpenCV project using ARM compiler 6 Latest 9 days ago by TakiEddine 2 replies 250 views
Suggested answer Migrating from armcc to armclang causes section type conflict Latest 11 days ago by Seng Tak GOH 3 replies 455 views
Suggested answer Error: L6449E: While processing . Latest 11 days ago by Andy Neil 1 replies 212 views
Answered Why are dynamically-sized arrays implemented as malloc()? Latest 14 days ago by Paul Black 2 replies 311 views
Suggested answer icc_sre_el2 register not recognised with arm-none-eabi Latest 19 days ago by Tamar Christina 1 replies 783 views
Answered Token-pasting ("##") with armcc 5.06 Latest 22 days ago by Brandon Price 2 replies 429 views