除了设备树, Zephyr 还使用 Kconfig 语言来配置源代码。在实现代码时,选择设备树还是 Kconfig 有时会令人困惑。本章节旨在帮助你面对该难题时可做出决定。
简而言之:
换句话说,设备树主要处理硬件,而 Kconfig 则负责软件。
例如,假设一个包含具有 2 个 UART 或串行端口实例的 SoC 的开发板。
compatible
属性)和某些设置,例如内存中硬件外设寄存器的地址范围(通过 reg
属性)。CONFIG_UART=n
),即使开发板的设备树仍保留 UART 节点。再举一个例子,假设一个设备具有 2.4GHz、多协议(同时支持低功耗蓝牙和 802.15.4 无线技术)无线电。
作为另一个示例,曾经存在一些 Kconfig 选项可用于启用特定驱动程序实例,但如今都已被删除。你应该在设备树中,找到相应的硬件实例上为设备配置 status 关键字,以表示是否启用此设备驱动。
这些规则有一些 例外 情况:
zephyr,
为前缀,例如在以太网设备树通用属性中的 zephyr,random-mac-address
。chosen
关键字,允许用户出于特定目的选择硬件设备的指定实例,它本质上是用于指定某些 软件支持 。这方面的一个例子是选择一个特定的 UART 用作系统的控制台。