Misaki的博客

Zephyr入门第四课——项目迁移新建与缓存及按键输入

本文是Zephyr入门第四课,主题为项目迁移新建与缓存及按键输入。内容涵盖三个任务:项目迁移与新建、按键输入、时钟配置。在项目迁移部分,作者说明了如何从已有blinky项目迁移板级配置(boards目录)和CMakePresets.json文件到新项目(如input_rcc),并演示了将BOARD_ROOT变量放入CMakePresets.json的cacheVariables中,以简化CMakeLists.txt配置。文章还提到后续将学习按键输入与时钟配置。

Misakiotoha 发布于 2026-08-13

Zephyr入门第三课——在IDE当中一步步完成自定义板子的项目配置

这是一篇Zephyr入门教程的第三课,核心内容是讲解Zephyr项目的结构,并指导如何在IDE(以CLion为例)中一步步完成自定义板子的项目配置。 文章首先强调了理解现代Zephyr项目结构的重要性,指出所有自定义配置都建立在对其两大核心机制——Devicetree(设备树)和Kconfig——的理解之上。Devicetree用于描述硬件资源,如晶振频率、GPIO引脚分配、外设地址和内存布局,编译时解析生成C头文件供驱动使用;Kconfig则用于决定编译哪些软件功能,如是否启用网络栈、USB、蓝牙等,通过`prj.conf`或`Kconfig.defconfig`文件配置。 接着,文章以作者为实验室设计的STM32H743IIT6教学板为例,展示了实际项目中如何依据原理图来配置设备树和引脚复用(pinctrl),并强调了确保Kconfig中正确配置`CONFIG_GPIO=y`的必要性。文章通过与STM32 HAL的对比,解释了Zephyr增加复杂性的原因在于实现驱动与硬件的解耦,虽然入门门槛更高,但在项目整体可维护性和底层掌控程度上优于传统开发方式。 此外,文章提及了应用配置的层次结构,包括`prj.conf`、板级默认配置(`board_defconfig`)和内核Kconfig默认值,并警告不推荐使用menuconfig进行配置。最后,文章还附带了开发板原理图中需要注意的硬件问题,如USART2接线反了和WS2812B无法驱动等问题,作为实战中的提醒。

Misakiotoha 发布于 2026-08-05

Zephyr入门第二课——Zephyr基本介绍 + 环境配置

Zephyr 是由 Linux 基金会托管的开源实时操作系统,专为资源受限的嵌入式与物联网设备设计,采用 Apache 2.0 许可证,商业友好。它通过 Devicetree(硬件描述)和 Kconfig(功能配置)两大机制实现“一次编写、多平台运行”,支持 ARM、x86、RISC‑V 等多种架构及 780 余款官方开发板。核心特点包括高度模块化(最小镜像约 2KB Flash)、统一驱动模型、原生集成 TCP/IP、Bluetooth、USB、MQTT 等协议栈,以及 POSIX 兼容层。环境配置部分以 kUbuntu 24.04 LTS 为例,介绍了三层架构(Python 工具层 + Zephyr 源码层 + 交叉编译层),详细说明了安装系统依赖(cmake、ninja、dtc 等)和通过 uv 或直接使用 pip 创建 Python 虚拟环境并安装 west 构建工具的步骤。

Misakiotoha 发布于 2026-07-24

Zephyr入门第一课——劝退!

该文章主要分为三部分:作者的个人技术背景、教程规划,以及针对Zephyr初学者的劝退说明。作者为EE和CS背景,熟练掌握C/C++、Go、Python等语言及嵌入式、后端、硬件设计等技术。教程计划包括入门(环境配置、设备树、自定义PCB、常用函数)和进阶(复杂外设驱动)。劝退部分指出Zephyr更适合有Linux驱动/内核知识、熟悉STM32 HAL/ESP-IDF/FreeRTOS/RT-Thread的资深嵌入式工程师,要求具备科学上网、熟悉C/C++/CMake/Python、拥有Linux物理机或虚拟机经验、理解MCU程序运行流程。达不到这些条件不建议直接入门,但学习本身不受阻挠。

Misakiotoha 发布于 2026-07-18