GSoC/GCI Archive
Google Summer of Code 2010

RTEMS Project

Web Page:

Mailing List:





The RTEMS Project is the collection of individuals, companies, universities, and research institutions that collectively maintain and enhance the RTEMS software base. RTEMS (Real-Time Executive for Multiprocessor Systems) is a free real-time operating system designed for deeply embedded systems. It is a free open source solution that supports multi-processor systems and has been ported to over a dozen CPU architectures and includes support for over 100 boards. RTEMS is designed to support applications with the most stringent real-time requirements while being compatible with open standards such as POSIX. RTEMS includes optional functional features such as TCP/IP and various file systems while still offering minimum executable sizes under 20 KB in useful configurations.


  • ATA/SATA Driver This project aims to extend the current set of RTEMS block device interface capabilities while increasing its compatibility with different devices and its efficiency. This is achievable by providing RTEMS with a standardized and efficient block device driver that supports the ATAPI and SATA standards. This project shall provide RTEMS with a working and partially tested driver at the end of the Google Summer Of Code.
  • Modular SuperCore Scheduler Manager I will refactor the RTEMS scheduler into a modular, isolated subsystem and demonstrate the new modularity by providing an earliest deadline first (EDF) scheduling mechanism to complement the existing fixed priority scheduling. This project will refactor scheduling data structures and code into an interface so that multiple schedulers can be implemented, which will facilitate SMP scheduling.
  • Parrot on RTEMS This project seeks to enable code written in parrot to run on the RTEMS platform.
  • POSIX Asynchronous and List IO The goal is to implement the POSIX Asynchronous IO and List IO as defined by the OpenGroup. Currently RTEMS supports only synchronous IO which means that when an IO request is made the thread enters a wait state until the operation completes. A different approach is to overlap the processes with the IO, that is after issuing the request the calling thread continues to process another job until it is notified that the IO operation finished, then it continues to process the data.
  • RTEMS port of GNU GCC Go The goal of this project is to have a functioning port of gccgo to RTEMS. The aim is to make the port work on atleast one architecture supported by RTEMS with comprehensive testing done on this port. If this aim is met, then other architectures will be considered. Documentation and a HOWTO will be provided giving build instructions. Patches will be added into RTEMS, newlib and the gccgo projects as and when needed.
  • RTEMS port to Milkymist The project consists in porting RTEMS to the Milkymist open source system-on-chip for FPGAs. It comprises the base drivers to make RTEMS work (timer and console) as well as drivers specific to Milkymist (audio, graphics, network, GPIO ...).
  • RTEMS Sequenced Initialization and RTEMS System Events The first project will add a Sequencer which calls user defined functions held in an unordered table in a specific order. The second project is to add a new "system" Event API for RTEMS system services.
  • RTEMS-Proposal-TestCoverageImprovements RTEMS is used in several critical missions and we need to ensure that it is tested to the maximum possible extent. RTEMS uses code coverage as the method for testing and 100% coverage would imply 100% tested, though it is worth noticing that it does not ensure the correctness of the software. Since RTEMS is a moving target, there are good amounts of code that are uncovered by the present test-suite. The purpose of this project will be to cover 100% of the cpukit