随着时间的推移,Zephyr 对设备树的使用发生了显著变化,且预计还会继续演化。以下是一些通用的设计目标以及它们如何影响 Zephyr 源代码的具体示例,并阐述在哪方面仍然需要做更多的工作。
Zephyr 应仅从设备树获取其硬件描述。
board.yaml
文件来确定板型支持的硬件。应当从设备树获得这些内容。struct device
设备结构体关系的操作,应该使用从设备树获得的信息来完成,例如用于设备电源管理( device power management )。Zephyr 的设备树工具是为了通用而设计的,对其他的设备树使用者(例如 Linux 内核)而言可实现操作兼容。
Zephyr 的绑定语言 语义 可以支持 Zephyr 特定的属性,但不应只为表达 Zephyr 特定的关系。
dtlib.py
可以解析 dtc
输出, dtc
可以解析 dtlib.py
输出。edtlib.py
作为 Zephyr 的“扩展 dtlib”库,不应包含 Zephyr 特定的功能。其目的是为中断和总线等常见元素提供设备树的更高级别视图。gen_defines.py
(构建在 edtlib.py
之上)脚本包含 Zephyr 特定的知识和特性。