The main objective of the Bern RTOS project is to write a fail-safe RTOS from scratch. As many software bugs as possible should be caught at compile time to increase system stability and to avoid frustrating debugging sessions. Rust promises to achieve this goal, but we will have to figure out how to use the language effectively. A compiler cannot catch every error, therefore, we will need protection at runtime to keep a bug from crashing the whole system.

Developing an RTOS and learning Rust is a big challenge and will take up the majority of my Master of Science in Engineering (MSE) study. The development is taking place over two years and is split into three parts: a first project (9 ECTS), a second project (15 ECTS) and a master thesis (30 ECTS).

The goal of this first project is to create a concept for the Bern RTOS. To gain the necessary background to write a concept, we first need to look at existing RTOS and Rusts concepts. This leads to the following three objectives:

  1. Existing RTOS should be classified to see what applications these systems target and what features a user expects from an RTOS. In addition, the internal mechanism and structure of an RTOS should be analyzed to identify proven methods that can also be applied in the Bern RTOS.

  2. An introduction to Rust should show the concepts and syntax that will help to make the Bern RTOS safe. The focus is to be placed on embedded system applications. The concurrency features from the Rust standard library should be analyzed as well, to see what solutions the language already has for computer systems.

  3. Based on the findings of the RTOS analysis, the introduction into Rust and fail-safety in mind, the aim is to work out a concept for Bern RTOS.