【发布时间】:2021-07-09 13:20:26
【问题描述】:
是否可以从 phandle 派生参考节点?
例如,我的 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>;
};
我怎么知道节点 0x38 是什么?
【问题讨论】:
-
为了清楚起见,您不是试图从内核代码中找到实时设备树中的节点,而是试图在 dtb 文件(或 dtb 文件的反编译版本)中找到节点来自用户空间代码。对吗?
-
@IanAbbott 是的,我有一个 dtb 并将其反编译为 dts。现在我想知道 0x38 是哪个节点。
-
您可能必须使用 libfdt 库编写自己的代码。将整个 dtb 放入缓冲区后,此特定问题的有用函数是
fdt_check_full或fdt_check_header用于完整性检查,fdt_node_offset_by_phandle用于获取具有指定 phandle 值的节点的偏移量,fdt_get_path用于获取通向节点偏移的路径。
标签: linux-kernel raspberry-pi4 device-tree dts