设备树与sys/bus/platform/devices
sysfs文件系统中/sys/bus/platform/devices下的设备是由设备树生成,
根节点下有compatible的子节点都会在/bus/platform/devices生成节点
总线 I2C、SPI 等控制器会在/bus/platform/devices生成节点
总线 I2C、SPI 节点下的子节点,不会在/bus/platform/devices生成节点
以在设备树下新建一个led和spi子节点为例
atkstm32mp1-led{
status ="ok";
compatible = "atkstm32mp1-led";
reg = < 0X50000A28 0x04
0X5000A000 0x04
0X5000A004 0x04
0X5000A008 0x04
0X5000A00C 0x04
0X5000A018 0x04>;
};
&spi1 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&spi1_pins_a>;
pinctrl-1 = <&spi1_sleep_pins_a>;
cs-gpios = <&gpioz 3 GPIO_ACTIVE_LOW>;
status = "okay";
icm20608@0 {
compatible = "atk,icm20608";
reg = <0>; /* CS #0 */
spi-max-frequency = <8000000>;
};
};
在/sys/bus/platform/devices会生成led与spi控制器节点
在spi控制器节点bus总线上生成的device就是设备树添加的icm20608节点
/sys/devices与sys/bus/platform/devices
由设备树添加的在sys/bus/platform/devices中的节点对应/sys/devices/platform下的设备(spi控制器、led)
与设备树的compatible相匹配的驱动文件会在/dev与/sys/devices/virtual添加具体的设备,至于为什么会在/sys/devices/virtual在另一篇文章有介绍。