Devicetree对比Kconfig
除了设备树之外,Zephyr还使用Kconfig语言来配置源代码。是否使用设备或Kconfig用于特定目的有时会令人困惑。这部分应该可以帮助您决定使用哪一个。
简而言之:
- 使用设备树来描述硬件及其启动时的配置。例如,包括电路板上的外设、启动时时钟频率、中断线等。
- 使用Kconfig配置软件支持,以构建到最终的映像中。例如,是否添加网络支持、应用程序需要哪些驱动程序等。
换句话说,设备树主要处理硬件,Kconfig主要处理软件。
例如,考虑一个包含带有2个UART或串口实例的SoC的电路板。
- 事实上,电路板有这个UART硬件被描述为在设备设备中有两个UART节点。这些设置提供了UART类型(通过兼容属性)和某些设置,如内存中的硬件外围设备寄存器的地址范围(通过reg属性)。
- 此外,使用设备树还描述了UART引导时配置。这可能包括诸如RXIRQ线的优先级和UART波特率等配置。这些可以在运行时修改,但它们的启动时配置在设备中描述。
- 在构建中是否包含UART软件支持通过Kconfig控制。不需要使用UART的应用程序可以使用Kconfig从构建中删除驱动程序源代码,即使电路板的设备树仍然包括UART节点。
作为另一个例子,