文章目录
一、设备树基本语法
-
从上到下
- 头文件
- 主体
- 子节点追加内容
-
从外到内
- 属性
- 其他子节点
- 属性
- 其他子节点
- …
二、常见节点属性
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
本文介绍了设备树的基本语法,包括节点的组织结构及常用属性如compatible、model等的作用,并讲解了如何在Linux系统中查看设备树。
3753

被折叠的 条评论
为什么被折叠?



