如何在 QEMU 中运行 Zephyr 示例应用并检查结果输出
【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr
这篇文章解决的问题是:不依赖任何硬件开发板,在宿主机上用 QEMU 模拟运行一个 Zephyr 示例应用,并确认它打印了预期的控制台输出。适合刚装好 Zephyr 开发环境、想先验证“构建—运行—看输出”这条链路是否通了的场景。完成后的结果是:在 QEMU 里运行hello_world示例,看到文档给出的示例输出Hello World! x86,然后正常退出 QEMU。
整条路径基于 Zephyr 官方文档:环境准备部分来自 Getting Started Guide,QEMU 运行部分来自 beyond-GSG 和 hello_world 示例说明。
环境要求
Zephyr 通过 west 工具管理代码和构建,QEMU 则随 Zephyr SDK 一起提供。根据文档的说明:
- 宿主机操作系统:Ubuntu 24.04 LTS 及以后(其他 Linux 发行版需另行参考 Linux 安装文档),或 macOS、Windows;
- 依赖最低版本:CMake 3.28.0、Python 3.12、Devicetree compiler 1.4.6;
- QEMU 支持的目标架构:x86(
qemu_x86板级目标)或 ARM Cortex-M3(qemu_cortex_m3板级目标)。
在 Ubuntu 上用apt安装依赖:
sudo apt install --no-install-recommends git cmake ninja-build gperf \ ccache dfu-util device-tree-compiler wget python3-dev python3-venv python3-tk \ xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1注意:在 AArch64(ARM64)系统上gcc-multilib和g++-multilib不可用,安装时需要把这两个包从列表里去掉。
安装后用下面命令核对版本,对照上表确认满足最低要求:
cmake --version python3 --version dtc --version获取源码并安装 SDK
以下命令均在 Linux/macOS shell 中执行,Windows 的等价命令见 Getting Started Guide。
- 创建并激活 Python 虚拟环境(每次新开终端后都需要重新激活,否则
west找不到或会跑在错误的 Python 环境里):
python3 -m venv ~/zephyrproject/.venv source ~/zephyrproject/.venv/bin/activate- 安装 west 并拉取 Zephyr 源码及其模块(
west update会下载 HAL、库等模块,耗时取决于网络):
pip install west west init -m https://github.com/zephyrproject-rtos/zephyr ~/zephyrproject cd ~/zephyrproject west update- 安装 Zephyr 的 Python 依赖(版本跟随当前检出的 Zephyr):
west packages pip --install- 导出 Zephyr CMake 包,之后构建应用时
find_package(Zephyr)才能自动定位到这份源码:
west zephyr-export- 安装 Zephyr SDK。SDK 包含各架构工具链,也包含用于模拟运行 Zephyr 应用的 QEMU:
cd ~/zephyrproject/zephyr west sdk install如果不用 SDK 自带的 QEMU、而是手动安装的 QEMU,需要确保它位于系统PATH中。
在 QEMU 中构建并运行 hello_world
在 zephyr 仓库根目录(~/zephyrproject/zephyr)下执行。分两步写的方式来自 beyond-GSG,-b qemu_x86指定 x86 模拟板级目标:
west build -b qemu_x86 samples/hello_world west build -t run也可以一步完成,构建并直接运行(来自 hello_world 示例说明):
west build -b qemu_x86 -t run samples/hello_world构建完成后,主要产物位于build/zephyr,其中build/zephyr/zephyr.elf是应用二进制(ELF 格式)。
如果想换成模拟 ARM Cortex-M3,把板级目标改为qemu_cortex_m3:
west build -b qemu_cortex_m3 -t run samples/hello_world检查运行结果
hello_world的源码只有一行输出语句,用CONFIG_BOARD_TARGET拼出目标名(见 main.c):
printf("Hello World! %s\n", CONFIG_BOARD_TARGET);文档给出的示例输出(示例结果,不是必须逐字一致的判定标准):
Hello World! x86也就是说,在 QEMU 窗口里看到Hello World! x86这一行,说明应用已成功运行。退出 QEMU 按Ctrl-a,再按x。
限制与说明
- 官方文档明确 QEMU 运行路径只覆盖 x86 与 ARM Cortex-M3 两种目标;其他架构请用真机烧录(
west flash)或native_sim原生目标。 - 若换用其他示例或板级目标,
qemu_x86需相应替换为该板名;不确定支持哪些板时可在 workspace 内执行west boards查看列表。 - 想继续深入,可参考 Getting Started Guide 的 “Next Steps” 部分,里面有其他示例、
west烧录/调试功能的入口。
【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考