这两个属性的值都是无符号32位整形,#address-cells
和#size-cells
这两个属性可以用在任何拥有子节点的设备节点中,用于描述子节点的地址信息。
#address-cells
,用来描述子节点reg
属性的地址表中用来描述首地址的元素所用字(cell)的数量;#size-cells
,用来描述子节点reg
属性的地址表中用来描述地址长度的元素所用字的数量。
#address-cells
和#size-cells
表明了子节点应该如何编写reg
属性值,一般reg属性都是和地址有关的内容,和地址相关的信息有两种:起始地址和地址长度,有了这两个属性,子节点中的"reg"属性就可以描述一块连续的地址区域了;reg属性的格式一为:
reg = <address1 length1 address2 length2 address3 length3 ……>
每个addressn lengthn
组合表示一个地址范围,其中addressn
是起始地址,lengthn
是地址长度,#address-cells
表明addressn
字段占用的字长,#size-cells
表明lengthn
这个字段所占用的字长。
#interrupt-cells
是中断控制器中的属性,和#address-cells
、#size-cells
类似,表示此中断控制器下设备的interrupts
属性中描述中断信息的元素所用字的数量。
对于ARM处理的GIC来说,一共有3 个cells,这三个cells的含义如下:
- 第一个cells:中断类型,0表示SPI中断(共享外设中断),1表示PPI中断(私有外设中断)。
- 第二个cells:中断号,SPI中断大约有60个,它们对应的中断号范围为32~92(61个),对于PPI中断来说中断号的范围为27~31。但是该cell描述的中断号是从0开始。
- 第三个cells:标志,bit[3:0]表示中断触发类型,为1的时候表示上升沿触发,为 2的时候表示下降沿触发,为4的时候表示高电平触发,为8的时候表示低电平触发。bit[15:8]为PPI中断的CPU掩码。