wiki:Developer/Eclipse/Information
Notice: We have migrated to GitLab launching 2024-05-01 see here: https://gitlab.rtems.org/

Version 14 (modified by Danielcode, on 12/10/10 at 18:41:09) (diff)

/* GNU Debugger Integration */

RTEMS Eclipse Information

RTEMS Eclipse Plug-In Setup

There is a plug-in available for RTEMS development with Eclipse. It is based on CDT. See also the user guide.

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 has 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 (C/C++ Development) 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.

FindBugs? Eclipse Plugin

FindBugs is a defect detection tool for Java that uses static analysis to look for more than 200 bug patterns, such as null pointer dereferences, infinite recursive loops, bad uses of the Java libraries and deadlocks. FindBugs? can identify hundreds of serious defects in large applications (typically about 1 defect per 1000-2000 lines of non-commenting source statements). FindBugs? is open source, has been downloaded more than 230,000 times and is used by many major companies and financial institutions.

Using this plugin one can make his life easier doing Real-time Java Programming by detecting known bug patterns in software.

The GNU Java Compiler, currently doesn't work with RTEMS, see 1 but AERO­VM ­ Hard Real­Time Java Virtual Machine seems to work on boards with Leon processors.

(this plugin may be of use in the future when the GCC­Java will work with RTEMS)

See also: http://rtjava.blogspot.com/search/label/RTSJ

NDS Managedbuilder

Provided that RTEMS can run on arm/nds (Nintendo DS) one can make use of NDS Managedbuilder, an Eclipse CDT plugin for C/C++ development for the Nintendo DS target system. It supports DevkitPro? compiler/debugger.

  • easy to use managed build system based on the GNU toolchain
  • supports C and C++ projects, also ASM Programming
  • different project types
  • NDS ROM - ARM9 Sources + NDS Tool
  • NDS ARM7 Code - ARM7 Sources + ObjCopy?
  • NDS ARM7 Library - generates a static link lib
  • NDS ARM9 Library - generates a static link lib
  • includes ObjCopy? and NDS-Tool in the toolchain
  • integrate the ARM gdb debug server

CVS Version Tree

Eclipse Version Tree Plugin is an easy to use, graphical version tree for project artifacts hosted in a CVS repository. It is a graphical replacment for Eclipse resource history. Supports different layout styles, customization and convenience features

CVS-Git integration

EGit plugin

EGit is an Eclipse Team provider for the Git version control system. Git is a distributed SCM, which means every developer has a full copy of all history of every revision of the code, making queries against the history very fast and versatile

Using Git in conjunction with CVS would make some people happy regarding their choice of version control system, given that Git has now become quite popular and is considered to be quite fast. (see Best Practices for using Git with CVS )

Providing other means of doing version control will make RTEMS development more flexible.

There is a repository for Git exports of the various modules in the CVS repository which can be found at http://www.rtems.org/ftp/private/git/

For tools that aid in the transition from CVS to Git easier see: gitcvs-migration and git-cvsimport

Some people even use Git as a CVS client

Plug-in Development Environment

Plug-in Development Environment (PDE) , which provides tools to create, develop, test, debug, build and deploy Eclipse plug-ins, fragments, features, update sites and RCP products.

Using Eclipse PDE we can add more functionality to the current RTEMS Eclipse plugin or create a new plugin (maybe adapt some plugin suggested or find another one) so that it is useful to the RTEMS community.

Like a Wizard/Editor? for Eclipse to configure RTEMS for a certain Application e.g. max number of tasks, semaphores (http://www.rtems.com/wiki/index.php/ApplicationConfigurationGUI) or another project is to support RTEMS as a run-time in Argo UML (http://www.rtems.com/wiki/index.php/ArgoUML)

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?.

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.