Welcome to the www.qemu-mips-ovp.org site discussing QEMU, MIPS, and introducing OVP.

QEMU is a very good virtualization system for PC platforms and is often used by a community focused on compiler, OS development and server virtualization. For example it is a good way of running x86 Linux on your WindowsXP PC.

If you are looking for a way of developing software on a platform containing an embedded processor, such as a MIPS Technologies 32bit or 64 bit embedded processor - and maybe you need to add some peripheral hardware functionality, develop some drivers, or put together your own SoC based around a MIPS processor - or in fact one or more embedded processors, then QEMU might not be the best solution. It could be used, but it would be a very long uphill battle - and you would need to learn a lot of technology that just was not necessary in your quest for a model of your embedded system - You need an emulator of your MIPS or ARM etc, processor and you need to add components to it. You don't need a model of a PC. You don't need to learn how to do code morphing. You don't need to learn how to design a simulator. Sadly QEMU pushes you down this route - where you have to learn an awful lot of stuff - that frankly - is just not necessary.

When looking to develop a simulation environment for heterogeneous platforms - with several embedded processors, with some extra hardware we spent some time looking at QEMU - and found it was just not easy for us to add our own models of the hardware. We also found it hard to trace what was going on in the platform and in the OS and application software - and when we did have some bugs in our code - we found QEMU to be non-deterministic...

In the end we did not adopt QEMU for developing our platforms for embedded software development.

We developed a different open source simulation solution - targeting embedded platforms and embedded software development.

What we have developed could be thought of as 'embedded QEMU'... it is an emulator of a processor and the system it works in. In fact one of the things we did was to re-use some of the QEMU peripheral models - we spend the time to extract them out of the QEMU environment and re-worked them into the one we were building - that is the beauty of open source...

Recently we moved this simulation technology to an open source footing and started the Open Virtual Platforms initiative - with the backing of some 20 companies in the tools, services, embedded software, and semiconductor IP areas.

This iniative has a web site - www.OVPworld.org - and there is a lot of good information there.

You can find more Q and A regarding how OVP and the free OVPsim is complimentary to QEMU on the www.OVPworld.org FAQ page.

You can also download many demos, bare iron platforms, emulators with embedded processors, a simple platform booting ucLinux, and a MIPS platform that boots Linux 2.6 - all from www.OVPworld.org download page. There are also some videos to watch and presentations - there is also full documentation etc.

We suggest you have a look - www.OVPworld.org.

Keep an eye on the web site as we are just about to put up the open source model of a MIPS Linux 2.6 platform that enables very easy extension and software development - expect it up late May08, early June.

Some Q and A on QEMU and the Open Virtual Platforms (OVP) embedded equivalent

What are the differences between the OVP free simulator, OVPsim, and QEMU?
QEMU is an open source fixed platform simulator, targeted mainly at PCs and derivative platforms.

QEMU's strong point is simulation of a fixed, defined single processor platforms with reasonable speed.

In contrast, OVPsim has been designed to take this kind of capability to the next level.

OVPsim's strengths compared to QEMU are:

1. OVPsim is great for multiprocessor platforms with arbitrary shared and local memory configurations.

2. OVPsim can handle simulation of processors with virtual memory with almost no performance penalty.

3. It is very easy in OVPsim to make new platforms using the ICM interface. Just have a look at some of the platform defining files in the demos (e.g. OVPsim_ork1_uclinux.c in the OVPsim_or1k_uclinux demo) to see how easy this is. If you want to experiment with a new shared memory configuration for a platform you've thought of containing, for example, a MIPS and an ARM, you can do this with a few lines of C with OVPsim. Have a look at the platform defined in the file OVPsim_hetero_multicore4.c in the OVPsim_hetero_multicore4 demo.

4. OVPsim has a really smart way of implementing peripherals using OVPsim Peripheral Simulation Engine (PSE) technology. If you look again at the OVPsim_or1k_uclinux demo platform defining C file, you will see that the uart model functionality isn't built into this file at all, but is loaded as a separate plugin into a PSE. PSEs support lots of important features such as threads, events, time delays and so on that make it really easy to write peripheral models that are reusable.

5. OVPsim also supports completely non-intrusive semihosting using dynamically loaded libraries that are completely separate to processor models. There is no need to compile up application code with special flags to support semihosting: given an appropriate semihost library, OVPsim can run on a completely unmodified binary. OVPsim semihosting works by allowing semihosting libraries to take special actions either when particular functions are executed in the simulated application (e.g. write) or when particular instructions are executed (e.g. break instructions). If you look in the OVPsim_or1k_single demo directory, for example, you will see the or1kNewlib dll, which is what supports semihosting in this test case.

6. OVPsim is also really fast.

Imperas has run some performance measurements in OVPsim using a platform incorporating a MIPS Technologies 32 bit MIPS32 processor. Running the Dhrystone benchmark OVPsim runs at 427 MIPS. OVPsim has been measured on other testcases running up to 1228 MIPS on a 3GHz PC. See the benchmark data for more information.

7. The technology behind OVPsim also allows much more than is shown currently at the OVP website. For example, Imperas have plugins that use the semihosting technology that do code profiling (like gprof), memory checking (like valgrind) and other things, all on completely unmodified applications. Imperas also have a true multiprocessor-aware debugger that anyone who knows gdb will be able to use (not lots of separate gdbs). If you write models for use with OVPsim, they will be able to work with these commercial tools too. Contact Imperas for more information.
Are there more platforms being supported in QEMU than with OVP?
Today QEMU has several different PC derivative platforms and is targeted at fixed platform virtualization. Currently OVP and OVPsim has just been made publicly available and is starting to get many adopters and it is expected that many platforms will be available shortly. There are currently over 60 components in the OVP library ranging from MIPS processors to VGA graphic adapters. OVP is architected to allow users to easily configure and build their own platforms and is targeted at the hundreds of SoCs and MPSoCs being designed.
Is it easier to create models and build platforms with OVP than with QEMU?
OVP has a complete methodology and separate well defined APIs for creating and adding processor models, and behavioral models. One of the key strengths of OVP is its ease of modeling components, and then adding them to different platforms. The APIs are defined enabling models created by one user to be used with models and platforms created by another user. This interoperability is important and essential to efficiently model the vast number of embedded platforms being built. Every large chip needs a virtual platform to enable software development and OVP has been architected to make it very easy to create the models and put the platforms together.

For more information on OVP, the open source OVP models and model library, and the free OVPsim simulator please visit the www.OVPworld.org website.

This website (www.qemu-mips-ovp.org) has been created by, and is maintained by, www.OVPworld.org, (c) 2008.
This site is not affiliated with MIPS Technologies, Inc. http://www.mips.com.
This site is not affiliated with ARM Holdings plc. http://www.arm.com.
QEMU is a trademark of Fabrice Bellard.
MIPS is a registered trademark MIPS Technologies, Inc.
ARM is a registered trademark of ARM Limited.
OVP and Open Virtual Platforms are trademarks of Imperas Software Limited.