A tool for developing software source code for embedded systems that allows the user to automatically generate a real-time operating system for scheduling of multi-tasking operations while preventing deadlocks between the real-time tasks. The tool takes parameters that let the user assign priorities and timing characteristics to different tasks and to experiment with different scheduling algorithms.