【Zephyr】Zephyr 环境配置保姆级教程 (windows)
【Zephyr】Zephyr 环境配置保姆级教程 (windows)

环境搭建推荐两种方式,一是在虚拟机中运行、二是在windows下运行。在Ubuntu下搭建环境也比较方便,博主之前一直使用的Ubuntu环境开发和学习zephyr,现在尝试使用Windows下开发。虚拟机下的环境搭建参考官方文档
注意:本文中如果显示路径一会儿D盘一会F盘,那是因为博主是在两台电脑上操作的,这个不影响。

预备

首先电脑本地需要软件包管理器 winget,在现代 Windows 版本中,winget 已默认预装。管理员身份打开电脑 powershell ,输入以下命令验证:

先升级 powershell 7, 新版自带的命令补全。(下文中我的显示powershell 5.1是我没升级前的版本,不影响) 参考文章


安装依赖项

以管理员身份打开 powershell、输入以下指令安装 zephyr 所需的依赖项:

winget install Kitware.CMake Ninja-build.Ninja oss-winget.gperf python Git.Git oss-winget.dtc wget 7zip.7zip SoftwareFreedomConservancy.QEMU
  • Kitware.CMake:CMake 构建系统工具,用于管理软件项目的构建过程。
  • Ninja-build.Ninja:Ninja 构建工具,一个快速的构建系统。
  • oss-winget.gperf:gperf 工具,用于生成完美哈希函数的代码生成器。
  • python:Python 编程语言及其解释器。
  • Git.Git:Git 版本控制系统,用于代码管理和协作。
  • oss-winget.dtc:Device Tree Compiler (dtc),用于编译设备树文件(常用于嵌入式系统)。
  • wget:wget 命令行工具,用于从网络下载文件。
  • 7zip.7zip:7-Zip 压缩和解压工具。
  • QEMU: 仿真平台

将需常用到的加入系统环境变量:
输入以下指令先获取安装路径:

Get-ChildItem -Path 'C:\Program Files','C:\Program Files (x86)',"env:LOCALAPPDATA\Microsoft\WinGet\Packages" -Recurse -File -ErrorAction SilentlyContinue | Where-Object {_.Name -in @('7z.exe','qemu-system-arm.exe','ninja.exe','dtc.exe') } | Select-Object -ExpandProperty DirectoryName -Unique

加入系统环境变量:


重启powershell,输入以下指令检查是否生效:

dtc --version
Ninja --version
qemu-system-arm --version
7z.exe -version

创建 python 虚拟环境

为什么使用虚拟环境?
– 隔离性:避免与系统Python包冲突
– 可重现性:确保开发环境一致性
– 版本管理:独立管理Zephyr相关的Python依赖

# 1. 进入自己的工作路径,创建虚拟环境
python -m venv zephyrproject\.venv

# 2. 激活虚拟环境。如果要退出虚拟环境:deactivate
zephyrproject\.venv\Scripts\Activate.ps1

环境搭建

安装 West 工具

什么是 West ?
west 是一个专门为 Zephyr 项目设计的工具,它简化了项目的初始化、依赖管理、构建、闪存和环境管理等任务。通过使用 west,开发者可以更高效地进行Zephyr项目的开发和调试。

为什么之前安装了 ninja,现在需要west?
west 是管理整个项目生命周期,Ninja 只负责构建步骤。两者都需要。

在虚拟环境中使用 pip 安装 west:

pip install west

完成安装后,执行以下命令验证 west 是否安装成功:

west --version


获取zephyr源码:

west init zephyrproject // 初始化zephyr环境并获取源码
cd zephyrproject        // 进入zephyrproject目录
west update             // 更新zephyr源码

如果要clone自己的zephyr仓库,把第一句指令改为(xxx为自己仓库):

west init -m xxx > > zephyrproject

不出意外的话,更新成功就是这样子:

导出 Zephyr Cmake package:

west zephyr-export
  • 在你的工作区中为 Zephyr 生成 CMake package 配置文件(使得 find_package(Zephyr) 可用)。
  • 生成的文件包含 Zephyr 的路径、需要的 CMake 模块以及构建辅助信息,方便外部 CMake 项目引用 Zephyr。
  • 通常在你已经克隆/更新了 Zephyr 源码后运行;如果只是用 west build 构建示例通常不需要,但如果要把 Zephyr 当作外部库用在其它 CMake 项目,就需要运行它。

安装 python依赖:

pip install -r zephyr\scripts\requirements.txt

-r 是指定依赖文件;

安装完成截图:


安装 Zephyr SDK

Zephyr 软件开发工具包(SDK) 包含 Zephyr 支持的每个架构的工具链,其中包括编译器、汇编器、链接器和构建 Zephyr 应用程序所需的其他程序。

cd .\zephyrproject\zephyr\
west sdk install

如果下载失败,切换网络还是不行,就采用以下方案:
官网SDK下载链接
我使用的是0.17.4版本

下载完成后解压到文件夹,解压路径可以自己选择。
打开 setup.cmd

根据提示按两次Y即可,只需要运行一次就好,如果不更改SDK源码的情况下:

然后把 sdk 的 xtensa-espressif_esp32s3_zephyr-elf\bin\ 路径按照前面说的办法,加入到系统环境变量中,以后需要使用 esp32 的这些工具只需要输入 xtensa-espressif 在按 tab 就可以自动补全,而无需完整指定路径。当然如果需要其他架构的工具链只需指定对应路径即可。
以下是我的安装路径参考。

D:\workspace\tools\zephyr-sdk-0.17.4_windows-x86_64\ze>phyr-sdk-0.17.4\xtensa-espressif_esp32s3_zephyr-elf\bin\

编译构建程序(虚拟开发板)

Sample 路径下有很多的示例,我们构建 hello word 示例。
以 qemu_cortex_m3 为例,构建并运行 hello word 程序:

west build -b qemu_cortex_m3 samples/hello_world -p
west build -t run

编译构建程序(esp32s3开发板)

安装esptool工具:

esptool 是 Espressif 官方的烧录/调试工具,负责通过串口与 ESP32 系列芯片交互:识别芯片、擦写分区、写入固件、校验、复位等。
Zephyr 的 esp32 runner 在执行 west flash 时会调用 esptool 来把 mcuboot 和应用镜像写入 flash

pip install esptool

安装OpenOCD

OpenOCD 的作用:通过 JTAG / SWD 等调试接口把硬件调试探针(J-Link、FTDI、CMSIS-DAP 等)和目标板连接起来,提供一个 GDB Server 和命令接口,用于下载、调试、读写寄存器/内存、单步/断点、复位与电源控制、以及有时通过探针擦写/烧录 flash。

下载链接:https://github.com/espressif/openocd-esp32/releases

下载完成后解压,找到bin文件夹,复制路径,按照之前的办法加入系统环境变量。

检查版本:

openocd --version


拉取 esp32 需要的库:

west blobs fetch hal_espressif 
west update
git rebase origin/main
  • 第一行:下载 Zephyr 项目中 ESP32 平台依赖的二进制固件(如 WiFi/BT blobs),这些通常不包含在源码里,但编译 ESP32 相关应用时必须有。
  • 第二三行:保持本地分支和主线同步。

开发板测试

这里使用esp32s3开发板为例:
描述文字

把 USB 2.0 数据线(标准 A 型转 Micro-B 型)连接开发板和电脑,打开设备管理器,检查自己的端口:我的端口为COM6

如果没有识别到串口,网上搜索下载安装ch343驱动。

编译一个用例:

west build -b esp32s3_devkitc/esp32s3/procpu --sysbuild samples/hello_world -p

这里指的的板卡型号为 esp32s3_devkitc/esp32s3/procpu 的原因是 esp32s3 是双核 cpu,分为 PRO_CPU(通常称 procpu / core0)和 APP_CPU(appcpu / core1),上电时 PRO_CPU 先启动,再由它启动或加载 APP_CPU。在 Zephyr 中,有些板子为双核 SoC 提供“board qualifiers”,形如: board/芯片/目标 —— 比如 esp32s3_devkitc/esp32s3/procpu 和 esp32s3_devkitc/esp32s3/appcpu。 这是因为需要分别为两个核构建不同的固件镜像(启动核与从核职责可能不同)。

--sysbuild :选择使用 MCUboot 引导加载程序。

编译结果:

下载

west -v flash

-v 参数:显示 west 命令的细节

下载成功:

打开串口检测:

west espressif monitor --port COM6

成功输出 hello word!

至此,我们的开发环境搭建完成了。因为博主准备后续使用esp32s3,所以用此开发板为例搭建环境。


调试

方式1:

xtensa-esp32s3-elf-gdb build/zephyr/zephyr.elf
(gdb) target remote :3333

方式2:

west debug


参考链接:
[1] Zephy移植到STM32
[2] Zephyr 编译环境搭建(Linux + Window)
[3] 官方文档
[4] ESP32-S3-DevKitC-1 v1.1
[5] 快速提高生产力——Power Shell也能命令提示并自动补全
[6] 官网SDK下载链接
[7] Openocd下载连接


了解 Heiweilu的小世界 的更多信息

订阅后即可通过电子邮件收到最新文章。

💡本内容采用 CC BY-NC-SA 4.0 协议,非商业转载需注明作者和出处,商业用途请联系作者授权,衍生作品需采用相同协议。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇

了解 Heiweilu的小世界 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读

🎵 背景音乐
点击播放
00:00 00:00