Virtual peripheral interfaces in emulated embedded computer systems
MetadataShow full item record
Small form-factor single-board computers (SBCs) have become a popular platform chosen by hobby and professional developers to host software projects. In recent years, the Raspberry Pi has become the most popular platform available, in part due to its ability to run a full-blown Linux operating system – the same distributions available for desktop PCs. This results in greater ease of use, and a familiar software environment for users. No matter what operating system is running on the developer’s PC, software to be run on the SBC can be debugged by running it under QEMU, a multi-platform emulation software. However, if the peripheral input/output pins of the SBC are to be used by the software under development, existing emulator capabilities are insufficient for debugging as they do not offer general purpose input/output (GPIO) capabilities. This project implements a solution to GPIO debugging while using an emulated SBC – a virtual GPIO interface that is shared with the emulation’s host PC. In order to make use of the virtual interface a software solution is also presented for each side of the interface – the SBC program and the peripheral emulated by the host PC. To facilitate emulation of an SBC program, a library commonly used for input/output interactions is modified to work within QEMU. To provide an example of peripheral emulation, custom LED and button widgets for the Qt user interface framework are implemented. Finally, a performance test is run to demonstrate the virtual interface’s usefulness to developers.