news 2026/9/15 20:20:12

如何在 QEMU 中运行 Zephyr 示例应用并检查结果输出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何在 QEMU 中运行 Zephyr 示例应用并检查结果输出

如何在 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-multilibg++-multilib不可用,安装时需要把这两个包从列表里去掉。

安装后用下面命令核对版本,对照上表确认满足最低要求:

cmake --version python3 --version dtc --version

获取源码并安装 SDK

以下命令均在 Linux/macOS shell 中执行,Windows 的等价命令见 Getting Started Guide。

  1. 创建并激活 Python 虚拟环境(每次新开终端后都需要重新激活,否则west找不到或会跑在错误的 Python 环境里):
python3 -m venv ~/zephyrproject/.venv source ~/zephyrproject/.venv/bin/activate
  1. 安装 west 并拉取 Zephyr 源码及其模块(west update会下载 HAL、库等模块,耗时取决于网络):
pip install west west init -m https://github.com/zephyrproject-rtos/zephyr ~/zephyrproject cd ~/zephyrproject west update
  1. 安装 Zephyr 的 Python 依赖(版本跟随当前检出的 Zephyr):
west packages pip --install
  1. 导出 Zephyr CMake 包,之后构建应用时find_package(Zephyr)才能自动定位到这份源码:
west zephyr-export
  1. 安装 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 20:20:08

抖音无水印视频与直播批量录制:douyin-downloader 完整上手指南

抖音无水印视频与直播批量录制:douyin-downloader 完整上手指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…

作者头像 李华
网站建设 2026/9/15 20:15:37

Zemax光学设计全流程:从需求到公差分析实战指南

接到一个镜头设计任务,客户只有一句话:“要看得清。”焦距多少、口径多大、工作在哪个波段、像面用多大探测器,统统没提。这时候如果打开Zemax就开始堆镜片,那基本等于拿大炮打蚊子转圈,折腾到半夜也得不到能用的结果。…

作者头像 李华
网站建设 2026/9/15 20:15:00

Blender粒子系统实战指南:从发射器到毛发粒子的核心技巧

做了这么多年三维内容,我越来越觉得粒子系统是Blender里最被低估的功能之一。很多人一听“粒子效果”就联想到爆炸、烟火、魔法特效,觉得那是影视级项目才用得上的东西,实际上粒子系统在Blender里承担的工作远比你想的广泛:一片树…

作者头像 李华
网站建设 2026/9/15 20:14:39

TREK旅行日志:写一本带照片、地图和情绪标签的杂志式游记

TREK旅行日志:写一本带照片、地图和情绪标签的杂志式游记 【免费下载链接】TREK A self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more. 项目地址: https://gitcode.com/GitH…

作者头像 李华