RTEMS Workout at FOSS.IN

This is the standard workout proposal template provided by the FOSS.IN team.


Aanjhan Ranganathan and Santosh G. Vattam.

Aanjhan Ranganathan is a Masters Student at Ecole Polytechnique Federale de Lausanne(EPFL), Lausanne, Switzerland. He worked on RTEMS as part of Google Summer of Code 2009. His project was MMU Support for RTEMS and he was mentored by Thomas Doerfler. He has been a part of FOSS.IN since 2005 and presented a talk at FOSS.IN last year as well.

Santosh G. Vattam worked on RTEMS Testing as part of Google Summer of Code 2009. His project was Coverage Analysis for RTEMS and he was mentored by Joel Sherrill. He is currently with the FOSSEE group under the supervision of Dr. Prabhu Ramachandran and Mr. Ashokan Pichai. He has been a part of FOSS.IN since 2008.


RTEMS (Real­Time Executive for Multiprocessor Systems) is a free real­time operating system designed for embedded systems. It is a free and open source solution that supports multi processor systems and has been ported to over a dozen CPU architectures and includes support for over 100 embedded boards. RTEMS is designed to support applications with the most stringent real time requirements while being compatible with open standards such as POSIX. It includes optional functional features such as TCP/IP and various file systems while still offering minimum executable sizes under 20 KB in useful configurations. RTEMS is used in a wide variety of application domains including space (NASA and ESA), physics research, communications and industrial control as well as in general computer science research projects.

With such mission critical applications and RTEMS 4.10 release very much in vicinity, testing/stability is of highest priority. Code coverage evaluates efficiency and exposes faulty code which in turn iterates into a more stable system. One major objective of this workout proposal is related to Code Coverage Improvement, a follow up on GSoC 2009 Code Coverage Analysis project and also getting a nice UI based coverage analysis tool functioning for RTEMS.

Most modern processors have Memory Management Unit Hardware built into the processor whose main functions are virtual address translation, memory protection and cache control. As part of MMU Support GSoC 2009 Project, a basic interface and support was implemented. A further extension would be to enable cache memory support in the MMU and clean up the code base and make it ready for integration into 4.10. A POSIX like API support for the MMU functionalities is proposed too.

The ultimate goal of Google Summer of Code 2009 projects were to get integrated into the source tree for 4.10 release with additional improvements. This in combination with several other tasks listed in the Tasks section forms the bonus objectives of this workout.

Also since there are several unlisted easy/medium starter's tasks that are currently in discussion, it would be a nice workout for folks who would like to get their hands dirty with Free Software, especially those who want to dive into the Real time / Embedded world.




  • Programming Language: C
  • Basic bash Shell scripting
  • Interest and high motivation to work on embedded systems (both with arch/board simulators and real boards)
  • Loads of patience (for debugging, debugging embedded systems is not trivial).

Links to overall design/architecture

# Most documentation is available in Online Docs # RTEMS University - Presentations on Introduction, Getting Started etc.

Pre-event Preparation

  • Install and configure a Virtual Machine. Virtual Machine images will be provided.
  • If VM is not preferred by the participant then one can build the RTEMS toolchain and then build RTEMS.
    • Build instructions for the toolchain for Debian/Ubuntu - here?
    • Or for a Quick Start using prebuilt tools
  • Run the custom "Hello World" program to confirm your build is fine.
  • Read basic design docs of RTEMS.


Preliminary Objectives

  • Improving code coverage with libcsupport included. We shall be focusing on the following BSPs:
    • pc386
    • uC5282

since these BSPs work on Free simulators that have coverage enabled and the reports can be generated on the spot quickly. A code coverage of 1500 -2000 bytes during the 5 days would be considered a very good workout.

  • Writing a UI in python for Coverage analysis or getting lcov to work with RTEMS codebase. Will be decided in the coming days.
  • Getting MMU support code from GSOC project cleaned up, add more features as listed on "Future work" section of the GSOC Final report
  • Add the Frame Buffer UI to other BSP's ( i386, and gumstix have it, but gumstix have not been ported with Nano-X).More details here

Complementary Objectives

  • Clean ups and documentation.
  • Fixing easy/medium bugs chosen from the RTEMS Trac.

Existing work

  • Vattam worked on Coverage Analysis as part of GSoC 2009 and he has worked mostly on the SPARC architecture for sis, erc32, smdk2410 and gumstix BSPs. 100% coverage was achieved on almost all of these BSPs. Coverage analysis was performed on the score, posix, rtems, and sapi under the cpukit directory of the RTEMS tree. At this work out we intend to include the libcsupport code and also work on other BSPs.
  • Aanjhan worked on the MMU support and intends to extend the same to enable caching via MMU, dig deeper into TLB and ALUT (an operating system maintained pg table implemented during the GSoC 09) replacement policies, optimise code and make it ready for RTEMS 4.10. He would also work on enabling MMAP kinda POSIX API support in RTEMS.
  • Roxana Leontie worked on porting NanoX. She will help/guide folks working on getting a FB UI done.
  • Help shall be extended by core RTEMS developers through IRC at various times (depends on their local time zones)

Getting in touch

  • RTEMS Users Mailing list
  • Internet Relay Chat #rtems @
  • Individuals for FOSS.IN Workout aanjhan at gmail dot com and vattam dot santosh at @ gmail dot com


  • Aanjhan Ranganathan
  • Madhusudhan C S
  • Santosh Vattam
  • [add your name here]
Last modified on Dec 24, 2015 at 1:15:09 AM Last modified on Dec 24, 2015, 1:15:09 AM