University of Vigo
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. The authors 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.