Search code examples
armtraceqemufast-modelfvp

QEMU and FVP models difference


Does anyone know what the difference is between ARM's Fixed Virtual Platform (FVP) binaries (which usually need a paid license) and QEMU's free models?

For example: which are their strong/weak points such as capabilities for debugging and tracing?


Solution

  • I would say that, even though they can be compared, they should not as they are aimed at different purposes. Note that the terms used here are defined in DS-5 : What is FVP, RTSM, Foundation Model, AEM model, Fast Model, CADI?) as you specified FVP and fastmodel.

    I will try to answer based on what I tried on those tools.

    Speed versus accuracy.


    QEMU is less accurate but faster than FVP. There are plenty of different sources about this (even though I could not get a paper about benchmark) but I observed that QEMU is x2 faster than fastmodel for booting Linux.

    About accuracy: if you only want to run applications, then QEMU is for you. However if you want to get the micro-architecture (what is inside a core, understand the security extensions,..) then fastmodel is needed. If you need to have access to new extensions/updates of the processors then fastmodel will be the first one to have those functionalities. Probably even before the silicon is available as it is developed within Arm.

    Support


    QEMU is open-source so you get the community to help you or even dig into the code. Whereas Arm has a support "hotline" and you cannot get access to the code.

    Both have a lot of documentation on how to use the tool and is quite easy to find.

    Both run on Windows/Linux.

    Functionality


    QEMU also gives the possibility to run qemu-static (see the package in Ubuntu,..) and this page that gives an overview on it. Fastmodel does not offer this functionality.

    I could not find within QEMU how to update the configuration of the system with the same granularity like it is done within FVP.

    Creating new SoC


    System Canvas can be used within Fastmodel (see Documentation) which is a graphical interface that can be used to generate a SoC.

    Within QEMU, it seems that there are some predefined platforms you can use. While using a FVP, there are listed in here.

    Debug


    QEMU seems to only offer GDB as debugger (https://wiki.qemu.org/Documentation/Debugging). FVP can be used with CADI, GDB, ModelDebugger. It seems to give more information using Arm debugger about the components of the system.