Using a real-time operating system (RTOS) in an embedded design is an increasingly popular choice for system developers. An RTOS provides multithreading and thereby allows for a more modular system with several smaller modules. However, multithreading also brings new challenges in software design, debugging and testing that call for new software development approaches.