wiki:Developer/Eclipse/Information

Version 8 (modified by Sh, on 02/09/09 at 14:04:52) (diff)

/* TODO List */

RTEMS Eclipse Information

Introduction

RTEMS is a free real-time operating system that must compete against commercial closed source offerings that have very impressive looking GUI oriented Development Environments. The RTEMS Project has spent years honing RTEMS and tuning it to be a competitive run-time and it certainly the technical capabilities to compete. But often RTEMS gets dinged for not having a "pretty face". Projects in this category address that deficiency.

Eclipse is an open source Integrated Development Environment (IDE) which has become very popular in the real-time embedded systems community. For RTEMS to continue to compare favorably against its commercial proprietary competition, Eclipse support is an important feature. Eclipse has a plug-in architecture and there are already multiple plug-ins and add-ons for embedded development.

This is a very open ended project which has a number of steps based upon subprojects or plugins which need to be made available to RTEMS developers.

See Embedded and Device Development as a reference.

Since RTEMS has multiple targets, this project would focus on getting Eclipse working nicely with multiple targets. There are over half a dozen simulators which are capable of supporting a multithreaded RTEMS application and a few of those simulate target hardware with networking capabilities. There are existing RTEMS BSPs that run on simulators so the person(s) working on this project would not require special target hardware or anything that costs to verify that their implementation works with multiple hardware configurations.

GNU Debugger Integration

This can be accomplished using the Zylin Embedded CDT plugin. There may be other RTEMS specific items that could enhance the debugger interface in Eclipse. Perhaps when using CEXP and the RTEMS GDB stub, you can build a module and click a button to download it to the target? CDT also supports the GDB.

Interaction with the Target System

There are Eclipse plug-ins that provide serial terminal emulation, Telnet, and FTP connections to the remote target. Using these would provide a more integrated RTEMS development/debug environment. This functionality is currently provided by the Eclipse Remote Systems Explorer (RSE) plugin.

Integration Eclipse Device Software Development Platform

The Eclipse DSDP is an effort to use eclipse as a standard way of developing, debugging and otherwise interacting with embedded devices.

There are many sub-projects in there, but some of the interesting ones are: Device Debugging and Target management.

One of the interesting aspects of this is how Wind River has adopted Eclipse as the platform for vxWorks and Embedded Linux development. It appears that they are putting significant effort into contributing code back to the DSDP platform and trying to help create open standards for this type of development environment. It would be nice if this work ends up meaning that an Eclipse platform could talk to a target server on either vxWorks, Linux or RTEMS.

RTEMS Eclipse Plug-in Project

Repository

The project repository is hosted by OAR and is available via <tt>:pserver:anoncvs@www.rtems.org:/usr1/CVS</tt> and module <tt>rtems-eclipse-plug-in</tt>. It contains the following submodules:

  • <tt>org.rtems.cdt</tt>: Plug-in for further development
  • <tt>org.rtems.feature</tt>: Deployable components
  • <tt>org.rtems.update</tt>: Update site
  • <tt>org.rtems.cdt.toolchain</tt>: Initial plug-in
  • <tt>org.rtems.cdt.toolchain2</tt>: Temporary development plug-in (obsolete)

Current Status

The plug-in is usable and tested on Cygwin, MinGW, MacOS X and UNIX. See also the user guide.

Features

  • Extends the CDT GNU toolchain with the RTEMS tools (cross-compiler, linker, assembler, archiver)
  • No dependency on special environment variable settings (including PATH)
  • Automatic detection of tool options via the standard Makefile interface

TODO List

  • Project types for libraries and loadable modules (CEXP)
  • Project templates
  • Automatic detection of default paths for platforms (Cygwin and MinGW) and RTEMS base installation and BSPs
  • RTEMS manager inclusion/exclusion via the Project Properties Pages (applies to executables only)
  • GDB and Qemu Launch Configurations: attach debugger or launch simulator/emulator with your project's product
  • Ability to disable the usage of the discovered compiler search path and/or options
  • More stable scanner configuration (this is more a CDT internal issue), scanner is currently not working for Cygwin
  • Per configuration platform and BSP paths (this simplifies migration)

Initial Implementation

The publish of initial implementation of RTEMS Eclipse Plug-in came with some accidents. It's Joel Sherrill who first discovered the appearance of such implementation. One night the initial implementer was uploading screen shots to the wiki site to document the usage of the plug-in, there were problems with uploading files, and later the wiki site became inaccessible. The implementer thought he might bring down the wiki site, so went to sleep. On the next morning, somehow these accidents alerted Joel. Except images of Eclipse with RTEMS awareness, he could not find the email address of the "culprit", thus he yelled out on the mailing list, and so came the plug-in implementation. Daron Chabot and Sebastian Huber immediately joined to further develop it.

The initial plug-in has most features of a full-fledged Eclipse/CDT IDE with ordinary GNU tool chain. After setup, except typing in project name and post build commands, with only mouse clicks, it can finish the whole process of:

  • Generate skeleton code
  • Compile
  • Link
  • Generate boot image and externally start up the system (in simulator)
  • Setup break points, and hook GDB to the remote target

The detail document for the initial implementation including its limitations can be found here: RTEMS Eclipse Plug-in?.

Revision History

  • 2008-12-04: Sebastian Huber finished the development of the alternative implementation and provided a common basis for further development.
  • 2008-11-23: Daron Chabot made it work on Mac and Linux.