When working with new architectures there is often a scramble for getting access to hardware. However hardware comes with its own problems - especially when it is new. It’s hard to upgrade, hard to poke around inside and hard to experiment with.

This is an area where QEMU can help. Thanks to its cross-architecture emulation and ability to run full-system emulation it provides a platform for experimentation without the potential consequences of turning your new board into a brick.

This talk will start with an overview of QEMU and how various configurations can be setup. We’ll then examine various features available that allow us to examine the run time behaviour of code inside QEMU as well as discuss some of its limitations. Finally we’ll look at some experiments that would be hard to do with real hardware and what they can tell us about the code we are running.