wiki:Packages/EDROOM

Version 15 (modified by Chris Johns, on Dec 11, 2014 at 2:25:42 AM) (diff)

--

EDROOM

RTEMS support for EDROOM was implemented by Aitor.Viana.Sanchez at esa.int and announced in this message http://www.rtems.com/pipermail/rtems-users/2007-June/018512.html

EDROOM is a tool inspired on ROOM and UML2 methodologies. This tool provides facilities for modeling real-time systems using the object oriented paradigm and it integrates an automatic Embedded C++ code generator. EDROOM lets the designer describe the structure, communication and behavior of the real-time system using diagrams. Both the structure and the behavior can have several levels of definition to make easier the iterative design of the system. The components of the multilevel structure are communicated with each other by message passing through their ports.

EdroomEditor.JPG

The Embedded C++ compliant generated code is supported over a EDROOM services library that has been redesigned to run on a tiny real time kernel. This library has a two level structure with an extremely thin kernel interface in order to facility the port to any kernel. The interface specification is provided with a group of code test bench to validate the ports. Other improvement added to EDROOM is the static control of all memory resources in order to completely avoid the dynamic allocation.

The EDROOM tool is structured as follows:

EDROOMLayer.JPG

The upper layer is platform independent and It offers the EDROOM services to the automatically generated code. The lower, on the other hand, is platform dependent and requires the services directly to the RTOS, this is actually the layer ported to RTEMS. It includes only five basic primitive class that must be implemented for every RTOS EDROOM is working atop: Pr_Task, Pr_Semaphore, Pr_Time and Pr_IRQ_Event, Pr_IRQ_Manager.

The EDROOM service library is Embedded C++ compliant. The use of templates has been eliminated and no multiple inheritance is employed. The exception handling, also, has been established as optional. All the memory management has been redesigned to be statically predefined without the use of dynamic memory allocation.

The EDROOM service implements the component message queues from static data pools and emulates their dynamic behavior. The data attached to the messages are also allocated from pools whose dimensions are defined by the user in the behavior view. Both kind of pools are managed in a transparent way for the EDROOM service and it is not necessary the user be worried to deallocated them. The high level primitives exported for the EDROOM service has been reduced to 10 in order to make the modeling task as simple as possible.

Finally, the structure view provided a context menu to fix the dimension of each component stack and its message queue.