1

我已经开始编写一个用于读取 FDT (DTB) 格式文件的库,但是在测试 DTB 文件时遇到了问题。DTB 文件是我拥有的一块板(Digilent ZYBO-Z7)。我从实际的 Linux 内核编译了源设备树。

有两个属性名称(' linux ' 和' phandle ')用逗号字符而不是NUL 字符连接。

属性结构(蓝色和红色)将(红色)指向逗号后的字符串:

在此处输入图像描述

蓝色:0x00000004(属性值大小)
红色:0x00000105(属性字符串偏移)
绿色:0x00000007(属性值)

字符串块从偏移量0x1D4C开始。

这是DTB 文件中字符串部分的简短hexdump输出:

在此处输入图像描述

用逗号连接的两个字符串从偏移量 0x1E4B 开始,到偏移0x1E57结束。在偏移量0x1E50处是逗号。

这是正确的行为吗?

更新:

我找到了这句话:

属性“linux,phandle”已过时。如果存在,它的值应该等于属性“phandle”的值。

资源

我的测试文件只有一个属性名称“ linux,phandle ”。没有“普通”属性名称“ phandle ”。还尝试了另一个具有相同结果的 DTB 文件。

这是为了向后兼容吗?因为linux,phandle和子字符串phandle(从偏移量0x1E51开始)在第一个屏幕截图中具有相同的属性值(0x00000007 )。

4

0 回答 0