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