struct device中的of_node参数是什么?

时间:2014-04-01 10:27:14

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

struct device中的解释

  

关联的设备树节点。

但是,我并没有清楚地理解这一点。

有人能提供一个例子吗?

2 个答案:

答案 0 :(得分:3)

of_node与Open Firmware相关,它保存设备树的信息。

设备树就像配置文件(命名节点和属性),它详细描述了硬件。

设备树的主要优点是您不必为特定硬件继续修改内核。您所要做的就是在设备树fmt中定义h / w并将其提供给bootloader。引导加载程序,例如uboot,将设备树信息传递给内核,内核根据从引导加载程序收到的信息初始化设备。

以下是设备树的示例。

{
    compatible = "acme,coyotes-revenge";

    cpus {
        cpu@0 {
            compatible = "arm,cortex-a9";
        };
        cpu@1 {
            compatible = "arm,cortex-a9";
        };
    };

    serial@101F0000 {
        compatible = "arm,pl011";
    };

    serial@101F2000 {
        compatible = "arm,pl011";
    };

    interrupt-controller@10140000 {
        compatible = "arm,pl190";
    };

    external-bus {
        ethernet@0,0 {
            compatible = "smc,smc91c111";
        };

        i2c@1,0 {
            compatible = "acme,a1234-i2c-bus";
            rtc@58 {
                compatible = "maxim,ds1338";
            };
        };

        flash@2,0 {
            compatible = "samsung,k8f1315ebm", "cfi-flash";
        };
    };
};

答案 1 :(得分:0)

struct device_node(of_node的类型)包含struct属性,该属性包含设备树节点的所有属性。它还具有指向其他属性和其他节点(兄弟和父节点)的指针以及名称变量,该变量是属性的名称(例如,寄存器)。这就是我们如何在驱动程序代码中使用设备树中的地址等不同数据。