Embedded real-time software using TinyTimber : reactive objects in C

Abstract: Embedded systems are often operating under hard real-time constraints. Such systems are naturally described as time-bound reactions to external events, a point of view made manifest in the high-level programming and systems modeling language Timber. In this licensiate thesis we demonstrate how the Timber semantics for parallel reactive objects translates to embedded real-time programming in C. This is accomplished through the use of a minimalistic Timber Run-Time system, TinyTimber. The TinyTimber kernel ensures state integrity, and performs scheduling of events based on given time-bounds in compliance with the Timber semantics. In this way, we avoid the volatile task of explicitly coding parallelism in terms of traditional processes/threads/semaphores/monitors, and side-step the delicate task to encode time-bounds into process/thread priorities. Moreover, a simulation environment is developed that enables the behaviour of a heterogeous distributed system, consisting of both the hardware and the Timber based embedded software to be observed under a model of the environment. Furthermore, pedagogic issues of reactive objects have been studied in the context of higher education. First results indicate that the use of TinyTimber give students an increased ability to understand and solve embedded programming assignments. Finally, the TinyTimber kernel implementation is discussed. Performance metrics are given for a number of representative platforms, showing the applicability of TinyTimber to small embedded systems. A comparison to a traditional system tick driven, thread based, real-time kernel shows that TinyTimber provides tighter timing and a simpler (yet comprehensive) API. In conclution we find that the use of Reactive Objects in C, realized through TinyTimber is a viable alternative for Embedded Real-Time Programming.