]> git.proxmox.com Git - mirror_qemu.git/blame - docs/system/target-arm.rst
docs: Add QEMU version information to HTML footer
[mirror_qemu.git] / docs / system / target-arm.rst
CommitLineData
324b2298
PB
1.. _ARM-System-emulator:
2
d3149c59 3Arm System emulator
324b2298
PB
4-------------------
5
d3149c59
PM
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``.
c11a8e89 69
b6e50ad0
PM
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
c11a8e89 75.. toctree::
0553ef42 76 :maxdepth: 1
c11a8e89
PM
77
78 arm/integratorcp
ba7912a5 79 arm/mps2
9f8f640e 80 arm/musca
c11a8e89 81 arm/realview
0339c2a8 82 arm/sbsa
b6e50ad0 83 arm/versatile
5a1d4244 84 arm/vexpress
7a1e049a 85 arm/aspeed
c9f8511e 86 arm/sabrelite
2d21dd17 87 arm/digic
c11a8e89 88 arm/musicpal
bb309000 89 arm/gumstix
90a76c63 90 arm/nrf
b6e50ad0 91 arm/nseries
82c703fe 92 arm/nuvoton
0553ef42 93 arm/orangepi
b6e50ad0 94 arm/palm
d9f2ac3d 95 arm/raspi
b6e50ad0 96 arm/xscale
b76b60f5 97 arm/collie
b6e50ad0
PM
98 arm/sx1
99 arm/stellaris
1af060e5 100 arm/stm32
6a0b7505 101 arm/virt
ff9e157b 102 arm/xlnx-versal-virt
34f18ab1 103
741292fa
PM
104Emulated CPU architecture support
105=================================
106
107.. toctree::
108 arm/emulation
109
34f18ab1
PM
110Arm CPU features
111================
112
113.. toctree::
114 arm/cpu-features