设备树相关知识

其他对设备树的描述:https://blog.csdn.net/u014650722/article/details/79076352
1.设备树
设备树是一种描述硬件资源的数据结构,它通过bootloader将硬件资源传给内核,使得内核和硬件资源描述相对独立。

     Device Tree可以描述的信息包括CPU的数量和类别、内存基地址和大小、总线和桥、外设连接、中断控制器和中断使用情况、GPIO控制器和GPIO使用情况、Clock控制器和Clock使用情况。

     另外,设备树对于可热插拔的设备不进行具体描述,它只描述用于控制该热插拔设备的控制器。

     设备树的主要优势:对于同一SOC的不同主板,只需更换设备树文件.dtb即可实现不同主板的无差异支持,而无需更换内核文件。

(注:要使得3.x之后的内核支持使用设备树,除了内核编译时需要打开相对应的选项外,bootloader也需要支持将设备树的数据结构传给内核。)

2、设备树的组成和使用

    设备树文件由dts和bindings组成:
    bindings设备树用到的所有宏定义,都放到/include/dt-bindings目录下
    dts分为dts和dtsi文件,dts是板级文件,dtsi是“平台文件”(SOC级),设备树编译器将dts和dtsi文件编译成dtb文件(apt-get install device-tree-compiler)
    另外还有相关文档在Documentation/devicetree/下

3.设备树dts的基本构造

1 节点和根节点
	{} 框起来的结构,称为节点;
	/{} 在dts中最开头的,称为根节点。
	
	节点的标准结构是xxx@yyy{},
	xxx是节点的名字,yyy则不是必须的,其值为节点的地址(寄存器地址或其他地址)。
	
	节点可以包含属性和子节点。
	
2 属性
	设备树学习的主要部分:设备树文件中属性的配置,驱动文件中调用设备树中的属性。
	compatible--类似设备名称,(重要,用于与驱动匹配,与各子系统的关联)
	reg,label,gpios,pwms,status等等
提取通用属性:
	函数:struct property *of_find_property(const struct device_node *np, const char*name, int *lenp);
	功能: of_find_property,提取指定属性的值;
	参数 np:设备节点指针;
    参数 name:属性名称;
   参数 lenp:属性值的字节数;
   返回值:成功,属性值的首地址;失败,NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值