Embedded computer systems are proliferating, but the complexities of embedded software make it increasingly difficult to produce systems that are robust and reliable. These challenges increase as embedded systems are connected to networks and relied on to control or monitor physical processes in critical infrastructure. This paper describes a senior-level course that exposes students to foundational characteristics of embedded software, such as concurrency, synchronization and communication. The core of the class is a sequence of laboratory assignments in which students design and implement a real-time operating system. Each student-developed RTOS has the same API, so all can run the same application code, but internal implementations vary widely. The principal challenges that arise in the design and debugging of a multi-tasking RTOS tend to be instances of the general problems that arise in embedded software. In our experience, the activity of creating a working RTOS is effective in helping students acquire the knowledge and skills required to be successful embedded software developers.
['James K. Archibald', 'Doran Wilde']
Embedded software education: an RTOS-based approach