设备树对应的结构体:
struct boot_param_header {
__be32 magic; /* magic word OF_DT_HEADER */ //dtb文件的头标志符 一般是 0xd00dfeed
__be32 totalsize; /* total size of DT block */ //dtb文件的大小
__be32 off_dt_struct; /* offset to structure */ //DT structure偏移
__be32 off_dt_strings; /* offset to strings */ //DTstrings偏移
__be32 off_mem_rsvmap; /* offset to memory reserve map */ //memory reserve map 偏移
__be32 version; /* format version */ //版本号
__be32 last_comp_version; /* last compatible version */ //兼容最早的版本号
/* version 2 fields below */
__be32 boot_cpuid_phys; /* Physical CPU id we're booting on */ //启动CPU ID
/* version 3 fields below */
__be32 dt_strings_size; /* size of the DT strings block */ //DT strings的大小
/* version 17 fields below */
__be32 dt_struct_size; /* size of the DT structure block */ //DT structure的大小
};//整个结构体大小是40个字节
对变量进行解释:
magic:dtb文件的头,透过对magic进行判断,可以知道是否为dtb文件
totalsize:整个dtb文件的大小
off_dt_struct:structure偏移的地址
off_dt_strings:DTstrings偏移的地址
off_mem_rsvmap:memory reserve map 偏移的地址。
查看imx7d-sdb.dtb和imx6q-sabresd.dtb文件,发现它的值是0x28.
而0x28的位置,刚好是紧跟在boot_param_header的后面,整个boot_param_header的大小是0x28(40个字节)。
version:格式版本,这里理解类似协议版本一样。根据这个格式版本,去解析整个dtb文件
last_comp_version:上一个兼容的版本。
boot_cpuid_phys:启动CPU ID。从哪一个CPU启动。查看IMX6、7对应的dtb文件,ID都是0
dt_strings_size:strings信息的大小
dt_struct_size:structure信息的大小
dtb文件格式解析
最新推荐文章于 2024-10-03 23:41:20 发布