GNU MCU Eclipse plug-ins v4.2.1-201711101735 released
Version 4.2.1-201711101735 is a major release; thanks to a contribution from SiFive, the project was enhanced with a template plug-in to create projects for the SiFive boards.
Important: the public URL for the new v4.x Eclipse update site is (
For convenience, the plug-ins are also available as GNU MCU Eclipse IDE for C/C++ Developers, which packs together the Eclipse IDE for C/C++ Developers with the GNU MCU Eclipse plug-ins.
New RISC-V project template
A new template plug-in was added to create projects for the SiFive boards; it can be accessed from the New → C/C++ Project menu, the SiFIve C/C++ Project:
The template can generate both C and C++ projects. The difference between them is reflected in the type of the files generated in the top
src folder; for C++, most of the files are
.cpp, while for C, as expected, all files are
However, please note that this selection refers to the application files only; internally, the support packages are mainly written in C++, all with equivalent C API. For those with little C++ experience, this might be a good opportunity to start studying C++, by comparing the differences between the C and C++ projects generated with the same options.
The wizard has many configuration options:
It currently supports three boards, HiFive1, E31 Arty and E51 Arty.
The wizard can generate Blinky vs Empty projects, Freestanding vs POSIX, with or without support for tracing, with or without various warnings enabled.
New RISC-V toolchains
In addition to the initial
riscv64-unknown-elf- toolchain, support for following toolchains was added:
- GNU MCU RISC-V GCC (
- RISC-V GCC/Linux (
- RISC-V GCC/RTEMS (
- Custom (
Separate paths for each toolchain can be configured in the Preferences… → MCU → Global RISC-V Toolchain Paths.
In the same page it is possible to set the default toolchain used when creating new projects.
riscv-none-embed- toolchain is available starting with version 7.2.0-1-20171109 of the GNU MCU Eclipse RISC-V GCC toolchain, just released.
- [Issue:#247] - support for an explicitly embedded RISC-V toolchain (
riscv-none-embed-gcc) was added
- [Issue:#240] - support for Linux & rtems RISC-V toolchains was added
- [Issue:#249] - add GUI support to configure the TCL port (useful for multi-core debug sessions)
- [Issue:#243] - when one of the remote servers did not respond, the packs plugin was waiting very long before timing out; shorter connect & read timeout were added
- [Issue:#217] for multi-core debug session, it is sometimes necessary to start the OpenOCD server separately from the GDB client; to allow this a Start GDB session was added to OpenOCD GUI, to allow multiple GDB instances to attach to the same OpenCOD
- in the debug plug-ins, after the field used to configure the GDB executable, a new field showing the Actual executable was added
- [Issue:#242] - the debug plug-ins failed with an exception if some of the numeric fields were empty (the telnet/gdb port); fixed;
- [Issue:#246] - substituting macros in some of the fields was not done completely; fixed, now dynamic variables are also substituted;
- [Issue:#222] - the
-fno-commonoption was shown twice in the RISC-V build plug-in settings page; fixed, duplicate removed;
- [Issue:#224] - when the GDB server is started without starting the client, do not wait for the confirmation message, since it is expected that the user is responsible for the synchronisation. This allows to use
-l filenameto log debug messages, otherwise not possible since the echo message is written to the log, not the stderr stream.
- the new plug-ins cannot be installed on older Eclipses; for this, use the latest 3.x version, available from the deprecated update site (
- starting with 4.x, the plug-ins have IDs prefixed with
ilg.gnumcueclipse., while the old IDs were prefixed with
ilg.gnuarmeclipse.; being completely different, this allows to install the new plug-ins alongside the old ones, but this should be avoided, and the old plug-ins should be manually uninstalled; preferably a new Eclipse instance should be used.