跳到主要内容

设备树:描述硬件连接

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

先认识几个词

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

从 LED 理解数据流

板卡 DTS + app.overlay

构建生成 zephyr.dts

DT_ALIAS(pwm_lcd0) / PWM_DT_SPEC_GET(...)

PWM 驱动操作 GPIO2 背光

背光实验中,pwm-lcd0 指向板卡已有的 PWM 节点;节点的 pwms 指明控制器、通道、周期和极性。设备树别名中的连字符在 C 宏中写为下划线,因此使用 DT_ALIAS(pwm_lcd0)。应用 overlay 只保留 GPIO2 的 PWM 引脚复用。

修改后怎样确认生效

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

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

和 Kconfig 的边界

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

官方来源

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

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