结构设备中的什么是节点参数?
答
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";
};
};
};
你能解释一下上面的例子吗? –
让我们拿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 = }; 发布的示例非常简单 – Sasi