Projects

This page describes major projects I contributed to.

HIPPEROS / Maestro RTOS 2013 - 2019 Link to heading

At HIPPEROS, we developed the Maestro family of RTOS (Real-Time Operating System) with high-performance multi-core embedded platforms in mind, and we did it from scratch (we wrote a new micro-kernel). We did it in a small team (up to 8 technical people) and we did it from scratch.

This was quickly an enriching experience and an epic adventure where I learnt on a lot of different topics. The following sections enlights some of my achievements/responsibilities.

OS implementation Link to heading

I initially spent a lot of time on the micro-kernel itself in order to implement the set of required features to be able to move the focus to user-space libraries and drivers. We immediately designed our testing methodology consisting on 3 layers of testing (2 running on the target board, 1 on the host computer) and a continuous build environment. Each flow (development, testing and deployment to target) was fully automated thanks to scripts.

We presented some parts of our results at research workshops (see [1] and [2]).

For one of the testing layer, I created a C++ mocking library called Mockeur to mock C function from a C++ test environment.

Memory management Link to heading

The management of the virtual to physical memory mappings is an essential key in the design of the kernel. It has a couple of impacts on how the kernel initiates itself and it is highly related to the physical memory allocation. I designed and implemented both the generic kernel modules and ported the architecture-specific parts.

This was a long-living effort to design such modules that have so many implications and where bugs are hard to spot.

Support for HIPPEROS in the GNU toolchain Link to heading

As a brand new RTOS, Maestro needed proper toolchain support. While the GNU toolchain and LLVM were supported since the beginning of the project through a couple of compiler switches, I patched the different GNU tools and Newlib to get a native support. It also brought a better integration of the several memory models supported by the RTOS. The following Git repositories illustrates this work.

Docker development environment Link to heading

Mixed-Criticality scheduler Link to heading

We worked as a sub-contractor for the IMICRASAR European project. Thales delegated to HIPPEROS the implementation of a novative mixed-criticality scheduler. I was project manager for this project. My former colleague Antonio Paolillo presented the results at WMC 2017 (see [3]).

Methodology Link to heading

Other Link to heading

  • Designing a build system design (CMake, Makefile, Python, Bash)
  • Implementation of the OS awareness for Lauterbach Trace32
  • Supporting the integration of heterogenous platforms (Zynq-7000 and UltraScale+)
  • Supporting students for their master thesis and internships
  • Patching open source projects (OpenOCD, U-Boot)

Summary Link to heading

My experience designing and implementing a family of RTOS was such a rewarding experience that I can’t enumerate everything.

References Link to heading

  • [1] Antonio Paolillo, Olivier Desenfans, Vladimir Svoboda, Joel Goossens, Ben Rodriguez. A New Configurable and Parallel Embedded Real-time Micro-Kernel for Multi-core platforms. ECRTS, OSPERT, Lund, Sweden, July 2015. PDF, Slide set

  • [2] Olivier Desenfans, Antonio Paolillo, Vladimir Svoboda, Ben Rodriguez, Joel Goossens, Dragomir Milojevic. Design and implementation of a multi-core embedded real-time operating system kernel. ACTRISS OPRTC-ULB, Brussels, Belgium, April 2014. PDF, Prezi

  • [3] Antonio Paolillo, Paul Rodriguez, Vladimir Svoboda, Olivier Desenfans, Joel Goossens, Ben Rodriguez, Sylvain Girbal, Madeleine Faugère, Philippe Bonnot. Porting a safety-critical industrial application on a mixed-criticality enabled real-time operating system. The 5th International Workshop on Mixed Criticality Systems at the Real Time Systems Symposium (RTSS 2017). WMC 2017, Paris, France, 5th December 2017. PDF, Slide set