struct device中的解释说
关联的设备树节点。
但是,我并没有清楚地理解这一点。
谁能提供一个例子?
of_node 与 Open Firmware 相关,它保存设备树的信息。
设备树就像详细描述硬件的配置文件(命名节点和属性)。
设备树的主要优点是您不必为特定硬件不断修改内核。您所要做的就是在设备树 fmt 中定义您的硬件并将其提供给引导加载程序。引导加载程序,例如 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";
};
};
};
struct device_node(of_node 的类型)包含 struct 属性,其中包含设备树节点的所有属性。它还具有指向其他属性和其他节点(兄弟节点和父节点)的指针以及作为属性名称的名称变量(例如,寄存器)。这就是我们如何在驱动程序代码中拥有来自设备树的地址等不同数据的方式。