微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我应该如何理解设备树中兼容列表中的“不兼容”名称?

如何解决我应该如何理解设备树中兼容列表中的“不兼容”名称?

这是设备文件的一部分 (linux/arch/arm/boot/dts/versatile-ab.dts)

uart1: uart@101f2000 {
    compatible = "arm,pl011","arm,primecell";
    reg = <0x101f2000 0x1000>;
    interrupts = <13>;
    clocks = <&xtal24mhz>,<&pclk>;
    clock-names = "uartclk","apb_pclk";
};

uart2: uart@101f3000 {
    compatible = "arm,primecell";
    reg = <0x101f3000 0x1000>;
    interrupts = <14>;
    clocks = <&xtal24mhz>,"apb_pclk";
};

smc@10100000 {
    compatible = "arm,primecell";
    reg = <0x10100000 0x1000>;
    clocks = <&pclk>;
    clock-names = "apb_pclk";
};

mpmc@10110000 { 
    compatible = "arm,primecell";
    reg = <0x10110000 0x1000>;
    clocks = <&pclk>;
    clock-names = "apb_pclk";
};

我已经阅读了有关设备树的内容,但无法清楚地理解它。我在初始化过程中了解内核,通过设备树搜索并将节点的兼容字段与驱动程序的兼容字段进行比较。因此对于 uart1 节点,它仅使用具有兼容字段“arm,pl011”的驱动程序。 uart1兼容领域的“arm,primecell”有什么作用?上面的 smc 和 mpmc 节点是什么,在兼容字段中只有“arm,primecell”?它们对于兼容列表中具有“arm,primecell”的所有节点是否通用? (我发现 arm socs 或 board 中的许多节点在兼容列表中有“arm,primecell”。内核是否使用具有不太兼容(或通用)字段(如“arm,primecell”)的节点数据,并覆盖或添加信息来自具有更兼容(或特殊)名称的节点?
而 smc@10100000 和 mpmc@10110000 的区别仅在于名称和地址。节点名有特殊含义吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。