Linux kernel 设备树幻影十六进制到引用节点

Linux kernel 设备树幻影十六进制到引用节点,linux-kernel,raspberry-pi4,device-tree,dts,Linux Kernel,Raspberry Pi4,Device Tree,Dts,是否可以从幻影中导出引用节点 例如,我的RPI 4具有以下功能: mmcnr@7e300000 { compatible = "brcm,bcm2835-mmc\0brcm,bcm2835-sdhci"; reg = <0x7e300000 0x100>; interrupts = <0x00 0x7e 0x04>; clocks = <0x07 0x1c>; dmas = <0x0b 0x0b

是否可以从幻影中导出引用节点

例如,我的RPI 4具有以下功能:

mmcnr@7e300000 {
    compatible = "brcm,bcm2835-mmc\0brcm,bcm2835-sdhci";
    reg = <0x7e300000 0x100>;
    interrupts = <0x00 0x7e 0x04>;
    clocks = <0x07 0x1c>;
    dmas = <0x0b 0x0b>;
    dma-names = "rx-tx";
    brcm,overclock-50 = <0x00>;
    non-removable;
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <0x1f>;
    bus-width = <0x04>;
    phandle = <0x38>;
};
mmcnr@7e300000 {
compatible=“brcm,bcm2835 mmc\0brcm,bcm2835 sdhci”;
reg=;
中断=;
时钟=;
dmas=;
dma name=“rx tx”;
brcm,超频-50=;
不可移动;
status=“好”;
pinctrl names=“默认”;
pinctrl-0=;
总线宽度=;
幻影=;
};

如何知道节点0x38是什么?

您可以使用of_find_all_nodes()遍历所有节点,首先将参数作为NULL传递给此函数。此函数用于返回设备\节点。。如果匹配,可以将返回的设备\u node->phandle与0x38进行比较。这是节点

的好选项,但我需要在本地解析它,而不是在系统上。你推荐(在Linux上运行的)软件吗?否则,我的周末将充满欢乐的编程:DAlso,
device_node->phandle
是我的示例中
mmcnr
节点中引用的
phandle
吗?因此,我的
mmcnr幻影
device_节点结构中的
phandle
可以与
struct property*属性中的
phandle属性
不同,它的表示形式为
phandle=
?是的,您所说的是正确的。请澄清,您不是试图从内核代码中查找实时设备树中的节点,而是试图从用户空间代码中查找dtb文件(或dtb文件的反编译版本)中的节点。是吗?@IanAbbott是的,我有一个dtb并将其反编译为dts。现在我想知道哪个节点是0x38。您可能需要使用libfdt库编写自己的代码。将整个dtb写入缓冲区后,此特定问题的有用函数是
fdt_check_full
fdt_check_header
用于健全性检查,
fdt_node_offset_by_phandle
用于获取到具有指定phandle值的节点的偏移,和
fdt_get_path
以获取导致节点偏移的路径。