GSoC/GCI Archive
Google Summer of Code 2015

RTEMS Project

License: New and Simplified BSD licenses

Web Page: https://devel.rtems.org/wiki/Developer/OpenProjects

Mailing List: http://lists.rtems.org/mailman/listinfo/devel

RTEMS (Real-Time Executive for Multiprocessor Systems) is a free real-time operating system (RTOS) for embedded systems in automotive, aerospace, robotics, and satellites. Such systems are not the familiar general-purpose PCs and Macs, but instead require strict timing requirements, or the physical device imposes size, weight, and power (SWaP) restrictions. Such timing and SWaP constraints make embedded programming embedded  different than general-purpose programming, and motivate the development of RTOSs like RTEMS.

RTEMS is free open source software that supports multi-processor systems for over a dozen CPU architectures and over 150 embedded 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 features such as TCP/IP networking and file systems while still offering minimum executable sizes under 20 KB in useful configurations.

The RTEMS Project is the collection of individuals, companies, governments, 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 flight 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

  • Beagle BSP Improvements This project aims to improve the Beaglebone black (BBB) BSP support on RTEMS. This project intends to add the following peripherals to the Beagle BSP: networking (Ethernet driver and lwIP integration), i2c, GPIO and RTC. Adding more peripherals to one of the widely used development board Beaglebone black makes RTEMS more attractive for the user community.
  • Beagle BSP improvements: Porting MicroMonitor to boot without U-boot The goal of this project is to port MicroMonitor to the Beaglebone Black as an effort to replace the more license-restrictive U-boot for system initialization and application booting. Undertaking this effort aligns with the RTEMS project perspective and will pave the way for future efforts in extending MicroMonitor towards other Beagle platforms as well as to other platforms and architectures.
  • Beagleboard BSP Improvement RTEMS is mainly designed for Real time applications, embedded systems that implements a single process, multithreaded environment. The project focuses on the improvements of the BSP for Beagleboard that various peripherals support like ADC,GPIO,I2C,USB . Future task would be to fix the failing tests over qemu emulator and on the hardware running using JTAG, followed by automatic test run.
  • FRAMEBUFFER AND HDMI VIDEO SUPPORT FOR RPI Raspberry Pi is a series of popular, low-cost credit card-sized single-board computers, based on an ARM cpu, with the intention of promoting the teaching of basic computer science in schools. It would be great for both the project and RTOS education if RTEMS can have a full support on raspberry pi. The goal of the project is to improve the RTEMS board support packages for Raspberry Pi.
  • Nested Mutexes The strict order mutexes is based on LIFO ordering. So whenever thread tries to acquire mutex lock, its priority before acquiring the lock is pushed to that mutex’s thread queue. So whenever thread release any lock then that lock’s queue is consulted and thread’s priority is restored. So this mechanism of restoring priority may induce unbounded priority inversion if higher priority thread is contending for a lock still hold by our candidate thread. So I propose an solution to this problem.
  • Porting Monkey HTTP server to RTEMS This project aims to port the Monkey web server to RTEMS, as well as to reorganize the network stacks present in RTEMS to make it more modular. The reorganization involves getting the multiple network stacks into their own build separate from RTEMS using the RTEMS source builder.
  • Raspberry Pi 2 Support The project is based on the new Raspberry Pi 2. This version provides a significant performance boost for the mini-computer with the introduction of a quadcore processor in its SOC. The main aim is to have an SMP environment running for this version of Pi. For this, the BSP has to be extended to bring up the other three cores. Once enabled, SMP configurations would be tested. The project addresses a cache performance issue with current board support by achieving the correct configurations.
  • Raspberry Pi BSB USB support Current RTEMS lacks support of Raspberry Pi - cheap, open-source small computer. These qualities have made RPi so widespread and being used almost everywhere, including education sphere. RTEMS on RPi would attract new audience that is looking for real-time OS, since default Linux isn’t real-time. I chose this project because I’m familiar with USB and I love system programming and embedded systems.
  • Raspberry Pi Low Level Peripherals and SD Card This proposal intends to improve the Raspberry Pi BSP support for low level-peripherals by completing the GPIO API, I2C and SPI bus drivers support, adding SD card filesystem support and providing methods to probe information about the underlying hardware.