补充设备节点,reg 属性和中断连接的描述.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2020-06-05 11:58:48 +08:00
parent d4ba3cee0f
commit d7e0bb2a61
1 changed files with 37 additions and 2 deletions

View File

@ -32,11 +32,46 @@ dtb编译 dtc 后得到的二进制设备树文件Linux 内核可加载和
包含一个根节点和多个子节点,如果在 dts/dtsi 中写了多个根节点,则在编译后被组合成一个根节点。子节点可嵌套。 节点会被展开为 device其 compatible 属性用于与 driver 的 compatible 属性项匹配,如果匹配成功则调用该 driver 的 probe 函数。 包含一个根节点和多个子节点,如果在 dts/dtsi 中写了多个根节点,则在编译后被组合成一个根节点。子节点可嵌套。 节点会被展开为 device其 compatible 属性用于与 driver 的 compatible 属性项匹配,如果匹配成功则调用该 driver 的 probe 函数。
属性值可以为整数或字符串。使用“//”进行行注释或“/**/”进行块注释。一个简单的 dts 文件示例如下: 属性值可以为整数或字符串。如果为整数则用“<>”括起来,“<>”中可以有多个单元,称为 cellcell 间使用空格隔开,不同的 cell 可以有不同的含义。字符串使用英文双引号括起来。
DTS 中使用“//”进行行注释或“/**/”进行块注释。
### 设备节点
设备节点采用:
```dts
[label]:<name>[@<unit-address>]
```
的格式来标识。挂到内存空间的设备,其 unit-address 一般是内存地址。别的地方可以通过标签来引用该节点。
### reg 属性和 address-cells、size-cells
子节点的“reg”属性由“address”字段和“size”字段构成
```dts
reg = <address1 size1 [address2 size2] [address3 size3]...>;
```
属性“#address-cells”描述了子节点的“reg”属性的“address”字段为几个 32bit 的整型数据。
属性“#size-cells”描述了子节点的“reg”属性的“size”字段为几个 32bit 整型数据,如果为 0则没有 lenth 字段。
### 中断连接
* interrutt-controller属性为空表明“我是中断控制器”
* #interrupt-cells表明连接此中断控制器的设备的中断属性的 cell 大小,也就是 interrupt = <> 属性的 cell 大小;
* interrupt-parent设备节点通过这个关键字指定其依附的中断控制器 phandle如果没有指定则继承父节点的 interrupt-parent 配置;
* interrupt设备节点里使用一般包含中断号、触发方法等。具体有多少个 cell#interrupt-cells 决定,每个 cell 的具体含义,一般由驱动的实决定,一般会在绑定文件里说明。
### DTS 示例
一个简单的 dts 文件示例如下:
```dts ```dts
/ { / {
    compatible = "acme,coyotes-rev     compatible = "acme,coyotes-rev"
    #address-cells = <1>;  // 描述下一级子节点的数据属性     #address-cells = <1>;  // 描述下一级子节点的数据属性
    #size-cells = <1>;     #size-cells = <1>;
    interrupt-parent = <&intc>;     interrupt-parent = <&intc>;