设备树规则-dtb

DTC工具的作用

         将dts中的宏定义展开,检查dts中的语法错误等,最终编译成唯一的一个dtb文件。

DTB文件布局大端字节序):

         大小端字节序只对存储数值有影响,对于字符串的存储是一样的,比如“abc”,永远是低:a,中:b,高:c。

struct ftd_header
(free space)
memory reservation block
(free space)
structure block
(free space)
strings block
(free space)

ftd_header:基地址、便宜地址、大小等信息。

memory reservation block:内存保留区,由自己指定,不指定则没有。

structure block:节点的结构和信息。

strings block:属性的名字,顺序存放,0字符结尾。

struct fdt_header{
    uint32_t magic; //必须是0xd00dfeed
    uint32_t totalsize;//文件大小
    uint32_t off_dt_struct;//struct的偏移地址
    uint32_t off_dt_strings;//string的偏移地址
    uint32_t off_mem_rsvmap;//保留内存块的偏移地址
    uint32_t version;
    uint32_t last_comp_version;
    uint32_t boot_cpuid_phys;
    uint32_t size_dt_strings;
    uint32_t size_dt_struct;
};
struct fdt_reserve_entry{
    uint64_t address;
    uint64_t size;
};
structure block
固定值0x00000001表示一个节点开始+节点名字
固定值0x00000003表示属性开始+结构体+val
    struct{
        uint32_t len;         //属性val长度
        uint32_t nameoff;     //名字在string block中的偏移地址
    };
固定值0x00000002表示一个节点结束

例如
/{
    led{
        compatible = "jz2440_led";
        pin = <S3C2440_GPF(5)>
    };
};
在dtb中的存储就是这样的
固定值0x00000001,           //根节点的开始
固定值0x00000001+led        //led节点开始
固定值0x00000003+struct+val //led节点相关属性
固定值0x00000002            //node节点结束
固定值0x00000002            //根节点结束
固定值0x00000009            //整个structure block结束

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值