RTEMS and Google Summer of Code 2009

Friday, February 19, 2010

The RTEMS Project had 6 students accepted for Google Summer of Code™ 2009, with one additional student that was funded through the donation that Google gives to mentoring organizations in conjunction with a donation from OAR Corporation. We were extremely pleased with our students' results and their interaction with other projects, each other, and the community.

Xi Yang's project was to provide more RTEMS Board Support Packages (BSPs) that run on the free Skyeye simulator and to improve testing capabilities when using Skyeye. RTEMS uses Skyeye to test as well as GCC on ARM targets. Xi also implemented an LCD framebuffer driver for use with RTEMS.

Another student, Santosh Vattam worked on improving the Object Coverage of our test suites for a core part of RTEMS. Our initial coverage reports were generated for the SPARC/ERC32 using the closed source simulator TSIM. Santosh and I, his mentor, addressed cases which appeared to be test suite deficiencies while apparent simulator anomalies were passed on to Xi. During this, an obscure bug in RTEMS was uncovered and Xi and I worked together via chat to solve it. At the end of the summer, 3 SPARC and 2 ARM configurations were either at 100% or very close.

Santosh's project was a tie-in to the work of Roxana Leontie. Roxana operated under the same rules as Google Summer of Code but worked outside of the program. Her project was updating the Nano-X RTEMS port and providing a new RTEMS framebuffer device interface, and her first succesful demonstration was running the Nano-X Minesweeper program on RTEMS. As Roxanna progressed, Xi updated his LCD framebuffer driver to match her new interface.

Aanjhan Ranganathan's project was to provide a generic interface for RTEMS applications to use the Memory Management Hardware Unit available in most recent embedded processors for memory protection. His major tasks included studying the PowerPC MMU hardware architecture implementation and behavior, to propose a multi-level API design within the scope of RTEMS infrastructure. Most of the above tasks have been accomplished successfully and tested, but a lot of scope for further work exists.

Josh Switnick had a project which suffered from those unexpected "challenges" that make software development interesting. His project was to port RTEMS to the 8-bit AVR, as RTEMS had previously only been ported to 16- and 32-bit architectures. Mentors worked with Josh to produce a cross-toolset built with AVR specific libc support ported from AVR-LIBC to newlib, and to build the free AVR simulator simulavrxx. Josh produced a working port and is continuing to work to tidy up the loose ends.

Lucian Cocan's project was to continue the 2008 Google Summer of Code project of Real-Time trace. Lucian's initial work was to package the work into something that is suitable for a user. The tool was modelled on the command line tool, libtool, as it provided a simple yet consistent interface for the user. Lucian successfully produced traces for a number of the sample programs plus the example priority inheritance capture engine example.

JiSheng Zhang's project was to implement run-time dynamically loading relocatable object files or libraries into RTEMS, which is based on the IEEE Std 1003.1-2004 API (dlfcn.h) interface. Jisheng completed the basic functions of elf loader after the midterm, then he worked on figuring out how to get the dependencies included in the RTEMS kernel. Currently two tools are supported, i386 and sparc, and Jisheng is continuing to work on add other architecture support such as m68k, power pc, mips, and arm etc.

You can read my full report about our 2009 Google Summer of Code experience on the RTEMS wiki.

By Joel Sherrill, RTEMS Maintainer and Google Summer of Code mentor