2014-04-01 26 views

回答

3

of_node与Open Firmware相关,它包含设备树的信息。

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

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

以下是设备树的示例。

{ 
    compatible = "acme,coyotes-revenge"; 

    cpus { 
     [email protected] { 
      compatible = "arm,cortex-a9"; 
     }; 
     [email protected] { 
      compatible = "arm,cortex-a9"; 
     }; 
    }; 

    [email protected] { 
     compatible = "arm,pl011"; 
    }; 

    [email protected] { 
     compatible = "arm,pl011"; 
    }; 

    [email protected] { 
     compatible = "arm,pl190"; 
    }; 

    external-bus { 
     [email protected],0 { 
      compatible = "smc,smc91c111"; 
     }; 

     [email protected],0 { 
      compatible = "acme,a1234-i2c-bus"; 
      [email protected] { 
       compatible = "maxim,ds1338"; 
      }; 
     }; 

     [email protected],0 { 
      compatible = "samsung,k8f1315ebm", "cfi-flash"; 
     }; 
    }; 
}; 
+0

你能解释一下上面的例子吗? –

+1

让我们拿CPU吧。该电路板有两个CPU(cpu1和cpu0),它与“arm,cortex-a9”兼容,即两个cpus是ARM cortex-a9模型 cpu @ 0 {compatible =“arm,cortex-a9”; }; cpu @ 1 {compatible =“arm,cortex-a9”; }; 类似的RTC时钟(i2c设备,因为它是在i2c下)设备是DS1338型号。 rtc @ 58 {compatible =“maxim,ds1338”; ; 写出更好的方法是指定I2C地址(i2c探测器地址)所以内核绑定地址处的器件。 rtc @ 58 { compatible =“maxim,ds1338”; reg = <0x58> }; 发布的示例非常简单 – Sasi