我已经开始编写一个用于读取 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 )。