cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

target-arm.rst (4085B)


      1.. _ARM-System-emulator:
      2
      3Arm System emulator
      4-------------------
      5
      6QEMU can emulate both 32-bit and 64-bit Arm CPUs. Use the
      7``qemu-system-aarch64`` executable to simulate a 64-bit Arm machine.
      8You can use either ``qemu-system-arm`` or ``qemu-system-aarch64``
      9to simulate a 32-bit Arm machine: in general, command lines that
     10work for ``qemu-system-arm`` will behave the same when used with
     11``qemu-system-aarch64``.
     12
     13QEMU has generally good support for Arm guests. It has support for
     14nearly fifty different machines. The reason we support so many is that
     15Arm hardware is much more widely varying than x86 hardware. Arm CPUs
     16are generally built into "system-on-chip" (SoC) designs created by
     17many different companies with different devices, and these SoCs are
     18then built into machines which can vary still further even if they use
     19the same SoC. Even with fifty boards QEMU does not cover more than a
     20small fraction of the Arm hardware ecosystem.
     21
     22The situation for 64-bit Arm is fairly similar, except that we don't
     23implement so many different machines.
     24
     25As well as the more common "A-profile" CPUs (which have MMUs and will
     26run Linux) QEMU also supports "M-profile" CPUs such as the Cortex-M0,
     27Cortex-M4 and Cortex-M33 (which are microcontrollers used in very
     28embedded boards). For most boards the CPU type is fixed (matching what
     29the hardware has), so typically you don't need to specify the CPU type
     30by hand, except for special cases like the ``virt`` board.
     31
     32Choosing a board model
     33======================
     34
     35For QEMU's Arm system emulation, you must specify which board
     36model you want to use with the ``-M`` or ``--machine`` option;
     37there is no default.
     38
     39Because Arm systems differ so much and in fundamental ways, typically
     40operating system or firmware images intended to run on one machine
     41will not run at all on any other. This is often surprising for new
     42users who are used to the x86 world where every system looks like a
     43standard PC. (Once the kernel has booted, most userspace software
     44cares much less about the detail of the hardware.)
     45
     46If you already have a system image or a kernel that works on hardware
     47and you want to boot with QEMU, check whether QEMU lists that machine
     48in its ``-machine help`` output. If it is listed, then you can probably
     49use that board model. If it is not listed, then unfortunately your image
     50will almost certainly not boot on QEMU. (You might be able to
     51extract the filesystem and use that with a different kernel which
     52boots on a system that QEMU does emulate.)
     53
     54If you don't care about reproducing the idiosyncrasies of a particular
     55bit of hardware, such as small amount of RAM, no PCI or other hard
     56disk, etc., and just want to run Linux, the best option is to use the
     57``virt`` board. This is a platform which doesn't correspond to any
     58real hardware and is designed for use in virtual machines. You'll
     59need to compile Linux with a suitable configuration for running on
     60the ``virt`` board. ``virt`` supports PCI, virtio, recent CPUs and
     61large amounts of RAM. It also supports 64-bit CPUs.
     62
     63Board-specific documentation
     64============================
     65
     66Unfortunately many of the Arm boards QEMU supports are currently
     67undocumented; you can get a complete list by running
     68``qemu-system-aarch64 --machine help``.
     69
     70..
     71   This table of contents should be kept sorted alphabetically
     72   by the title text of each file, which isn't the same ordering
     73   as an alphabetical sort by filename.
     74
     75.. toctree::
     76   :maxdepth: 1
     77
     78   arm/integratorcp
     79   arm/mps2
     80   arm/musca
     81   arm/realview
     82   arm/sbsa
     83   arm/versatile
     84   arm/vexpress
     85   arm/aspeed
     86   arm/sabrelite
     87   arm/digic
     88   arm/cubieboard
     89   arm/emcraft-sf2
     90   arm/highbank
     91   arm/musicpal
     92   arm/gumstix
     93   arm/mainstone
     94   arm/kzm
     95   arm/nrf
     96   arm/nseries
     97   arm/nuvoton
     98   arm/imx25-pdk
     99   arm/orangepi
    100   arm/palm
    101   arm/raspi
    102   arm/xscale
    103   arm/collie
    104   arm/sx1
    105   arm/stellaris
    106   arm/stm32
    107   arm/virt
    108   arm/xlnx-versal-virt
    109
    110Emulated CPU architecture support
    111=================================
    112
    113.. toctree::
    114   arm/emulation
    115
    116Arm CPU features
    117================
    118
    119.. toctree::
    120   arm/cpu-features