1.. _qemu_cortex_a53:
2
3ARM Cortex-A53 Emulation (QEMU)
4###############################
5
6Overview
7********
8
9This board configuration will use QEMU to emulate a generic Cortex-A53 hardware
10platform.
11
12This configuration provides support for an ARM Cortex-A53 CPU and these
13devices:
14
15* GIC-400 interrupt controller
16* ARM architected timer
17* PL011 UART controller
18
19Hardware
20********
21Supported Features
22==================
23
24The following hardware features are supported:
25
26+--------------+------------+----------------------+
27| Interface    | Controller | Driver/Component     |
28+==============+============+======================+
29| GIC          | on-chip    | interrupt controller |
30+--------------+------------+----------------------+
31| PL011 UART   | on-chip    | serial port          |
32+--------------+------------+----------------------+
33| ARM TIMER    | on-chip    | system clock         |
34+--------------+------------+----------------------+
35
36The kernel currently does not support other hardware features on this platform.
37
38Devices
39========
40System Clock
41------------
42
43This board configuration uses a system clock frequency of 62.5 MHz.
44
45Serial Port
46-----------
47
48This board configuration uses a single serial communication channel with the
49CPU's UART0.
50
51Known Problems or Limitations
52==============================
53
54The following platform features are unsupported:
55
56* Writing to the hardware's flash memory
57
58
59Programming and Debugging
60*************************
61
62Use this configuration to run basic Zephyr applications and kernel tests in the QEMU
63emulated environment, for example, with the :zephyr:code-sample:`synchronization` sample:
64
65.. zephyr-app-commands::
66   :zephyr-app: samples/synchronization
67   :host-os: unix
68   :board: qemu_cortex_a53
69   :goals: run
70
71This will build an image with the synchronization sample app, boot it using
72QEMU, and display the following console output:
73
74.. code-block:: console
75
76        ***** Booting Zephyr OS build zephyr-v2.0.0-1657-g99d310da48e5 *****
77        threadA: Hello World from qemu_cortex_a53!
78        threadB: Hello World from qemu_cortex_a53!
79        threadA: Hello World from qemu_cortex_a53!
80        threadB: Hello World from qemu_cortex_a53!
81        threadA: Hello World from qemu_cortex_a53!
82        threadB: Hello World from qemu_cortex_a53!
83        threadA: Hello World from qemu_cortex_a53!
84        threadB: Hello World from qemu_cortex_a53!
85
86Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
87
88Debugging
89=========
90
91Refer to the detailed overview about :ref:`application_debugging`.
92
93Networking
94==========
95
96The board supports the QEMU built-in Ethernet adapter to connect to the host
97system. See :ref:`networking_with_eth_qemu` for details.
98
99It is also possible to use SLIP networking over an emulated serial port.
100Although this board only supports a single UART, so subsystems like logging
101and shell would need to be disabled, therefore this is not directly supported.
102
103References
104**********
105
1061. (ID050815) ARM® Cortex®-A Series - Programmer’s Guide for ARMv8-A
1072. (ID070919) Arm® Architecture Reference Manual - Armv8, for Armv8-A architecture profile
1083. (ARM DAI 0527A) Application Note Bare-metal Boot Code for ARMv8-A Processors
1094. AArch64 Exception and Interrupt Handling
1105. Fundamentals of ARMv8-A
111