Zephyr - MCU 开发快速入门指南

目录

[1. Zephyr介绍](#1. Zephyr介绍)

[2. Zephyr 安装及环境搭建](#2. Zephyr 安装及环境搭建)

[3. Zephyr 构建点亮LED指示灯实例](#3. Zephyr 构建点亮LED指示灯实例)

[4. Zephyr应用-具体行动建议](#4. Zephyr应用-具体行动建议)

1. Zephyr介绍

1.1 Zephyr 介绍

Zephyr 是由 Linux 基金会主导开发的开源实时操作系统(RTOS),专为资源受限的嵌入式设备量身打造,凭借轻量化、高可移植性和模块化的特性,成为物联网嵌入式领域的主流选择。

其核心价值与设计逻辑高度统一,核心特点可总结为以下几点:

  • 跨平台适配能力突出: 支持 ARM Cortex-M/A、RISC-V、x86 等主流处理器架构,可适配 STM32、nRF、ESP32、TI 等多款主流 MCU。这一能力的核心是设备树(Device Tree)驱动的硬件抽象------ 区别于 FreeRTOS 直接调用 HAL 库的方式,Zephyr 通过 .dts 文件描述硬件信息,编译时自动生成对应头文件供驱动和应用调用,实现硬件配置与软件代码彻底解耦,达成 "一次开发,多板适配" 的目标 。

  • 模块化设计与统一构建工具链: 采用组件化裁剪设计,可按需取舍功能,兼顾功能丰富性与资源轻量化;同时以 West 作为元工具,整合 CMake 构建框架和类 Linux 内核的 Kconfig 配置系统(支持 menuconfig 图形化配置),实现源码管理、编译、烧录、调试的一站式管理,模块化配置灵活度极高。

  • 标准化的设备驱动模型: 提供统一的设备驱动接口,应用程序只需通过 device_get_binding() 等标准 API 获取设备操作能力,无需直接操作寄存器或厂商 HAL 库,大幅提升代码通用性和可维护性。

  • 物联网协议栈开箱即用: 内置 BLE、Zigbee、MQTT、LwIP、CoAP 等主流物联网协议栈,无需开发者单独集成,降低物联网嵌入式设备的开发门槛。

  • 安全特性完善: 内置安全启动、数据加密、PSA 认证等能力,可满足工业级和消费级嵌入式设备的安全需求。

简言之,Zephyr 以 "硬件抽象解耦 + 统一驱动模型 + 模块化构建" 为核心设计理念,兼顾跨平台适配、协议栈丰富性和安全性,是面向资源受限场景的高性能嵌入式 RTOS。

1.2 Zephyr 与 FreeRTOS 的核心差异

特性 FreeRTOS Zephyr
架构定位 微内核 RTOS。严格聚焦于实时调度核心(任务、通信、同步、内存), 其他功能(如网络、文件系统)依赖第三方库或自行实现 模块化宏内核 RTOS。定位为全功能嵌入式操作系统, 集成了内核、丰富的组件栈、硬件抽象层和开发框架于一个紧密集成的生态中
核心功能 仅提供基础 RTOS 内核服务:- 任务/协程 - 队列、信号量、互斥量、事件组 - 软件定时器 - 内存管理(heap_1~5) 内核 + 丰富内置组件:- 基础内核 - 完整设备驱动模型(1000+驱动) - 网络栈: L2/L3/L4, IPv6/4, BLE, 802.15.4, CoAP, MQTT - 文件系统: FAT, LittleFS, NVS - 高级框架: USB 设备/主机栈, 显示/GUI, 电源管理, 传感器框架 - 安全: PSA 认证, TFM 集成, 安全启动 - 更新: MCUboot(OTA)
硬件与设备支持 需开发者适配底层驱动(如 GPIO、UART) 统一设备模型与驱动框架。通过Devicetree (DT) 描述硬件, 内核内置上千个高质量、经过测试的驱动程序, 支持 ARM Cortex-M/R/A, RISC-V, Xtensa 等开发板
构建与配置系统 无统一构建工具,依赖 IDE / 手写 Makefile 基于 CMake + West (元工具) 的现代统一构建系统。 - Kconfig: 提供图形化/命令行菜单配置, 系统性裁剪整个 OS。 - West: 统一管理多仓库代码、项目配置、编译、烧录、调试。 - Devicetree: 自动生成硬件配置头文件
内存占用 极致精简。内核ROM可小至 ~5-10KB, RAM仅需数百字节(取决于任务数)。是资源极度受限(< 32KB Flash/RAM)场景的经典选择 可深度裁剪。最小配置(无驱动、无网络)可接近 FreeRTOS(~10KB+)。一旦启用核心组件(如驱动模型、IPC), 内存占用会显著增加(~20-50KB RAM 起)
开发门槛 入门简单。概念少, API 直观, 适合快速上手和理解 RTOS 原理。"自己动手"程度高, 适合对硬件和底层有掌控感的开发者 学习曲线陡峭。必须掌握 Kconfig, Devicetree, CMake, West 这一套工具链。抽象层次高, 初期调试可能复杂。但上手后生产力高, 尤其适合复杂产品
适用场景 经典、确定性的实时控制。 - 工业电机控制 - 小型传感器节点 - 对内存和时序有极端要求的场景 - 作为其他大型OS的底层RTOS 功能复杂的互联智能设备。 - IoT 边缘节点(需 BLE, Thread, Wi-Fi) - 可穿戴设备 - 智能家居/工业网关 - 需要强大电源管理、安全启动、OTA 的产品

2. Zephyr 安装及环境搭建

Zephyr 官方对 Linux(Ubuntu 20.04/22.04)兼容性最佳,Windows 推荐优先使用 WSL2(Windows Subsystem for Linux 2)部署 Ubuntu 环境(完全复用 Linux 流程),也支持原生 Windows 安装。

zephyr 官方入门参考

2.1 Linux系统下环境搭建

Linux系统搭建参考

2.1.1 系统依赖安装

打开终端,依次执行以下命令安装基础依赖(建议使用 sudo 权限)

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

# 2. 安装核心依赖(git、cmake、编译工具、Python等)
sudo apt install -y git cmake ninja-build gperf \
  ccache dfu-util device-tree-compiler wget \
  python3-dev python3-pip python3-setuptools python3-wheel xz-utils file \
  make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1

2.1.2 安装 West 工具(Zephyr 核心管理工具)

West 是 Zephyr 的命令行工具,用于源码管理、构建、烧录。安装步骤如下:

bash 复制代码
# 1. 安装West(通过pip3,--user避免全局权限问题)
pip3 install --user west

# 2. 将West加入系统PATH(永久生效,适配bash终端)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# 3. 验证West安装(输出版本号即成功)
west --version
# 预期输出:West version: v1.x.x(如v1.0.0、v1.1.0)

2.1.3 获取 Zephyr 源码

bash 复制代码
# 1. 创建Zephyr工作目录并进入
mkdir -p ~/zephyrproject && cd ~/zephyrproject

# 2. 初始化West(指定稳定版,推荐v3.5.0;国内替换为Gitee镜像加速)
# 国内Gitee镜像(推荐):
west init -m https://gitee.com/zephyrproject-rtos/zephyr --mr v3.5.0 .

# 官方源(海外):
# west init -m https://github.com/zephyrproject-rtos/zephyr --mr v3.5.0 .

# 3. 下载所有依赖模块(约1-2GB,国内建议开代理/镜像)
west update

# 4. 导出Zephyr编译配置
west zephyr-export

# 5. 安装Python依赖
pip3 install --user -r zephyr/scripts/requirements.txt

2.1.4 安装交叉编译工具链

bash 复制代码
# 1. 下载工具链(以v0.16.1为例,兼容v3.5.0)
cd ~/zephyrproject
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz
# 验证文件完整性(可选)
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing

# 2. 解压并安装工具链
tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz
cd zephyr-sdk-0.16.1
sudo ./setup.sh

# 3. 安装udev规则(识别开发板,如ST-Link/J-Link)
sudo cp ~/zephyrproject/zephyr/boards/common/usb/*.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

2.1.5 环境验证

bash 复制代码
# 1. 检查CMake版本(需≥3.20)
cmake --version

# 2. 检查交叉编译器(以ARM为例)
arm-zephyr-eabi-gcc --version

# 3. 列出支持的板卡(验证源码加载正常)
west boards | grep stm32f4  # 输出stm32f4_disco等即正常

2.2 Windows 下环境搭建

2.2.1 安装基础工具

使用 winget 一键安装。打开 PowerShell(管理员模式),执行以下命令:

bash 复制代码
# 
winget install Kitware.CMake Ninja-build.Ninja oss-winget.gperf Python.Python.3.12 Git.Git oss-winget.dtc wget 7zip.7zip

# 安装完成后,验证环境变量是否生效(避免后续编译时找不到工具)
cmake --version  # 应显示 3.20+
ninja --version  # 应显示 1.10+
python --version # 应显示 3.12.x(若显示 3.10 以下,需手动添加 Python 路径到环境变量)
git --version    # 应显示 2.30+

若 winget 一键安装失败或 winget 不可用,就采用手动安装的方式:

手动安装的工具,要勾选 "添加到系统 PATH".

2.2.2 创建并激活 Python 虚拟环境

bash 复制代码
安装注意事项:
. 安装路径建议选择 D:\Miniconda,避免路径中出现空格;
. 务必勾选:✔ Add Miniconda to PATH,这样可以在命令行中直接使用 Conda 命令;
. 勾选:✔ Register as system Python,方便系统识别 Python 环境;
bash 复制代码
# 创建 zephyr 开发环境
# 1. 打开 PowerShell ,执行以下命令:
# 1.1 切换到 D 盘
D:

# 1.2 创建工作目录
mkdir D:\work

# 1.3 基于 venv 创建虚拟环境  env_zephyr
# python -m venv D:\work\env_zephyr
conda create --prefix D:\work\env_zephyr python=3.11 -y   # 可指定 python 版本

# 2. 激活虚拟环境
# 2.1 配置 PowerShell 执行策略, 首次激活执行一次,解决虚拟环境激活权限问题.
# 提示"是否允许执行"时,输入 Y 确认
set-ExecutionPolicy RemoteSigned -Scope CurrentUser  

# 2.2 执行激活命令
# D:\work\env_zephyr\Scripts\Activate.ps1
conda activate D:\work\env_zephyr
# 激活成功后,命令行前缀会显示 (env_zephyr),如: (env_zephyr) PS D:\>


# 若要退出虚拟环境,执行如下命令
deactivate

2.2.3 安装 West 工具

激活 env_zephyr 环境后,执行如下命令:

bash 复制代码
# 1. 升级 pip (确保 pip 是 3.12 版本),避免安装失败
pip install --upgrade pip

# 2. 安装 west
pip install west
# pip install -i https://mirrors.aliyun.com/pypi/simple/ west==1.2.0   # 安装指定版本的 west

# 3. 验证
west --version

2.2.4 获取 Zephyr 源码

激活 env_zephyr 环境后,执行如下命令:

bash 复制代码
# 切换目录到  D:\work 
cd D:\work


# 1. 初始化创建工作区 zephyrproject
# 命令执行后,会在 D:\work 目录下创建一个工作区目录 zephyrproject
# python -m west init D:\work\zephyrproject -m https://gitee.com/zephyrproject-rtos/zephyr   # 拉取最新版本, 国内镜像太久未更新,不可用
# west init D:\work\zephyrproject -m https://gitee.com/zephyrproject-rtos/zephyr --mr v3.5.0 # 拉取指定版本
python -m west init D:\work\zephyrproject -m https://github.com/zephyrproject-rtos/zephyr # 官方 GitHub 仓库 初始化


# 2. 进入目录
cd zephyrproject 

# 3. 更新同步代码,下载依赖模块 (国内镜像暂不可用,跳过 3.1 、3.2 、3.3 步)
# 3.1 国内连接 github.com 会超时失败;  把 west.yml 中所有子仓库的 github.com 替换为 gitee.com(Zephyr 官方 Gitee 镜像)
# Copy-Item zephyr/west.yml zephyr/west.yml.bak -Force  # 备份原 west.yml

# 3.2 批量替换所有 GitHub 地址为 Gitee 镜像
# (Get-Content zephyr/west.yml) -replace 'https://github.com/zephyrproject-rtos', 'https://gitee.com/zephyrproject-rtos' | Set-Content zephyr/west.yml -Encoding UTF8   

# 3.3 查看替换后的文件,确认地址已改为 Gitee
# Select-String -Path zephyr/west.yml -Pattern 'gitee.com'  
# 预期输出: zephyr\west.yml:23:      url-base: https://gitee.com/zephyrproject-rtos

# 3.4 更新
west update

# west update zephyr hal_nordic mcuboot segger mcumgr tinycbor       # 指定更新依赖


# 4. 导出 Zephyr 编译配置(让 CMake 能找到 Zephyr 头文件/库)
west zephyr-export

# 5. 安装 Zephyr 所需的 Python 依赖(自动读取 west.yml 中的配置)
pip install -r zephyr\scripts\requirements.txt

2.2.5 安装交叉编译工具链

Zephyr SDK 包含交叉编译器(支持 Arm/Cortex-M 等架构)、调试工具、仿真器,必须安装.

zephyr-sdk-0.17.4_windows-x86_64.7z 下载

激活 env_zephyr 环境后,执行如下命令:

bash 复制代码
# 1. 切换目录,并创建目录 zephyr-sdk
cd D:\work
mkdir zephyr-sdk;cd .\zephyr-sdk\

# 2. 将下载好的 zephyr-sdk-0.17.4_windows-x86_64.7z 移动到 D:\work\zephyr-sdk

# 3. 提取 Zephyr SDK 捆绑包归档
# 若找不到7z, 手动安装;7z安装到D:\work\7z ,  临时手动添加 7z 到 Path

[7-Zip  官网下载链接](https://www.7-zip.org/) 

$env:Path += ";D:\work\7z\7-Zip"      
7z x zephyr-sdk-0.17.4_windows-x86_64.7z


# 4. 运行Zephyr SDK捆绑包的设置脚本
cd zephyr-sdk-0.17.4
.\setup.cmd

# 5. 设置用户环境变量
$env:ZEPHYR_SDK_INSTALL_DIR = "D:/workTest/zephyr-sdk/zephyr-sdk-0.17.4"  # 临时使用指定版本的编译器
$env:Path = "$env:ZEPHYR_SDK_INSTALL_DIR\arm-zephyr-eabi\bin;" + $env:Path
#$env:Path = "$env:ZEPHYR_SDK_INSTALL_DIR\riscv64-zephyr-elf\bin;" + $env:Path

# 6. 验证
arm-zephyr-eabi-gcc --version
# riscv64-zephyr-elf-gcc --version

2.2.6 环境验证

conda activate D:\work\env_zephyr 激活环境后,执行如下命令:

bash 复制代码
# 检查CMake
cmake --version

# 检查交叉编译器(ARM)
arm-zephyr-eabi-gcc --version

# 列出支持的板卡
cd D:\work\zephyrproject
west boards | findstr stm32f4

3. Zephyr 构建实例

以 STM32F4 Discovery(STM32F407)开发板为例,实现 UART通信(FreeRTOS 开发者最易上手的入门案例),对比 FreeRTOS 的操作方式,理解 Zephyr 的设备模型和 API。

使用 vscode 开发,创建工作区,并在 .vscode/settings.json 文件 添加激活环境配置 .

3.1 创建工程

Zephyr 提供west init创建工程,也可基于官方示例修改(推荐新手用示例):

bash 复制代码
# 进入zephyrproject目录
cd ~/zephyrproject

# 复制官方UART示例到自定义工程目录
cp -r zephyr/samples/boards/st/uart/single_wire ~/zephyrproject/myProject
cd ~/zephyrproject/myProject/single_wire

3.2 配置设备树(硬件抽象)

Zephyr 通过设备树(.dts)描述硬件,无需直接操作寄存器。修改工程配置,指定目标板卡并定义 UART 引脚

3.2.1 新建 stm32f4_disco.overlay(设备树覆盖文件,用于自定义硬件)

新建的 stm32f4_disco.overlay 放在 prj.conf 同目录或 boards/ 目录下(为了提高操作的成功率,将boards目录下的其他 .overlay 删除)

dts 复制代码
/* stm32f4_disco.overlay 文件 */
/*
 * Device Tree Overlay for STM32F4 Discovery UART
 */

/ {
    aliases {
        single-line-uart1 = &usart1;
        single-line-uart2 = &usart2;
    };
};

/* 配置USART1 - 使用正常引脚 */
&usart1 {
    status = "okay";
    current-speed = <115200>;
    /* 使用完整的TX/RX引脚 */
    pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
    pinctrl-names = "default";
};

/* 配置USART2 - 使用正常引脚 */
&usart2 {
    status = "okay";
    current-speed = <115200>;
    /* 使用完整的TX/RX引脚 */
    pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3>;
    pinctrl-names = "default";
};

3.2.2 修改prj.conf(工程配置文件),启用 GPIO 驱动

conf 复制代码
# 核心:启用串口驱动
CONFIG_SERIAL=y

# STM32 UART驱动
CONFIG_UART_STM32=y
CONFIG_UART_INTERRUPT_DRIVEN=y

# 调试输出
CONFIG_PRINTK=y
CONFIG_STDOUT_CONSOLE=y

# 控制台配置(如果需要)
# CONFIG_CONSOLE=y
# CONFIG_UART_CONSOLE=y

# 注意:先不要启用控制台,避免冲突

# 链接器配置(尝试禁用某些特性)
CONFIG_PICOLIBC=y
CONFIG_MINIMAL_LIBC=n
CONFIG_NEWLIB_LIBC=n

# 禁用LTO(链接时优化)可能有助于解决链接问题
CONFIG_LTO=n

3.2.3 编写 UART 测试代码

C 复制代码
// 修改src/main.c,替换原有代码

/*
 * Single-wire UART test for STM32F4 Discovery
 * Loopback test between USART1 and USART2
 */

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/uart.h>
#include <zephyr/sys/printk.h>

/* 直接使用节点标签 */
#define UART1_NODE DT_NODELABEL(usart1)
#define UART2_NODE DT_NODELABEL(usart2)

/* 获取设备指针 */
const struct device *uart1 = DEVICE_DT_GET(UART1_NODE);
const struct device *uart2 = DEVICE_DT_GET(UART2_NODE);

int main(void)
{
    unsigned char recv;
    int ret;
    
    printk("Single-wire UART Loopback Test on STM32F4 Discovery\n");
    
    /* 检查设备是否就绪 */
    if (!device_is_ready(uart1)) {
        printk("Error: UART1 device is not ready\n");
        return 0;
    }
    
    if (!device_is_ready(uart2)) {
        printk("Error: UART2 device is not ready\n");
        return 0;
    }
    
    printk("UART1 and UART2 are ready for single-wire communication\n");
    printk("Make sure to connect PA9 (USART1_TX) and PA2 (USART2_TX) together\n");
    
    /* 主循环 */
    while (true) {
        /* 从UART1发送字符 */
        uart_poll_out(uart1, 'c');
        printk("Sent 'c' via USART1 (PA9)\n");
        
        /* 等待传输完成 */
        k_sleep(K_MSEC(50));
        
        /* 从UART2接收 */
        ret = uart_poll_in(uart2, &recv);
        
        if (ret < 0) {
            printk("Receiving failed. Error: %d\n", ret);
        } else {
            printk("Received '%c' via USART2 (PA2)\n", recv);
        }
        
        /* 等待2秒后再次测试 */
        k_sleep(K_MSEC(2000));
    }
    
    return 0;
}

3.2.4 CMakeLists.txt 更改

若 build 构建出错,可调整 CMakeLists.txt 配置。

bash 复制代码
# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.20.0)

# 指定工具链文件(添加这行)
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/toolchain.cmake")


find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})



# 项目名称(与单总线 UART 业务匹配)
project(uart_stm32_single_wire)

# 显式声明 C 标准(匹配 Zephyr 4.x 默认配置,避免编译警告)
target_compile_features(app PRIVATE c_std_11)

# 添加应用源码(你的业务代码)
target_sources(app PRIVATE
    src/main.c
    )


# 【关键修复】添加链接器选项,使用 -lgcc 而不是 -lgcc.a
target_link_options(app PRIVATE 
    -lgcc  # 修复:使用 -lgcc 而不是 -lgcc.a
)

# 添加链接器搜索路径
target_link_directories(app PRIVATE
    "D:/work/zephyr-sdk/zephyr-sdk-0.17.4/arm-zephyr-eabi/lib/gcc/arm-zephyr-eabi/12.2.0/thumb/v7e-m/nofp"
)

# 【可选】调试信息:显示链接器路径
message(STATUS "Linker search path: D:/work/zephyr-sdk/zephyr-sdk-0.17.4/arm-zephyr-eabi/lib/gcc/arm-zephyr-eabi/12.2.0/thumb/v7e-m/nofp")

3.3 构建工程

通过 west 编译工程,指定目标板卡

bash 复制代码
# 进入工程目录
cd ~/zephyrproject/myProject/single_wire

# 清除 build
Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue  # 直接删除整个 build 目录

# 构建工程(-b指定板卡为stm32f4_disco)
west build -b stm32f4_disco .

# 编译成功后,生成的固件在build/zephyr/zephyr.elf(可烧录文件为zephyr.bin)

3.4 烧录与验证

通过 west 编译工程,指定目标板卡

bash 复制代码
# 1. J-Link 连接 STM32F4 Discovery 开发板
# 2. 执行烧录命令, west烧录(自动识别烧录器,支持J-Link/ST-Link):
west flash

3.5 关键差异说明(对比 FreeRTOS)

  • FreeRTOS 需手动调用 HAL 库配置 GPIO 寄存器,Zephyr 通过设备树抽象硬件,代码与硬件解耦;
  • FreeRTOS 的延时依赖vTaskDelay(基于系统节拍),Zephyr 的k_msleep是内核统一延时 API,支持毫秒 / 微秒级;
  • Zephyr 的device_is_ready确保硬件驱动初始化完成,FreeRTOS 需手动保证驱动初始化顺序;

4. Zephyr应用-具体行动建议

从 FreeRTOS 转向 Zephyr,建议分阶段学习,兼顾 "快速上手" 和 "深度掌握",以下是落地性强的行动方案:

4.1 入门阶段:聚焦核心基础

1.环境固化: 基于 Ubuntu/Windows 搭建稳定环境,保存依赖安装脚本(避免重复踩坑);

2.案例实操:

  • 基于官方案例先显示 LED 案例,再实现 UART 串口打印、定时器中断等;
  • 重点理解west build/flash/debug命令、设备树覆盖文件(.overlay)、prj.conf配置;

3.API 对比学习: 整理 FreeRTOS 与 Zephyr 核心 API 映射表(如下),降低记忆成本;

FreeRTOS API Zephyr RTOS 等效 API 用途说明
vTaskCreate k_thread_create 创建任务/线程
vTaskDelay k_msleep / k_usleep / k_sleep 任务延时
xQueueSend / xQueueReceive k_msgq_put / k_msgq_get 消息队列操作
xSemaphoreTake / Give k_sem_take / k_sem_give 信号量操作
xTimerCreate k_timer_init + k_timer_start 定时器创建与启动
xTaskGetCurrentTaskHandle k_current_get 获取当前任务句柄
vTaskSuspend / Resume k_thread_suspend / k_thread_resume 挂起与恢复任务
xQueueCreate k_msgq_alloc_init 动态创建消息队列
xTaskGetTickCount k_uptime_get_32 / k_cycle_get_32 获取系统时间或 tick

4.2 进阶阶段: 掌握核心组件

1.设备树深入学习:

  • 阅读 Zephyr 官方设备树文档,理解dt-bindings、节点别名、属性配置;
  • 自定义板卡的设备树文件,适配自己的 MCU 开发板;

2.组件配置实战:

  • 通过menuconfig(west build -t menuconfig)配置组件(如启用 BLE、关闭无用模块);
  • 实现 "BLE 广播 + LED 控制" 案例(Zephyr 内置 BLE 协议栈,无需单独集成 Nordic SoftDevice);

3.调试能力建设:

  • 学习west debug(基于 GDB)调试 Zephyr 工程,查看任务栈、内核状态;
  • 使用 Zephyr 的sysview工具分析任务调度(替代 FreeRTOS 的 Tracealyzer);

4.3 推荐参考资料

zephyr API参考:内核、驱动 API 详解

设备树指南:硬件抽象核心

West 命令手册

zephyr-开发环境配置疑难问题解决

相关推荐
星源~2 小时前
zephyr-开发环境配置疑难问题解决
单片机·嵌入式硬件·物联网·项目开发
BMS小旭2 小时前
CubeMx-DMA
单片机·学习·cubemx·dma
wotaifuzao2 小时前
(八)BLE MTU 全栈解析:从 20 字节瓶颈到 160KB/s
物联网·蓝牙·ble·ota·mtu
电子小白12312 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
清风66666612 小时前
基于单片机的多传感器智能云梯逃生控制器设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计
小何code12 小时前
STM32入门教程,第10课(上),OLED显示屏
stm32·单片机·嵌入式硬件
来自晴朗的明天12 小时前
高速画板-USB模块的PCB设计5-USB2.0/3.0布局布线要求
单片机·嵌入式硬件·硬件工程
早日退休!!!14 小时前
ARM Cortex-M核 【保存上下文&恢复上下文】
arm开发·单片机·嵌入式硬件
来自晴朗的明天15 小时前
差分控多少Ω阻抗
单片机·嵌入式硬件·硬件工程