The typical approach to guaranteed message delivery in distributed real-time systems uses Time Division Multiple Access (TDMA) to ensure that no scheduling collisions occur. The most important property of scheduling in a real-time system is to guarantee that each node is given its scheduled timeslot and no collisions exist between all of the nodes’ timeslots. TDMA uses a fairly simplistic approach to satisfy this property: each node is assigned a single timeslot and can only send messages during that slot.
On the other hand, stateful communication schedules allow for a significantly more complicated schedule. By using network code programs which run on top of the scheduler we can allow each node to send and receive messages and perform error recovery in a more efficient manner. This is done by maintaining information in the scheduler which allows it to intelligently choose the next best node to be scheduled. Stateful communication schedules are thus valuable in distributed systems such as automobiles or medical devices in which there must be a guarantee that messages are delivered very quickly (consider a driver pushing on a brake pedal, for example).
There were several goals of this project. We studied several related high-level specification languages such as AADL and Giotto, and due to unnecessary complexity we created our own simple specification language to model network constraints. Secondly, we developed a scheduler which schedules communications on the network and CPUs based on constraints specified in the input. Next we created a compiler which translates the schedule into network code which can be run on the RTLinux scheduler. Finally, we created a visualization tool that creates a pictorial representation of our schedule.