跳到主要内容

设备树:描述硬件连接

设备树(Devicetree)让硬件描述与应用逻辑分离。Zephyr 在构建阶段处理 DTS、DTSI 和 overlay,生成供驱动与应用使用的内容。

先认识几个词

概念用途
节点描述一个控制器或设备
属性描述地址、中断、GPIO 等参数
compatible将节点与 binding 对应起来
node labellearning_led:,供其他节点引用
aliasled0,给应用一个约定名称
overlay在板卡默认描述上补充或覆盖配置

从 LED 理解数据流

板卡 DTS + app.overlay

构建生成 zephyr.dts

DT_ALIAS(led0) / GPIO_DT_SPEC_GET(...)

GPIO 驱动操作对应引脚

Blinky 实验中,led0 = &learning_led 指向 LED 节点;节点的 gpios 指明控制器、引脚和有效电平。程序依赖 led0,因此更换硬件时主要修改描述。

修改后怎样确认生效

先看构建日志是否列出指定 overlay,再查看 build/blinky/zephyr/zephyr.dts。它是合并结果,适合定位“我写了配置,但没生效”的问题。

常见原因:文件路径不对、overlay 被其他默认文件选择规则影响、旧构建缓存、控制器未启用,或选择了错误板卡。

和 Kconfig 的边界

设备树侧重硬件实例与连接;Kconfig 侧重软件功能选择。外设存在,不等于相应驱动已经编入固件;驱动启用,也不代表硬件接线正确。

官方来源

基于 Zephyr v4.2.0 官方资料整理的中文学习笔记,非逐字翻译;命令及说明作了学习场景适配。

查看对应版本英文源码 · 本站英文资料与许可