18.2.5 地址编码
可寻址的设备使用如下信息在设备树中编码地址信息:
reg
#address-cells
#size-cells
其中,reg的组织形式为reg=<address1length1[address2length2][address3length3]...>,其中的每一组address length表明了设备使用的一个地址范围。address为1个或多个32位的整型(即cell),而length的意义则意味着从address到address+length–1的地址范围都属于该节点。若#size-cells=0,则length字段为空。
address和length字段是可变长的,父节点的#address-cells和#size-cells分别决定了子节点reg属性的address和length字段的长度。
在代码清单18.2中,根节点的#address-cells=<1>;和#size-cells=<1>;决定了serial、gpio、spi等节点的address和length字段的长度分别为1。
cpus节点的#address-cells=<1>;和#size-cells=<0>;决定了两个cpu子节点的address为1,而length为空,于是形成了两个cpu的reg=<0>;和reg=<1>;。
external-bus节点的#address-cells=<2>和#size-cells=<1>;决定了其下的ethernet、i2c、flash的reg字段形如reg=<0 0 0x1000>;、reg=<1 0