Skip to main content

An operating system for embedded devices


Suitable for

MSc in Computer Science


Most small embedded devices do not separate high-level application code from the low-level device-specific code that interacts with hardware peripherals. As a result, small changes to application logic often results in the entire firmware of a device being updated. In many settings this is inconvenient and results in inefficient use of constrained resources such as communication bandwidth. In this project, you will design and implement a low-level operating system for embedded devices that separates relocatable application logic from low-level I/O logic. The resulting operating system should allow easy access to only that hardware functionality that the device designer wishes to make available to application developers. The project will target a typical small micro-controller for embedded applications that uses an ARM M0+ core with 64KB flash and 8KB RAM.

Prerequisites: Digital Systems and some knowledge of C programming is useful but not essential.