栗子1:
cpus { #address-cells = <1>; #size-cells = <0>; cpu@0 { compatible = "arm,cortex-a9"; reg = <0>; }; cpu@1 { compatible = "arm,cortex-a9"; reg = <1>; }; };
在上面的代碼里面:
#address-cells = <1>;//表示用一個32位的數來描述地址
#size-cells = <0>;//表示用0個32位的數來描述該地址的大小
上面兩個信息#address-cells和#size-cells主要用來描述子節點里面reg的信息
reg里面的個數,應該是address-cells + size-cells的整數倍
上面的解析為:reg的起始地址為0
regulators { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; reg_usb_otg1_vbus: regulator@0 { ... //其他一些信息 reg = <0x00001 0x01 0x000010 0x02>; }; };
上面的代碼的解析為:
reg的起始地址為0x0001 大小為0x01
reg的起始地址為0x000010 大小為0x02
上面代碼里面:address-cells + size-cells = 2
那么reg里面的描述值就應該是2個倍數。並且每2個為一組。
上面列舉的regulator這個節點可能不是很適合這個里面,但是在這里,只是想描述address-cells 、size-cells、reg三者的關系。
例子3
external-bus { #address-cells = <2> #size-cells = <1>; ... ethernet@0,0 { compatible = "smc,smc91c111"; reg = <0 0 0x1000>; interrupts = < 5 2 >; }; i2c@1,0 { compatible = "acme,a1234-i2c-bus"; #address-cells = <1>; #size-cells = <0>; reg = <1 0 0x1000>; interrupts = < 6 2 >; rtc@58 { compatible = "maxim,ds1338"; reg = <58>; interrupts = < 7 3 >; }; }; flash@2,0 { compatible = "samsung,k8f1315ebm", "cfi-flash"; reg = <2 0 0x4000000>; }; };