设备树的作用其实就是硬件资源的配置文件,Bootloader会将这些配置传递给内核,内核识别配置后,将配置展开为Linux内核中的platform_device、i2c_client、spi_device等设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核,内核会将这些资源绑定给展开的相应的设备。
设备树中的每个节点都会在“/sys/firmware/devicetree/base”文件夹下生成一个文件夹,每个节点的属性都会生成一个对应的属性文件。这些文件夹对应内核中的device_node.
而这些节点有一部分会转换成platform_device节点。什么样的节点可以转换呢?
如果节点有以下属性之一,即可荣幸的成为platform_device节点之一:
(1)根节点下含有compatile属性的子节点
(2)含有特定compatile属性的节点的子节点并且子节点含有compatile属性
设备树配置如下如:
文件系统中对应文件如下:
有了设备树,就不需要再写platform_device文件了。