111 DTS:硬件资源的说明书2

本文介绍了设备树的基本语法,包括节点的组织结构及常用属性如compatible、model等的作用,并讲解了如何在Linux系统中查看设备树。

一、设备树基本语法

  • 从上到下

    • 头文件
    • 主体
    • 子节点追加内容
  • 从外到内

    • 属性
    • 其他子节点
      • 属性
      • 其他子节点

二、常见节点属性

1、compatible属性

属性值类型:字符串
主要用来:匹配驱动
设备树中的节点,若是有 compatile 属性,内核会为其生成一个 struct device 结构体。

intc: interrupt-controller@a01000 {
    compatible = "arm,cortex-a7-gic";
    #interrupt-cells = <3>;
    interrupt-controller;
    reg = <0xa01000 0x1000>,
          <0xa02000 0x100>;
};

另外一个节点的 compatible 可以设置多个属性值,如此可以和多个驱动匹配。

/ {
	model = "Gateworks Ventana i.MX6 Dual/Quad GW51XX";
	compatible = "gw,imx6q-gw51xx", "gw,ventana", "fsl,imx6q";
};
  • arm:芯片厂商
  • cortex-a7-gic:模块对应的驱动名字

2、model属性

用来准确描述当前板子型号信息
属性值类型:字符串

model = "embedfire i.MX6 ULL NPi Board";

3、status属性

主要用来描述:设备运行状态
属性值类型:字符串

状态值描述
“okay”设备正常运行
“disabled”表明该设备目前尚未运行,但它可能在未来开始运行(例如,某些东西没有插入或关闭)。
“fail”表示设备不可操作。
“fail-sss”设备不可操作,原因是设备中检测到一个严重的错误,如果没有修复,它就不太可能运行。“sss”的值指示具体的错误原因。

4、reg属性

属性值类型:一系列 <地址、长度>
地址:外设寄存器组的起始地址
长度:外设寄存器组的字节长度

ocrams: sram@900000 {
      compatible = "fsl,lpm-sram";
      reg = <0x900000 0x4000>;
    };

5、#address-cells 和 #size-cells属性

属性值类型:u32
#address-cells :设置子节点中reg地址的数量,通常取值为 1。
#size-cells :设置子节点中reg地址的长度的数量,通常取值为 1或者0。

soc {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "simple-bus";
    interrupt-parent = <&gpc>;
    ranges;
    ocrams: sram@900000 {
            compatible = "fsl,lpm-sram";
            reg = <0x900000>;
    };
};

三、linux系统中查看设备树

以目录的形式体现设备树结构,有两个目录,都可以查看。

ls /sys/firmware/devicetree/base

或者

ls /proc/device-tree
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值