Embedded programming training today commonly involves numerous low-level details of a particular microcontroller. Such details shift focus away from higher-level structured embedded programming concepts. Thus, hard-to-break, unstructured programming habits are commonplace in the field. Yet structured embedded programming is becoming more necessary as embedded systems grow in complexity. We introduce a virtual microcontroller to address this problem. Freed from manufacturing or historical architectural issues, the virtual microcontroller contains the core features to support embedded programming training, and possesses an exceptionally clean interface to low-level features like timers, interrupt service routines, and UARTs. The virtual microcontroller can be mapped onto existing microcontrollers, or even onto FPGAs or a PC, providing more lab and book flexibility, at the expense of performance and size overhead. Most importantly, training can still use a bottom-up resource-aware approach, yet can focus more on structured embedded programming concepts.
['Scott Sirowy', 'David Sheldon', 'Tony Givargis', 'Frank Vahid']
Virtual microcontrollers