GSoC/GCI Archive
Google Summer of Code 2013

RTEMS Project

Web Page: http://www.rtems.org/wiki/index.php/Open_Projects

Mailing List: http://www.rtems.org/mailman/listinfo/rtems-users

RTEMS (Real-Time Executive for Multiprocessor Systems) is a free real-time operating system (RTOS) designed for deeply embedded systems such as automobile electronics, robotic controllers, and on-board satellite instruments. Such systems are not the familiar general-purpose PCs and Macs, but instead are pre-programmed to perform a narrow range of functions with minimal end user or operator intervention. Often these functions require strict timing requirements, or the physical device imposes size, weight, and power (SWaP) restrictions on the embedded computer. Such timing and SWaP constraints make programming embedded systems different than programming general-purpose systems, and motivate the development of RTOSs like RTEMS that ease programming in real-time/embedded systems.


RTEMS is free open source software that supports multi-processor systems for over a dozen CPU architectures and over 150 specific system boards. In addition, RTEMS is designed to support embedded 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 file systems while still offering minimum executable sizes under 20 KB in useful configurations.


The RTEMS Project is the collection of individuals, companies, universities, and research institutions that collectively maintain and enhance the RTEMS software base. As a community, we are proud to be popular in the space application software and experimental physics communities. RTEMS has been to Venus, circles Mars, is aboard Curiosity, is in the asteroid belt, and is on its way to Jupiter. It is in use in many high energy physics research labs around the world. There are many RTEMS users who do not belong to the space or physics communities, but our small part in contributing to basic scientific knowledge makes us proud.


Projects

  • Application Configuration GUI for RTEMS. The project aims at making a GUI which would lead to a hassle free, application specific configuration of RTEMS. The GUI would be made dynamically so as to be low on maintenance and will run on all major platforms. It would also be able to generate a .h file (having modified configurations) which could be used by the application. The GUI would be implemented in wxPython whilst the TUI implementation could be done on ncurses. Also the GUI would be packaged with the libraries it uses so that it could be installed out of the box.
  • Atomic Operations and SMP lock debug tool for RTEMS This project is continuation of last year GSOC project. In the last year the architecture-independent atomic API has been developed and the implementation of X86 and PowerPC has been completed. So in this year the project’ goal is to support all other architectures. The task includes that a general atomic ops should be defined to support all the architectures which do not support SMP mode. And in order to make RTEMS support SMP completely it also should make the existing synchronization primitives SMP-safe, such as semaphores, mutex, spinlocks and etc. But this task is complex and is hard to debug. So in there I proposal a lock debug tool used to debug the lock problem, like deadlock and recursive lock.
  • Enhance low-level API of libmm (Memory Protection & Caches) The current code of MMU support is not mature enough. It’s important to have a reliable high-performance easy-to-port, low-level MMU infrastructure for RTEMS (as being RTOS) and that’s what the project is partially about. Also libmm (memory management library) should include cache manager and give a clear picture of how MMU/Caching interact not only for uniprocessors, but also for multiple processors systems.
  • Paravirtualization layer in RTEMS This project aims to ease the virtualization of RTEMS on various hypervisors, by developing a BoardSupportPackage (BSP) and CPU model. It should be as platform independent as possible and not bound to a CPU architecture in particular. The design will be implemented as a proof-of-concept and documentation will be written, on how to port these to a new hypervisor or architecture.
  • Porting CAN driver, LinCAN, to RTEMS CAN bus has widely used in some safty-critical industrial fields where a real-time embedded system like RTEMS is also widely used. So it's useful to support CAN stack for RTEMS. This project’s purpose is to build a simulation environment for CAN driver, port the CAN driver LinCAN to RTEMS then write the CAN test-suites for this driver.
  • RTEMS Runtime Loader The RTEMS Runtime Loader makes RTEMS capable of supporting applications loaded and linked at runtime.The main goal of the project is to provide more architectures support to the RTL framework, which allows sharing a single verified base image, runtime configuration and modules loaded as needed. Then implement a new tool to convert ELF object files to a RAP format file and add new features to the RTEMS linker, such as supporting collecting all object files from archives into a RAP format archive.
  • SMP Aware Scheduler Design and develop a SMP enabled Global EDF scheduler
  • Unified APIs This project aims to efficiently merge the various PCI and Interrupt APIs by removing inconsistencies across the codebase, and thus improving the build system.