设备树中address-cells
时间: 2023-10-11 10:06:14 浏览: 141
和size-cells分别表示什么意思?
Address-cells和size-cells是设备树中用来描述一个设备地址和数据范围的属性。address-cells表示设备地址由几个字节组成,size-cells则表示设备数据范围由几个字节组成。这两个属性的值一般是固定的,在ARM架构中都是2,表示地址和数据范围都由两个字节组成。
相关问题
#address-cells 和#size-cells
在设备树中,#address-cells 和 #size-cells 是用于描述设备地址和大小的属性。它们是可选属性,但是如果设备树节点需要描述地址或大小,则应该包含这些属性。
#address-cells 属性指定了设备地址单元的数量。一个设备的地址通常由多个单元组成,每个单元的大小由相应的 #address-cells 属性指定。例如,一个 32 位的地址可能由两个 16 位的单元组成,因此 #address-cells 的值为 2。
#size-cells 属性指定了设备大小单元的数量。类似地,一个设备的大小通常由多个单元组成,每个单元的大小由相应的 #size-cells 属性指定。例如,一个设备的大小可能由两个 32 位的单元组成,因此 #size-cells 的值为 2。
这些属性通常出现在设备树节点的开头,并且它们的值是整数。例如:
```
spi@12345678 {
compatible = "spi-slave";
reg = <0x12345678 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
...
};
```
在这个例子中,spi@12345678 节点描述了一个 SPI 设备。它有一个 16KB 的寄存器区域,其起始地址为 0x12345678。由于地址是一个 32 位的值,因此 #address-cells 的值为 1。因为寄存器区域没有子节点,所以 #size-cells 的值为 0。
设备树为什么要配置#address-cells = <1>; #size-cells = <0>;
在设备树中,每个设备节点通常都需要指定它的物理地址和大小。而#address-cells和#size-cells属性就是用来指定这些信息的格式。#address-cells指定物理地址所需要的单元数量,#size-cells指定设备大小所需要的单元数量。这两个属性的值通常是固定的,例如#address-cells = <1>表示物理地址需要一个32位的单元,#size-cells = <0>表示设备大小不需要指定单元数量,即设备大小以字节为单位。这样做的好处是可以在设备树中统一描述设备信息,便于内核和驱动程序的解析和使用。
阅读全文