Creation Review

Type
Creation
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Proposal

Eclipse Embedded CDT (C/C++ Development Tools)

Monday, September 30, 2019 - 09:21 by Liviu Ionescu
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

The project was created in 2006, as GNU ARM Eclipse, and in 2017, when support for RISC-V was added, it was rebranded as GNU MCU Eclipse. The current web site is https://gnu-mcu-eclipse.github.io.

Scope

This project provides a family of Eclipse plug-ins for multi-platform embedded C/C++ ARM and RISC-V development. The managed build plug-ins are based on CDT, and the debug plug-ins are based on the GDB Hardware plug-ins.

Description

The Eclipse Embedded C/C++ plug-ins allow to create, build, debug and in general to manage ARM & RISC-V projects (executables and static/shared libraries, in both 32 and 64-bit versions) with the Eclipse framework. The plug-ins run on Windows, macOS and GNU/Linux. 

The main features are:

  • create/build/manage embedded ARM/AArch64/RISC-V applications, using the managed project features of Eclipse CDT, i.e. without having to manually create and maintain makefiles
  • provide ready to run templates for some ARM Cortex-M processors
  • provide debugging support via JTAG/SWD
  • provide a special view to examine and modify peripheral registers during debug sessions

Other features of the cross build plug-in are:

  • supports a wide range of 32 and 64-bit toolchains
  • provides extra build steps to generate the binary files required to write the controller flash memory
  • supports the automatic discovery of system paths and macro definitions for accurate indexing and auto-completion
  • provides common options for all toolchains
  • provides fully configurable toolchain definitions
  • provides advanced toolchain path management
  • improved project portability
Why Here?

The Eclipse IoT Working Group already serves as an incubator for projects and technology that helps with the development of embedded solutions. As an independent project, GNU MCU Eclipse already proved during many years that is is a convenient solution for building many embedded projects. A better integration with other Eclipse Foundation projects will further increase the project value (ease of use, visibility, etc).

Future Work

Bugs fixes and enhancements will be provided.

New technologies, like alternate build mechanisms, new project templates engines, new project configuration tools are planned.

Project Scheduling

There are not fixed schedule releases; they generally reflect either new features being added, or bug fixes, and do not depend on CDT or Eclipse releases at all. Releases are available from an Eclipse p2 update site and previous versions are available as archives.

As a convenience for new users, the plug-ins are also available as EPP packages, generated some time after the Eclipse Simultaneous Releases.

Project Leads
Committers
Anton Krug (This committer does not have an Eclipse Account)
Mentors
Initial Contribution

The initial contribution will be based on the existing GNU MCU Eclipse GitHub project.

Source Repository Type

I updated the project name; after the approved trademark Eclipse Embedded CDT it includes the explanation (C/C++ Development Tools), similarly to Eclipse CDT (C/C++ Development Tooling)

The existing Eclipse C/C++ Development Tooling (CDT) project provides more generic tools (independent of processor architecture) for C/C++ embedded developers, including the GDB Hardware Debugging launch delegate and the Cross GCC toolchain description. The GNU MCU Eclipse plugins build on these generic tools in part, but there has been some divergence in implementation. It will be important to clarify the distinction between CDT and the new project and how the tooling they generate will interrelate in the future. Two possible scenarios:

  • The CDT tooling continues to provide generic support for embedded C/C++ developers while the new Embedded CDT project focusses on support for specific architectures and devices, adding valuable usability. This would mirror the historic roles of these developments. In this scenario, some of the more generic code might be migrated from the Embedded CDT repository to the CDT repository over time to reduce divergence. We should consider using a project name that emphasises this device-specific focus.
  • The Embedded CDT project becomes the home for all future embedded-related C/C++ tooling development, as the proposed project name suggests. Tooling support for C/C++ embedded development within the CDT project might be migrated to the Embedded CDT repository over time.