设备树简述


博客:

http://blog.youkuaiyun.com/qq_28992301/article/details/53321610 


设备树概述:

描述设备信息和资源,并由内核展开



设备树文件:

1. DTS  设备树描述文件,位于 arch/(board)/boot/dts里

    其中,通用部分为 dtsi ,通用部分层层包含,上一级比下一级通用范围最广,最上面是 skeleton.dtsi 。而 dts 是最后的针对某一种芯片的设备树

    此文件有类似 C 的语法如宏和头文件的引用,且会经过预编译

2. DTC 将 DTS 编译为 DTB 的工具,位于 scripts/dtc 中

    对于 arch/(board)/boot/dts/Makefile 文件选择编译哪个 dts

3. DTB 被编译后的设备树文件

   应用:

   3.1 放在内存的某个位置,有bootloarder引导读取传送给内核。uboot 编译时在.config文件加入 #define CONFIG_OF_LIBFDT。使得可以使用fdt相关命令写入读取设备树

   3.2 和zImage编译成镜像。在编译时使能 COMFIG_ARM_APPENDED_DTB

4. binding 描述设备细节的 txt 文档。位于/Documentation/devicetree/bindings 中

    如果有在 compatible 中加入新的字符串,则需要添加相应文档解释??




设备树文件简述:

可分为节点和属性。节点又分为父子节点。

以下是常用属性:

0. label的命名:名字,地址

firmware@0203F000

1. compatible属性,其字符串可有多个,第一个最为特定,以后都依次较少但通用兼容性增大

                               后面的字符串涵盖的范围会比前面的更广

compatible = "insignal,origen4412", "samsung,exynos4412", "samsung,exynos4";

2.   #address-cells = <1>;  决定地址数量
      #size-cells = <0>;        决定地址长度数量

      表现于 <reg> 中

例子:

 regulators {
          compatible = "simple-bus";
          #address-cells = <1>;
          #size-cells = <0>;
          mmc_reg: regulator@0 {
               reg = <0>;
          };
  };

3. 地址映射表 ranges

其也关联于

#address-cells = <1>;  
#size-cells = <0>; 

例子:

ranges = <0 0 0x10100000 0x10000>

表示片选0,便宜0,映射到0x10100000,映射大小为0x10000

4.中断属性:

interrupts - 中断号,出发方式等

interrupts-names :中断名

interrupts-cells:中断数量

5. GPIO

gpio-cell:gpio数量

xxx-gpios = <&gpiox,0> 用x号gpio,0表示高电平有效,1表示低电平有效



dtiver中使用设备树:

driver用结构体描述 compatible 对应的名字

然后用相应设备的设备树匹配函数匹配资源





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值