Linux设备树覆盖和平台总线创建

时间:2018-07-23 13:28:51

标签: linux-kernel embedded-linux device-tree

我的问题是关于使用设备树覆盖定义创建平台总线。

目标是使平台总线定义一个覆盖Blob。然后,要在此平台总线下注册的平台设备将在target-path属性中指向该设备。

在该示例中,有三个设备树覆盖源:

  • foo.dtso-平台总线
  • bar1.dtso-第一个平台设备(具有自己的bar1.ko内核模块)
  • bar2.dtso-第二个平台设备(具有自己的bar2.ko内核模块)

如果在静态设备树中定义了foo平台总线并在引导过程中将其加载,则此配置有效。

如果将foo编译为设备树覆盖图blob(如bar1和bar2)并加载到内核中,则它将无法正常工作。

/ proc / device-tree /显示foo在静态设备树中或通过覆盖加载时的foo,bar1和bar2的现有设备。

在这种情况下,工作的定义是将调用内核模块的bar1和bar2探针功能,并加载bar1.ko和bar2.ko。

以下是dtso文件:

/* foo.dtso */
/dts-v1/;
/plugin/;
/{
    fragment@0 {
        target-path = "/";
        __overlay__ {
            foo {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "simple-bus";
                status = "ok";
            };
        };
    };
};

/* bar1.dtso */
/dts-v1/;
/plugin/;
/{
    fragment@0 {
        target-path = "/foo";
        __overlay__ {
            bar1 {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "bar1,driver";
                status = "ok";
            };
        };
    };
};

/* bar2.dtso */
/dts-v1/;
/plugin/;
/{
    fragment@0 {
        target-path = "/foo";
        __overlay__ {
            bar2 {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "bar2,driver";
                status = "ok";
            };
        };
    };
};

问题是,可以使用覆盖功能创建此平台总线吗?

最好的问候, 曼努埃尔。

0 个答案:

没有答案