博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 设备树的解释 - DTB文件格式【转】
阅读量:4870 次
发布时间:2019-06-11

本文共 1771 字,大约阅读时间需要 5 分钟。

1、dtb文件格式

 dtb文件的格式如下图 :

NOTE:不同部分顺序可能不一样

 

2、文件头boot_param_header

1 struct boot_param_header { 2         u32     magic;----------------用于标dtb文件头,等于OF_DT_HEADER=“0xd00dfeed” 3         u32     totalsize;------------dtb文件大小 4         u32     off_dt_struct;--------DT structure偏移 5         u32     off_dt_strings;-------DT strings偏移 6         u32     off_mem_rsvmap;-------memory reserve map偏移 7         u32     version;--------------版本号 8         u32     last_comp_version;----兼容最早版本号 9 10         /* version 2 fields below */11         u32     boot_cpuid_phys;------physical CPU id12 13         /* version 3 fields below */14         u32     size_dt_strings;------size of the strings block15 16         /* version 17 fields below */17         u32 size_dt_struct;-----------size of the DT structure block18 };

 

 

3、保留内存memory reserve map

这段保存的是一个保留内存映射列表,每个表由一对64位的物理地址和大小组成

 

4、device-tree structure&strings

由于某些属性(比如compatible)在大多数节点下都会存在,为了减少dtb文件大小,就需要把这些属性字符串只指定一个存储位置即可,这样每个节点的属性只需要按照位置找到属性字符串的位置就可以得到是哪个属性,所以dtb把device-tree strings单独列出来存储,下图是device-tree structure的格式,节点嵌套节点 

 

上面的宏定义如下

1 #define FDT_MAGIC   0xd00dfeed  /* 4: version, 4: total size */ 2 #define FDT_TAGSIZE sizeof(uint32_t) 3  4 #define FDT_BEGIN_NODE  0x1     /* Start node: full name */ 5 #define FDT_END_NODE    0x2     /* End node */ 6 #define FDT_PROP    0x3     /* Property: name off, 7                        size, content */ 8 #define FDT_NOP     0x4     /* nop */ 9 #define FDT_END     0x910 11 #define FDT_V1_SIZE (7*sizeof(uint32_t))12 #define FDT_V2_SIZE (FDT_V1_SIZE + sizeof(uint32_t))13 #define FDT_V3_SIZE (FDT_V2_SIZE + sizeof(uint32_t))14 #define FDT_V16_SIZE    FDT_V3_SIZE15 #define FDT_V17_SIZE    (FDT_V16_SIZE + sizeof(uint32_t))

 

 

总图 

 

转载于:https://www.cnblogs.com/linhaostudy/p/8682589.html

你可能感兴趣的文章
ExtJs4.2 RadioGroup CheckboxGroup
查看>>
InnoDB Undo Log
查看>>
在Application中集成Microsoft Translator服务之使用http获取服务
查看>>
flask页面中Head标签内容为空问题
查看>>
Centos7 Putty SSH密钥登录
查看>>
HDU 6330--Visual Cube(构造,计算)
查看>>
小说Symbian的签名
查看>>
Objective-C中ORM的运用:实体对象和字典的相互自动转换
查看>>
高级java面试宝典
查看>>
声明,本博客文章均为转载,只为学习,不为其他用途。感谢技术大牛的技术分享,让我少走弯路。...
查看>>
centos7.1下 Docker环境搭建
查看>>
c# 导出Excel
查看>>
Status: Checked in and viewable by authorized users 出现在sharepoint 2013 home 页面
查看>>
python数据预处理
查看>>
Python之路,Day21 - 常用算法学习
查看>>
Android安全-代码安全1-ProGuard混淆处理
查看>>
部署core
查看>>
mysql 时间设置
查看>>
如何在 Xcode 中修改应用的名字
查看>>
[BZOJ5334][TJOI2018]数学计算(exgcd/线段树)
查看>>