zephyr-Linux环境下搭建步骤

目录

  [1. 基础嵌入式环境配置](#1. 基础嵌入式环境配置)

  [2. 环境最终验证](#2. 环境最终验证)

Zephyr RTOS 是一款开源、跨平台、轻量级、高安全性的嵌入式实时操作系统,全面适配 STM32、GD32、HC32 等主流及国产 MCU,是物联网、低功耗嵌入式设备开发的优选系统。

本教程基于 VMware + Ubuntu 22.04 LTS 搭建官方标准 Zephyr 开发环境,采用 pyenv + 虚拟环境 双层隔离方案,彻底解决 Zephyr 严格的依赖版本限制,杜绝多项目环境冲突,一次配置永久复用,适配日常开发、项目编译、固件烧录全流程。

环境说明:

  • 主机系统:Windows 10/11
  • 虚拟机:Ubuntu 22.04 LTS(桌面版)
  • 搭建目标:搭建通用嵌入式工具链 + Zephyr 开发环境
  • 核心优势:环境完全隔离、无依赖冲突、官方标准流程、一次配置永久生效

1. 基础嵌入式环境配置

1.1 系统更新与基础工具安装

进入Linux系统桌面,打开终端(快捷键 Ctrl+Alt+T),执行系统初始化配置:

bash 复制代码
# 更新软件源 && 升级系统软件
sudo apt update && sudo apt upgrade -y

# 安装解压工具
sudo apt install unzip -y

1.2 安装 Zephyr 系统级依赖

bash 复制代码
# 必备依赖,全局安装:
sudo apt install --no-install-recommends git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-venv \
xz-utils file make gcc-multilib libsdl2-dev libmagic1 -y

# 验证依赖版本
cmake --version
dtc --version

1.3 安装和配置 pyenv

bash 复制代码
# pyenv:负责管理项目所需的 Python 解释器版本,例如为Zephyr项目锁定Python 3.8、3.9等特定版本
# venv:在选定Python解释器的基础上,负责为每个项目创建独立的依赖环境,隔离不同项目的Python包,避免版本冲突

# 1. 安装vpyenv 编译依赖
sudo apt install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libffi-dev liblzma-dev software-properties-common -y

# 2. 安装并配置 pyenv
# 2.1 自动安装 pyenv
curl https://pyenv.run | bash

# 2.2 配置环境变量(永久生效,写入bashrc)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 2.3 立即生效配置
source ~/.bashrc

# 2.4 验证 pyenv 安装成功
pyenv --version  # 显示版本号即成功

1.4 使用 pyenv 安装指定Python版本并创建 Zephyr 专用虚拟环境

bash 复制代码
# Zephyr v3.7+ 要求 Python ≥3.12,我们安装稳定版 3.12.7
# 为了演示升级Python版本,暂安装3.9.18版本;若不尝试该步骤,可直接安装3.12.7版本

pyenv install --list # 查看可安装的Python版本

# 1. 安装适配Zephyr的稳定Python版本
# pyenv install 3.12.7
pyenv install 3.9.18


# 2. 创建工作目录
mkdir -p ~/work/zephyrproject && cd ~/work/zephyrproject

# 3. 为当前Zephyr项目设置专属Python版本(局部生效 )
pyenv local 3.9.18

# 4. 验证当前Python版本(必须显示3.9.18)
python --version

# 5. 在当前工作目录创建虚拟环境
python -m venv .env_zephyr


# 6. 激活虚拟环境( 激活成功标志:终端前缀变为 (.env_zephyr)
source .env_zephyr/bin/activate

# 永久激活(开机自动生效,避免重复输入)
echo "source ~/work/zephyrproject/.env_zephyr/bin/activate" >> ~/.bashrc
source ~/.bashrc
bash 复制代码
# 升级 python的版本操作
# 若需要 升级 python的版本,按如下步骤操作:
# 1. 退出当前虚拟环境
deactivate  

# 2. 用 pyenv 安装 Python 3.12.0 新版本
pyenv install 3.12.0

# 3. 在项目目录中锁定本地 Python 版本为 3.12.0
cd ~/work/zephyrproject
pyenv local 3.12.0

# 4. 删除旧的虚拟环境目录
rm -rf .env_zephyr

# 5. 用新 Python 创建虚拟环境
python -m venv .env_zephyr

# 6. 激活新虚拟环境
source .env_zephyr/bin/activate

# 7. 若之前安装了 west 工具和配置了Zephyr环境,需要重新升级 pip和安装 Zephyr 依赖
pip install --upgrade pip
pip install west
pip install -r zephyr/scripts/requirements.txt

1.5 安装 west 工具(Zephyr 核心命令行工具)

bash 复制代码
# 在激活的环境中执行:
pyenv which python   # 确认当前 Python 路径, 确保 pip 是在正确的 Python 版本环境里进行操作

pip install --upgrade pip   # 升级虚拟环境内的 pip
pip install west

# 验证安装
west --version

1.6 初始化 Zephyr 工作区并拉取源码

bash 复制代码
# 在激活的环境中执行:

# 1. 进入工作目录
cd ~/work/zephyrproject

# 2. 初始化工作区
west init -m https://github.com/zephyrproject-rtos/zephyr --mr main

# west init -m https://github.com/zephyrproject-rtos/zephyr --mr v3.5.0   # 获取指定版本的源码


# 3. 拉取Zephyr源码与依赖(耗时较长,保持网络畅通)
west update

# 5. 导出CMake配置(官方必备步骤)
west zephyr-export

# 6. 安装Zephyr Python依赖
pip install -r zephyr/scripts/requirements.txt

# 或使用 .west packages
west packages pip --install


# 查看当前版本
west version

# 将 ZEPHYR_BASE 添加到 ~/.bashrc(永久生效)
echo 'export ZEPHYR_BASE=$HOME/work/zephyrproject/zephyr' >> ~/.bashrc
source ~/.bashrc

echo $ZEPHYR_BASE
# 应输出: work/zephyrproject/zephyr

1.7 安装 Zephyr SDK

SDK 是 ARM 编译工具链,指定安装到~/work/zephyrSDK:

bash 复制代码
# 1. 创建SDK目录
mkdir -m 777 ~/work/zephyrSDK
cd ~/work/zephyrSDK


#  2. 指定路径安装SDK  ,需要根据 zephyr 版本安装适配的SDK版本
#  本次安装的Zephyr version: 4.4.99, 对应 SDK版本为 1.0.0
#wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.8/zephyr-sdk-0.16.8_linux-x86_64.tar.xz
#wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.0/zephyr-sdk-1.0.0_linux-x86_64_gnu.tar.xz  # GNU 版

# 若下载太慢,就采用如下方式下载
# aria2 是一款支持多线程、断点续传的下载神器,可以显著提升下载速度
sudo apt install aria2 -y

# -x 16, aria2 会开启 16 个连接进行高速下载 ; 
aria2c -x 16 -s 16 https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v1.0.0/zephyr-sdk-1.0.0_linux-x86_64_gnu.tar.xz


#  2.1 解压 SDK
tar xvf zephyr-sdk-1.0.0_linux-x86_64_gnu.tar.xz

#  2.2 运行 setup.sh 脚本
cd zephyr-sdk-1.0.0
./setup.sh

# 安装过程全部输入 y 确认即可


#  3. 配置 SDK 环境变量(永久生效)
# 3.1 查询 arm-zephyr-eabi-gcc 位置
find ~/work/zephyrSDK -name "arm-zephyr-eabi-gcc" -type f 2>/dev/null

# 输出工具链的实际位置:
work/zephyrSDK/zephyr-sdk-1.0.0/gnu/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc

# 3.2 将 bin 目录永久加入 PATH
echo "export ZEPHYR_SDK_INSTALL_DIR=$HOME/work/zephyrSDK/zephyr-sdk-1.0.0" >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/work/zephyrSDK/zephyr-sdk-1.0.0/gnu/arm-zephyr-eabi/bin' >> ~/.bashrc
echo 'export ZEPHYR_TOOLCHAIN_VARIANT=zephyr' >> ~/.bashrc
source ~/.bashrc

# 关闭终端重新打开,激活虚拟环境后验证工具链是否安装成功
arm-zephyr-eabi-gcc --version
bash 复制代码
# 编译时,会输出各工具的版本信息
west build -b nrf52840dk/nrf52840 . --pristine

# - west build: generating a build system
# Loading Zephyr default modules (Zephyr base).
# -- Application: /home/mm2/work/zephyrproject/project/prjBlueTest
# -- CMake version: 3.22.1
# -- Found Python3: /home/mm2/work/zephyrproject/.env_zephyr/bin/python (found suitable version "3.12.0", minimum required is "3.12") found components: Interpreter 
# -- Cache files will be written to: /home/mm2/.cache/zephyr
# -- Zephyr version: 4.4.99 (/home/mm2/work/zephyrproject/zephyr)
# -- Found west (found suitable version "1.5.0", minimum required is "0.14.0")
# -- Board: nrf52840dk, qualifiers: nrf52840
# Could not find a configuration file for package "Zephyr-sdk" that is
#   compatible with requested version "1.0".     #版本不兼容

# 若Zephyr SDK 不满足 Zephyr 内核有严格的版本对应关系,就进行如下升级 SDK的操作

# 1. 打开配置文件
gedit ~/.bashrc

#注释或删除以下两行旧配置
# export ZEPHYR_SDK_INSTALL_DIR=$HOME/work/zephyrSDK/zephyr-sdk-0.16.8
# export PATH=$PATH:$HOME/work/zephyrSDK/zephyr-sdk-0.16.8/arm-zephyr-eabi/bin

# 2. 删除旧 SDK 目录
rm -rf ~/work/zephyrSDK

# 3.  按安装步骤:1.7  安装 Zephyr SDK   重新加载新 SDK 

1.8 配置 Linux 硬件权限

配置USB设备权限,解决烧录、调试权限不足问题,同时安装J-Link驱动,适配主流调试器。

bash 复制代码
# 1. 安装官方 udev 规则(允许 ST-Link/J-Link/串口访问)
cd ~/work/zephyrSDK/zephyr-sdk-1.0.0
sudo ./setup.sh -u

# 2. 重启 udev 服务,使新的规则生效
sudo udevadm control --reload-rules
sudo udevadm trigger

# 3. 安装串口调试工具
sudo apt install picocom -y

#========== J-Link驱动安装 ==========
# 4. jlink 驱动安装
# 4.1 新建工具存放目录
mkdir -p ~/work/tool/jlink
cd ~/work/tool/jlink

# 4.2 进入官网下载J-Link驱动
https://www.segger.com/downloads/jlink/

# 4.3 选择 Linux版的 JLink_Linux_V938a_x86_64.deb  下载安装包
# 4.4 移动安装包到 /work/tool/jlink/
mv JLink_Linux_V938a_x86_64.deb ~/work/tool/jlink/

# 4.5 运行安装命令
sudo dpkg -i JLink_Linux_V938a_x86_64.deb

# sudo apt install -f   # 修复依赖(如有需要)

# 4.6 配置路径, 末尾添加 新路径行
gedit ~/.bashrc
export PATH=$PATH:/opt/SEGGER/JLink
source ~/.bashrc

# 4.7 检查 J-Link 软件是否安装成功
JLinkExe -v

#========== J-Link驱动安装结束 ==========

2. 环境最终验证

编译 STM32 示例程序,测试环境是否正常:

bash 复制代码
# 1. 进入源码目录
cd ~/work/zephyrproject/zephyr

# 2. 清理全部缓存, 在需要时可进行该指令操作
# west build -t pristine

# 3. 编译 STM32F4 点灯示例
west build -b stm32f4_disco samples/basic/blinky

# 出现 [100%] Built target zephyr → 环境搭建完成!

# 4. 烧录固件
west flash

#  west flash -r jlink # 指定 jlink 烧录


# 5. 串口调试
west debug   # 会复位并重新烧录程序

west attach # 仅连接到正在运行的目标,不会重新烧录和重启
相关推荐
Huangjin007_1 小时前
【Linux 系统篇(二十)】进程(八):进程创建、进程退出
linux·运维·服务器
吴声子夜歌1 小时前
Shell编程——开发规范
linux·运维·shell
Shadow(⊙o⊙)1 小时前
epoll三大接口到内核+正确认识应用层与内核的联系(6000字)
linux·服务器·网络
皓月盈江1 小时前
Linux系统使用VSCode搭建GO开发环境
linux·vscode·ubuntu·golang·debian
CHHH_HHH2 小时前
【Linux系统篇】进程间通信揭秘:从管道到共享内存
linux·服务器·c语言·开发语言·后端·ubuntu
.冰块.2 小时前
华为云计算服务学习笔记|ECS + 镜像 IMS + 弹性伸缩 AS 完整踩坑实录
linux·华为云·ims·as·ecs·弹性云服务器·计算类云服务
secondyoung10 小时前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
一技安身11 小时前
【信创】银河麒麟V10、统信UOS解压7Z文件
linux·运维·服务器
奔跑的架构师12 小时前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm