The main objective of the Bern RTOS project is to write a fail-safe RTOS from the ground up. 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 most 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 (27 ECTS).
The goal of this thesis project is to extend the kernels features and to implement a complex example application. This leads to the following 3 objectives:
The kernel should be improved based on the findings of the previous projects. This includes adding message passing, system logs, interrupt handling and dynamic memory allocation.
The RTOS will be put the test on real-world use case: an espresso machine. The scenario showcases timelines with a periodic temperature control loop together with a high background load from a graphical user interface and an ethernet connection.
The kernel internals and outstanding issues will be documented extensively so that development can continue as an open source project.