设备树的作用其实就是硬件资源的配置文件,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文件了。
(二)设备树节点的删除
由于实际的需求,我们之前定义的节点有可能不再需要,那我们怎么处理呢?直接删除对应的代码吗?NO!我们可以使用如下的两种方法:
(1)使用/delete_node/命令。
(2)将节点的status属性配置为disable。
使用这两种方法,就可以跟不需要的节点say byebye了。