60136f00cb
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>
86 lines
2.4 KiB
ReStructuredText
86 lines
2.4 KiB
ReStructuredText
.. _networking_with_eth_qemu:
|
|
|
|
Networking with QEMU Ethernet
|
|
#############################
|
|
|
|
.. contents::
|
|
:local:
|
|
:depth: 2
|
|
|
|
This page describes how to set up a virtual network between a (Linux) host
|
|
and a Zephyr application running in QEMU.
|
|
|
|
In this example, the :ref:`sockets-echo-server-sample` sample application from
|
|
the Zephyr source distribution is run in QEMU. The Zephyr instance is
|
|
connected to a Linux host using a tuntap device which is modeled in Linux as
|
|
an Ethernet network interface.
|
|
|
|
Prerequisites
|
|
*************
|
|
|
|
On the Linux Host, fetch the Zephyr ``net-tools`` project, which is located
|
|
in a separate Git repository:
|
|
|
|
.. code-block:: console
|
|
|
|
git clone https://github.com/zephyrproject-rtos/net-tools
|
|
|
|
|
|
Basic Setup
|
|
***********
|
|
|
|
For the steps below, you will need two terminal windows:
|
|
|
|
* Terminal #1 is terminal window with net-tools being the current
|
|
directory (``cd net-tools``)
|
|
* Terminal #2 is your usual Zephyr development terminal,
|
|
with the Zephyr environment initialized.
|
|
|
|
When configuring the Zephyr instance, you must select the correct Ethernet
|
|
driver for QEMU connectivity:
|
|
|
|
* For ``qemu_x86``, select ``Intel(R) PRO/1000 Gigabit Ethernet driver``
|
|
Ethernet driver. Driver is called ``e1000`` in Zephyr source tree.
|
|
* For ``qemu_cortex_m3``, select ``TI Stellaris MCU family ethernet driver``
|
|
Ethernet driver. Driver is called ``stellaris`` in Zephyr source tree.
|
|
* For ``mps2_an385``, select ``SMSC911x/9220 Ethernet driver`` Ethernet driver.
|
|
Driver is called ``smsc911x`` in Zephyr source tree.
|
|
|
|
Step 1 - Create Ethernet interface
|
|
==================================
|
|
|
|
Before starting QEMU with network connectivity, a network interface
|
|
should be created in the host system.
|
|
|
|
In terminal #1, type:
|
|
|
|
.. code-block:: console
|
|
|
|
./net-setup.sh
|
|
|
|
You can tweak the behavior of the ``net-setup.sh`` script. See various options
|
|
by running ``net-setup.sh`` like this:
|
|
|
|
.. code-block:: console
|
|
|
|
./net-setup.sh --help
|
|
|
|
|
|
Step 2 - Start app in QEMU board
|
|
================================
|
|
|
|
Build and start the :ref:`sockets-echo-server-sample` sample application.
|
|
In this example, the qemu_x86 board is used.
|
|
|
|
In terminal #2, type:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/net/sockets/echo_server
|
|
:host-os: unix
|
|
:board: qemu_x86
|
|
:gen-args: -DOVERLAY_CONFIG=overlay-e1000.conf
|
|
:goals: run
|
|
:compact:
|
|
|
|
Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
|