设备树相关知识

所有的dts设备都会在/sys/devices/platform生成一个目录,其下的of_node可以查看节点属性

设备树数据表现形式:

1.cells:使用尖括号限定,32位无符号整数
2.字符串:使用双引号限定
3.二进制数据:用方括号限定

设备树语法:

/memreserve/ <address> <length>;
[lavbel:]node-name[@unit-address]{
	[properties definitions];
	[child nodes];
};

对于相同的节点的不同属性信息都会被合并,相同节点的相同的属性会被重写,这个语法可以避免移植者四处找节点,直接在板级.dts增改即可
指定节点需要使用全路径,使用引用比较方便,引用可以通过&alises,&lable和handle值表示
设备树查错,可以将编译出来的dtb转换成dts,查询节点属性最后的取值

/script/dtc/dtc -I dtb -O dts -o tmp.dts xxx.dtb

特殊的属性:

#address-cells:设备节点属性,reg属性使用n个32位整数表示地址,如64位系统n=2
#size-cells:设备节点属性,reg属性使用n个32位整数表示数据长度
每个可编址设备都有一个reg,属性对应platform_device的IORESOURCE_MEM资源,对于上述两个属性,可继承自父节点
range:设备节点属性,完成地址映射,格式为<字地址 父地址 字地址空间区域大小> ,为空表示一样的地址域
interrupt-controller:中断控制节点的专用属性,值为空,表明节点是一个中断控制节点
#interrupt-cells:中断控制节点的专用属性,表示中断指示符cell的个数,类似于#address-cells
interrupt-parent:设备节点属性,节点的中断控制器,可继承自父节点,一般值为一个引用
interrupts:设备节点属性,中断指示符列表
phandle:设备节点属性,作为该设备在其他地方的引用值,使用lable作为节点引用的时候,dtc编译器自动为节点产生phandle值

特殊节点:

chosen:可以用来设置bootargs启动参数
alises:用于指定节点的别名

DTB格式

------------------------------------
|        struct ftd_header           |
--------------------------------------
|      memory reservation block      |
------------------------------------
|         structure block            |
------------------------------------
|          strings block              |
-------------------------------------

 struct fdt_header {
        uint32_t magic;
        uint32_t totalsize;
        uint32_t off_dt_struct;
        uint32_t off_dt_strings;
        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;
 };

设备树解析可以参考/Documentation/devicetree/bindings/或者http://www.devicetree.org/specifications/或者/Documentation/devicetree/usage-modle.txt

也可以参考:
http://blog.youkuaiyun.com/21cnbao/article/details/8457546

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值