024、Zephyr RTOS设备树语法与绑定 Zephyr RTOS 设备树语法与绑定:从一次GPIO配置翻车说起去年冬天调试一块基于STM32F4的工业采集板,板子跑起来后,一个本该输出高电平的GPIO死活拉不起来。示波器戳上去,电平纹丝不动。查原理图、查驱动代码,折腾两小时,最后发现是设备树里一个gpio-hog节点的output-high属性拼写成了output-hight——少了个字母,编译器不报错,系统静默忽略。那天晚上我盯着设备树文件看了很久,意识到这东西看着像配置文件,实际上是个微型编程语言,语法严谨到变态,容错率几乎为零。设备树到底在干什么Zephyr的设备树(Devicetree)不是Zephyr独创的,它来自Linux内核,但Zephyr把它用到了极致。简单说,设备树是一套描述硬件拓扑的静态数据结构,告诉RTOS“你的CPU有哪些外设、它们挂在哪个总线上、寄存器地址是多少、中断号是什么”。Zephyr在编译阶段就把设备树解析成C语言宏和结构体,直接嵌入固件,运行时没有解析开销。我见过有人把设备树当成配置文件来改,觉得“改个参数而已,随便写写”。这是大忌。设备树是编译期硬编码的,改错了要么编译不过,要么编译过了但硬件行为完全不对,而且很难调试——因为错误发生在你写代码之前。设备树文件体系:dts、dtsi、overlayZephyr项目里你会看到三种设备树文件:.dts是板级主文件,.dtsi是芯片系