Table of contents
QEMU is a CPU emulator using dynamic binary translation to convert guest CPU instructions into host CPU instructions. It supports many architectures from x86, through ARM and MIPS, to MicroBlaze. According to compilation configuration target list QEMU targets 26 different softmmu types. Only for ARM it supports 33 machines (like ARM Versatile/PB (ARM926EJ-S) or Samsung NURI board (Exynos4210)) and 28 CPUs (with cortex-a9 and pxa270). It gives access to network, storage, video, usb, serial and other peripheral, also user defined. It is developed under GNU GPL, so everybody are free to make modifications, improve and extend it. This properties makes QEMU very good candidate for virtual board emulator.
Let’s start creating our Virtual Development Board. As usually I will use latest greatest version from git:
Compile it and install. Right now I will use only
arm-softmmu target because it
will emulate whole arm system for me. ARM right now dominated big part of
embedded market but we will see if situation won’t change in feature.
During configuration process you can encounter lack of
pixman, just accept qemu
offer to initialize it as a submodule.
1 2 3
git submodule update --init pixman make # restart compilation process make install
If compilation ends without problem than our first component is ready to use.
Right now we can emulate our ARM based board with many types of CPUs. List of
all available can be retrieved by running command
qemu-system-arm -cpu ?, list
of emulated machines by
-M ?. Now, let’s talk about toolchains.