使用 QEMU 以太网进行网络连接
本页面介绍如何在(Linux)主机与运行在 QEMU 中的 Zephyr 应用之间搭建虚拟网络。
在本示例中,Zephyr 源代码发行版中的 Echo server (advanced) 示例应用在 QEMU 中运行。Zephyr 实例通过 tuntap 设备连接到 Linux 主机,该设备在 Linux 中建模为以太网网络接口。
前置条件
在 Linux 主机上,找到 Zephyr 的 net-tools 项目,它可以在 Zephyr 标准安装的 tools/net-tools 目录中找到,也可以从其独立的 git 仓库单独安装:
git clone https://github.com/zephyrproject-rtos/net-tools
基本搭建
对于以下步骤,您需要两个终端窗口:
终端 #1 是以 net-tools 为当前目录的终端窗口(
cd net-tools)终端 #2 是您常用的 Zephyr 开发终端,已初始化 Zephyr 环境。
配置 Zephyr 实例时,必须选择正确的以太网驱动程序以实现 QEMU 连接:
对于
qemu_x86,选择Intel(R) PRO/1000 Gigabit Ethernet driver以太网驱动程序。该驱动程序在 Zephyr 源代码树中称为e1000。对于
qemu_cortex_m3,选择TI Stellaris MCU family ethernet driver以太网驱动程序。该驱动程序在 Zephyr 源代码树中称为stellaris。对于
mps2_an385,选择SMSC911x/9220 Ethernet driver以太网驱动程序。该驱动程序在 Zephyr 源代码树中称为smsc911x。对于
qemu_cortex_a53,默认选择Intel(R) PRO/1000 Gigabit Ethernet driver以太网驱动程序。此外,Echo server (advanced) 示例还包含
qemu_x86_64上 VIRTIO 网络设备的覆盖文件。
步骤 1 - 创建以太网接口
在以网络连接方式启动 QEMU 之前,应在主机系统中创建网络接口。
在终端 #1 中输入:
./net-setup.sh
您可以调整 net-setup.sh 脚本的行为。按如下方式运行 net-setup.sh 可查看各种选项:
./net-setup.sh --help
步骤 2 - 在 QEMU 开发板中启动应用
构建并启动 Echo server (advanced) 示例应用。本示例使用 qemu_x86 开发板。
在终端 #2 中输入:
west build -b qemu_x86 samples/net/sockets/echo_server -- -DEXTRA_CONF_FILE=overlay-e1000.conf
west build -t run
或者,如果您决定在 qemu_x86_64 上使用 VIRTIO 网络设备:
west build -b qemu_x86_64 samples/net/sockets/echo_server -- -DDTC_OVERLAY_FILE=virtnet.overlay -DEXTRA_CONF_FILE=overlay-virtnet.conf
west build -t run
按 CTRL+A x 退出 QEMU。