mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-16 12:32:59 +00:00
While trying out the hello_world sample built for QEMU, I was expecting the sample app to exit and I'd return to a command prompt. Nope. You need to exit QEMU manually, so add that step to the sample instructions. Looking around, there are more uses of QEMU like this that could use this added step after running the sample app. Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
131 lines
3.6 KiB
ReStructuredText
131 lines
3.6 KiB
ReStructuredText
.. _qemu_x86:
|
|
|
|
X86 Emulation (QEMU)
|
|
####################
|
|
|
|
Overview
|
|
********
|
|
|
|
The X86 QEMU board configuration is used to emulate the X86 architecture.
|
|
|
|
.. figure:: qemu_x86.png
|
|
:width: 600px
|
|
:align: center
|
|
:alt: Qemu
|
|
|
|
Qemu (Credit: qemu.org)
|
|
|
|
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
|
|
*************************
|
|
|
|
Applications for the ``qemu_x86`` board configuration can be built and run in
|
|
the usual way for emulated boards (see :ref:`build_an_application` and
|
|
:ref:`application_run` for more details).
|
|
|
|
Flashing
|
|
========
|
|
|
|
While this board is emulated and you can't "flash" it, you can use this
|
|
configuration to run basic Zephyr applications and kernel tests in the QEMU
|
|
emulated environment. For example, with the :ref:`synchronization_sample`:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/synchronization
|
|
:host-os: unix
|
|
:board: qemu_x86
|
|
:goals: 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!
|
|
|
|
Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
|
|
|
|
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`.
|
|
|
|
It is also possible to use the QEMU built-in Ethernet adapter to connect
|
|
to the host system. This is faster than using SLIP and is also the preferred
|
|
way. See :ref:`networking_with_eth_qemu` for details.
|