Skip to main content

GNU MCU Eclipse RISC-V Embedded GCC v7.1.1-1-20170702-* released

· 3 min read

Version 7.1.1-1-20170702-0625 is the first release of GNU MCU Eclipse RISC-V Embedded GCC. It includes binaries for Windows, macOS and GNU/Linux.

Download

The binary files are available from GitHub Releases.

Compliance

This release closely follows the official RISC-V distribution maintained by SiFive.

The current version is based on project riscv/riscv-gnu-toolchain, tag v20170612 (commit f5fae1c) from June 12th, which depends on the following:

The supported architectures (-march=) are:

  • rv32i[m][a][f[d]][c]
  • rv32g[c]
  • rv64i[m][a][f[d]][c]
  • rv64g[c]

The supported ABIs (-mabi=) are:

  • ilp32 (32-bit, soft-float)
  • ilp32f (32-bit with single-precision in registers and double in memory, niche use only)
  • ilp32d (32-bit, hard-float)
  • lp64 (64-bit long and pointers, soft-float)
  • lp64f (64-bit long and pointers, with single-precision in registers and double in memory, niche use only)
  • lp64d (64-bit long and pointers, hard-float).

The supported libraries are:

march=rv32i/mabi=ilp32
march=rv32im/mabi=ilp32
march=rv32iac/mabi=ilp32
march=rv32imac/mabi=ilp32
march=rv32imafc/mabi=ilp32f
march=rv64imac/mabi=lp64
march=rv64imafdc/mabi=lp64d

Please note that not all possible combinations of architecture and ABI have libraries.

Changes

Compared to the original RISC-V version, there are no functional changes; the same architecture and API options are supported, and the same combinations of libraries (derived from newlib) are provided.

newlib-nano

The only notable addition is support for newlib-nano, using the --specs=nano.specs option. For better results, this option must be added to both compile and link time (the next release of the GNU MCU Eclipse plug-ins will add support for this).

If no syscalls are needed, --specs=nosys.specs can be used at link time to provide empty implementations for the POSIX system calls.

The nano versions of the libraries are compiled with -Os -mcmodel=medlow, while the regular versions are compiled with -O2 -mcmodel=medany.

Documentation

Another addition compared to the SiFive distribution is the presence of the documentation, including the PDF manuals for all tools.

Binaries

Binaries for Windows, macOS and GNU/Linux are provided. For Windows and macOS, separate installable and plain archives are provided. For Windows and GNU/Linux, both 32/64-bit binaries are provided.

Instructions on how to install them are available in the project README.

For better control and repeatability, the build scripts use Docker containers; all files required during builds are available as a separate gnu-mcu-eclipse/riscv-none-gcc-build project.

Known problems

[2017-09-14 update] Soon after this release was used in real projects, it was discovered that the general configuration of the toolchain was intended more to applications that include a kernel-like environment, and less to bare-metal environments. The main problems are:

  • the newlib configuration does not use the underscore syscall function, but the direct names (like write() instead of _write()), calls that are always forwarded to libgloss
  • the compiler configuration always links libgloss to the application; libgloss implements all system calls via traps to a unix like kernel.

Both problems were fixed in the v7.1.1-2-20170912 release.

Checksums

The SHA-256 hashes for the files are:

a723d8c6870d1808882ea2eaa630a8c60c5cb6bd25dc238091d2f9738298c44a ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-debian32.tgz

1d36d44221cde15572673019f76727883ce543a7d76d2e10f07ae1a901c07bbb ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-debian64.tgz

75e71fd37c3749cd892e020a4562c0c10535719e4bb573371d957fb8f16f790e ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-osx.pkg

7940417bc4fbd537b38866914b20375f89417ac0ba90399a2d2c510d0c802497 ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-osx.tgz

b082bedc09af08ca56e218dba87e8e69b3d100042bdbbe3821fd2ef72f33e9f0 ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-win32-setup.exe

7fbecec74060be8b4075bed6d2b0f201421614f53dd134ce7ffdd18df79dfce9 ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-win32.zip

ba8fd7b53e2cad2092f39c105c3d4a734546c89f807df8e804dd6db40c23f7fc ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-win64-setup.exe

30a37efe5c5bfaf9def8d06249ff471c8d81d37e01d33caf4fff928c8cfe7670 ?
gnu-mcu-eclipse-riscv-none-gcc-7.1.1-1-20170702-0625-win64.zip