blob: b1f7210e42b3913a9943c8b4ea6d7dbfb496ade7 [file] [log] [blame]
.. _qemu_x86:
X86 Emulation (QEMU)
####################
Overview
********
The X86 QEMU board configuration is used to emulate the X86 architecture. This board
configuration provides support for an x86 Minute IA (Lakemont) CPU and the
following devices:
* HPET
* Advanced Programmable Interrupt Controller (APIC)
* NS16550 UART
Hardware
********
Supported Features
==================
This configuration supports the following hardware features:
+--------------+------------+-----------------------+
| Interface | Controller | Driver/Component |
+==============+============+=======================+
| HPET | on-chip | system clock |
+--------------+------------+-----------------------+
| APIC | on-chip | interrupt controller |
+--------------+------------+-----------------------+
| NS16550 | on-chip | serial port |
| UART | | |
+--------------+------------+-----------------------+
Devices
=======
HPET System Clock Support
-------------------------
The configuration uses an HPET clock frequency of 25 MHz.
Serial Port
-----------
The board configuration uses a single serial communication channel that
uses the NS16550 serial driver operating in polling mode. To override, enable
the UART_INTERRUPT_DRIVEN Kconfig option, which allows the system to be
interrupt-driven.
If SLIP networking is enabled (see below), an additional serial port will be
used for it.
Known Problems or Limitations
=============================
The following platform features are unsupported:
* Isolated Memory Regions
* Serial port in Direct Memory Access (DMA) mode
* Serial Peripheral Interface (SPI) flash
* General-Purpose Input/Output (GPIO)
* Inter-Integrated Circuit (I2C)
* Ethernet
* Supervisor Mode Execution Protection (SMEP)
Programming and Debugging
*************************
Use this configuration to run basic Zephyr applications and kernel tests in the QEMU
emulated environment, for example, with the :ref:`synchronization_sample`:
.. code-block:: console
$ make -C samples/synchronization BOARD=qemu_x86 run
This will build an image with the synchronization sample app, boot it using
QEMU, and display the following console output:
.. code-block:: console
***** BOOTING ZEPHYR OS v1.8.99 - BUILD: Jun 27 2017 13:09:26 *****
threadA: Hello World from x86!
threadB: Hello World from x86!
threadA: Hello World from x86!
threadB: Hello World from x86!
threadA: Hello World from x86!
threadB: Hello World from x86!
threadA: Hello World from x86!
threadB: Hello World from x86!
threadA: Hello World from x86!
threadB: Hello World from x86!
Debugging
=========
Refer to the detailed overview about :ref:`application_debugging`.
Networking
==========
The board supports SLIP networking over an emulated serial port
(``CONFIG_NET_SLIP_TAP=y``). The detailed setup is described in
:ref:`networking_with_qemu`.