自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 【Zephyr开发系列-16】线程

每个线程有一个32位自定义数据区域,只有线程自己能访问,默认值为0。需启用。// 设置当前线程的自定义数据// 获取当前线程的自定义数据。

2026-08-20 18:19:27 6

原创 【Zephyr开发系列-15】Devicetree与Kconfig

Devicetree描述硬件及其启动时的配置,例如外设实例、时钟频率、中断资源等;Kconfig配置软件构建选项,用以决定最终固件中启用哪些功能、编译哪些驱动以及采用何种软件特性。Zephyr的构建通常先处理Devicetree,再解析Kconfig。Devicetree到Kconfig的映射,主要通过Kconfiglib支持的自定义Kconfig预处理函数机制实现,相关实现位于scripts/kconfig/kconfigfunctions.py,并据此计算符号的默认值或约束其依赖关系。

2026-08-19 17:07:09 14

原创 【Zephyr开发系列-14】Kconfig语法

Zephyr的配置系统基于Python实现的Kconfiglib,而不是Linux内核源码树中下的原生Kconfig实现。与Linux内核通常使用的conf、mconf、nconf、qconf等工具相比,Kconfiglib在保持对标准Kconfig语法兼容的同时,也引入了面向Zephyr场景的扩展。

2026-08-10 15:07:34 114

原创 【Zephyr开发系列-13】kconfig配置界面

Zephyr内核及其各个子系统可以在构建过程中进行配置,从而满足特定应用程序和平台的需求。配置工作是通过Kconfig来完成的,这与Linux内核所使用的配置系统相同。这样做的目的是为了能够在不修改任何源代码的情况下进行配置。配置选项(常被称为符号)被定义在Kconfig文件中。这些文件还规定了各个符号之间的依赖关系,从而确定哪些配置是有效的。选项成千上万、彼此还有依赖关系,纯手动很容易写错。为此Zephyr提供了两个交互式配置界面menuconfig:基于 curses 的终端文本界面,靠键盘操作。

2026-07-30 12:01:43 10

原创 【Zephyr开发系列-12】设备树使用补充

按隐式规则推出的#foo-gpio-cells和#bar-io-channel-cells。如irq-gpios、handshake-gpios、reset-gpios这些五花八门的属性名,最终都统一对应到GPIO控制器的。的:例如foo-gpios会解析到 #gpio-cells,bar-io-channels会解析到#io-channel-cells,而。等带inst参数的宏。本文对设备树的使用进行了一些补充,设备树相关的这些操作在应用开发中会反复用到,建议结合实际项目多动手练习,熟练掌握。

2026-07-30 11:59:35 11

原创 【Zephyr开发系列-11】设备树的使用

在Linux中,设备树以二进制形式存在,内核会在运行时进行解析,然后完成驱动加载和设备初始化。Zephyr是,而Linux是。之所以这样做,是因为Zephyr面向的是体积和开销较小、资源受限的MCU或SoC。

2026-06-18 14:21:42 498 2

原创 【Zephyr开发系列-10】设备树绑定机制

在Zephyr的Devicetree中,用于定义某一类设备树节点应具备的属性、属性类型以及约束规则。从作用上看,binding是连接与的桥梁。Zephyr的设备树绑定采用自定义格式的YAML文件形式来表示(Zephyr并不使用Linux内核所使用的dt-schema工具)。

2026-06-17 19:39:26 602

原创 【Zephyr开发系列-9】DTS语法与设备树结构

设备树是一种用于描述硬件的分层数据结构。Zephyr主要通过两种方式来使用设备树:1)向设备驱动程序模型描述硬件信息;2)用于指定该硬件的初始配置参数。设备树输入文件分为两种类型:设备树源文件和设备树绑定文件。源文件包含了设备树的结构本身;而绑定文件则描述了设备树中的各种元素及其数据类型。构建系统会利用这些源文件和绑定文件来生成C语言头文件。所有Zephyr相关代码和应用源码都可以包含devicetree.h,例如驱动程序、应用程序、测试程序以及内核代码。

2026-06-16 08:33:58 488

原创 【Zephyr开发系列-8】Zephyr CMake构建解析

Zephyr构建过程分成配置阶段(由 CMake 驱动)和 构建阶段(由 Make 或 Ninja 驱动)。配置完成后,CMake 拥有这次构建的内部模型,并生成原生的构建脚本;Zephyr支持的生成器是 Ninja 和 Make。整个构建是从应用出发,再把 Zephyr 内核、模块、板级配置一起纳入,最后编成一个完整镜像。本节内容以建立概念为主,Zephyr 构建不是一步完成的,而是先做配置,再做真正的编译和链接。其中,配置阶段会先处理devicetree和Kconfig,构建阶段再逐步生成最终镜像。

2026-06-15 11:13:22 133

原创 【Zephyr开发系列-7】Zephyr程序调试解析

调试就是对CPU进行“暂停、检查、追踪、回放”去查找定位bug的过程。在VS Code中点击Debug开始,内部会执行非常多的步骤,有时候其中一个参数或步骤出错都会导致调试失败,这种很是让人抓狂,所以了解整个Debug建立流程很有必要。

2026-06-14 23:33:32 436

原创 【Zephyr开发系列-6】Zephyr程序架构解析

SoC或平台本身就还没支持Zephyr,就需要自己去创建SOC的完整定义,目前绝大部分SOC都能在zephyr中直接使用,没被纳入建议还是不要自己移植。如果自定义SOC,可使用SOC_ROOTsoc / └── vendor / # 芯片厂商目录└── family / # 芯片家族目录└── soc / # 芯片系列目录├── Kconfig . soc # 芯片附加可选配置,选择具体芯片型号├── Kconfig # 芯片基础配置,描述芯片特性。

2026-06-13 11:58:15 290

原创 【Zephyr开发系列-5】二.Zephyr环境与构建(IDE方式)

目前Zephyr可用 IDE相当多,开发者可自行选择。CLion:JetBrains 的跨平台 C/C++ IDE,适合做工程导航、CMake 工程管理和调试,有原生Zephyr West集成。:ST的Eclipse系IDE,主要面向STM32 MCU/MPU,偏STM32专用工作流。IAR。

2026-06-12 11:38:00 731

原创 【Zephyr开发系列-4】一.Zephyr环境与构建(命令行方式)

Zephyr 应用程序可以通过两种方式开发:一种是基于命令行的方法,使用命令行中的 west 和 CMake 等工具;另一种是使用集成开发环境,例如安装了适用于 Zephyr 应用开发的合适扩展的 Microsoft VS Code。在目标平台层面,可以选择将代码下载并运行到实际的目标板上,也可以使用模拟器(如 Renode 或 QEMU)。本章节主要使用命令行方式构建,下一章节使用IDE方式构建,推荐使用IDE方式,实际请根据喜好自行选择。

2026-06-11 15:52:25 270

原创 【Zephyr开发系列-3】Zephyr简介

Zephyr RTOS是一款开源的嵌入式实时操作系统,专为资源受限设备设计。它支持多架构(ARM/RISC-V/x86等),采用模块化设计,通过设备树和Kconfig实现灵活配置,最小内存需求仅8KB。系统提供多线程调度、内存管理、安全机制(加密/内存保护)及丰富协议栈(蓝牙/Wi-Fi/LoRa等),内置CMake构建工具和虚拟文件系统支持。Zephyr适用于从传感器到汽车控制器的各类场景,具有高度可扩展性,其Apache 2.0许可证允许商业免费使用,是物联网开发的理想平台。

2026-06-08 11:27:20 266

原创 【Zephyr开发系列-2】二.实时操作系统RTOS

本文介绍了实时操作系统(RTOS)中的中断与异常机制以及基本通信模式。主要内容包括: 中断与异常 区分同步异常(由指令执行触发)和异步异常(中断,由外部事件触发) 同步异常分为精确异常和非精确异常 异步中断分为可屏蔽和不可屏蔽中断 详细描述了异常处理的标准流程 基本通信模式 信号中心通信和数据中心通信的区别 松耦合通信和紧耦合通信的特点 生产者-消费者模式的工作机制 守护任务模式的两种实现方式。

2026-06-08 01:49:30 194

原创 【Zephyr开发系列-1】一.实时操作系统RTOS

RTOS中的OS代表操作系统,RT代表实时。操作系统可以被视为一种提供服务的软件,这些服务可用于开发需要同时处理多个线程的应用程序。操作系统的核心是调度器,其工作是决定接下来运行哪个线程。协作式:一个线程会一直运行,直到它决定挂起当前操作并将控制权移交给调度器,由调度器决定接下来运行哪个线程。抢占式:线程可以在任何时候被操作系统抢占。抢占可能发生的原因包括:一个高优先级线程已就绪可以运行,或者正在运行的线程需要访问某个当前不可用的资源,因为该资源正被另一个任务使用。硬实时。

2026-06-07 20:05:43 312

原创 单片机IO不够?ULN2003A救急方案

图吧工具箱的功能概述(硬件检测、系统优化等)运维场景中批量检测的需求分析(效率提升、标准化操作)

2026-06-07 08:42:35 271

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除