Skip to content

Synopsys ARC Processors and GNU Toolchains for Them

Yuriy Kolerov edited this page Jun 7, 2023 · 10 revisions

Synopsys ARC Processors

Synopsys ARC processors are represented by three generations of Instruction Set Architectures (ISA). Each ISA consists of one or more processor families with different microarchitectures. All cores may be configured to support little or big endianness. All families except ARC EM and ARC 600 families may be configured to support running complex operation systems like Linux. Some of them are listed here:

  1. ARCv1 ISA:

  2. ARCv2 ISA:

  3. ARCv3 ISA:

You can find programmer's reference manuals and datasheets for each core on corresponding web pages.

Toolchains for Baremetal Targets

GNU toolchains for ARC processors consist of GCC, Binutils and GDB. Newlib standard library is used for building baremetal applications. This table depicts which GCC driver should be used depending on ISA:

ISA Driver/Triplet
ARCv1 arc-elf32-gcc
ARCv2 arc-elf32-gcc
ARCv3 arc64-elf-gcc

Note that binaries for both ARCv1 and ARCv2 may be built using a single arc-elf32-gcc driver. It means that there is a single toolchain for two ISAs.

Toolchains for Linux Targets

There is a set of GNU toolchains for ARC processors which allow to build and debug applications for Linux. The Linux kernel itself for ARC processors may be built using both baremetal and Linux toolchains.

Linux toolchains are presented for all ARC processor families except ARC EM arc ARC 700. Two Linux standard libraries are currently supported: glibc and uClibc-ng. This table depicts which GCC driver should be used depending on CPU family:

Family Standard library Driver/Triplet
ARC 700 glibc arc-linux-gnu-gcc
ARC 700 uClibc-ng arc-linux-uclibc-gcc
ARC HS3x/4x/4xD glibc arc-linux-gnu-gcc
ARC HS3x/4x/4xD uClibc-ng arc-linux-uclibc-gcc
ARC HS5x uClibc-ng arc32-linux-uclibc-gcc
ARC HS6x glibc arc64-linux-gnu-gcc

Note, that in case of Linux toolchains, arc-linux-* drivers for ARC 700 and ARC HS are different toolchains! For example, if you want to build applications for ARC 700 Linux targets, then you need to use a particular toolchain for ARC 700 and the same is applicable for ARC HS, though they have the same names.

How to Get The Toolchain

There are several ways of getting the toolchain:

  1. Download the latest release of the prebuilt toolchain on the release page of main toolchain's repository. Also, Eclipse IDE is available for downloading which is shipped with some of toolchains and OpenOCD.
  2. You can build any toolchain yourself using Crosstool-NG build system. Follow instructions presented in README.md of main toolchain's repository on GitHub.
  3. You can build some of toolchains using scripts from arc-gnu-toolchain repository. Theses scripts are based on the RISC-V scripts.
Clone this wiki locally