从C/C++访问设备树
本指南描述了Zephyr的<devicetree.h>用来从C源文件中读取设备集的API。它假设您熟悉设备介绍和设备介绍绑定中的概念。参考资料见参考资料。
给Linux开发人员的说明
熟悉设备领域的Linux开发人员应该注意,这里描述的API与在Linux上使用设备的方式有很大不同。
Linux内核将读取二进制形式的设备数据结构,然后读取所有设备数据结构。二进制表示法在运行时进行解析,例如,要加载和初始化设备驱动程序。
Zephyr不能这样工作,因为设备二进制文件和相关处理代码的太大,无法轻松地适合Zephyr支持的相对受限的设备。
节点标识符
要获取有关特定设备树节点的信息,您需要使用它的一个节点标识符。这只是一个引用该节点的C宏。
以下是获取节点标识符的主要方法:
通过路径
从根节点开始,使用DT_PATH()
和节点的完整路径。如果您碰巧知道您要寻找的确切节点,这将非常有用。
按节点标签
使用DT_NODELABEL()
可以从节点标签中获取节点标识符。节点标签通常由SoC.dtsi
提供,以给出与SoC数据表相匹配的节点名,如i2c1、spi2等。
别名