设备树
提示
这是对设备树和Zephyr如何使用它的概念概述。有关一步一步的指南和示例,请参阅设备树的主题。
设备树是一种描述硬件的分层数据结构。设计树规范定义了它的源表示和二进制表示。Zephyr使用设备树来描述其支持的电路板上可用的硬件,以及该硬件的初始配置。
设备输入文件有两种类型:设备源和设备绑定。资料来源包含了设计装置本身。绑定描述了其内容,包括数据类型。构建系统使用设备树源和绑定来生成生成的C头。生成的头的内容由devicetree.h
API抽象,您可以使用该API从设备中获取信息。
以下是这个过程的一个简化的视图:
图20设备树生成流程
所有Zephyr和应用程序源代码文件都可以包括和使用devicetree.h。这包括设备驱动程序、应用程序、测试、内核等。
该API本身是基于C宏的。宏名称都以DT_开头。一般来说,如果您在Zephyr源文件中看到一个以DT_开头的宏,那么它可能是一个 devicetree.h 宏。生成的C头也包含以DT_开头的宏;您可能会在编译器错误消息中看到这些宏。您总是可以从未生成的宏判断生成的宏有一些低写字母,而devecree.h宏名称所有字母都大写。
在设备树中定义的一些信息可以通过从Kconfig生成的CONFIG_宏获得。这样做通常是为了向后兼容,因为西风使用Kconfig的时间比设备更长,并且仍在将一些信息从Kconfig转换为设备的过程中。它还允许Kconfig覆盖从设备树中获取的默认值。设计对象的信息通过Kconfig函数从Kconfig中引用。参见Kconfig与Kconfig的其他比较。