AMBA AXI with ACE

AMBA System Environment

ace1

 AMBA-4 400 시리즈

Cache Coherent

ace4

인터럽트

ace5

 


ACE Protocol

Load Operation

ace6

 

Write Operation

ace7

 

Transactions

ace8

 


AXI 공통 채널 (5개)

ace2

 

추가된 ACE 채널들 (+3개)

ace3

 

채널별 시그널 및 상세 테이블

ace9

 

ace10

 

 

DTB – 라즈베리파이2 샘플 소스

DTB – 라즈베리파이2용 소스

bcm2709-rpi-2-b.dts

arch/arm/boot/dts/bcm2709-rpi-2-b.dts

/dts-v1/;

/include/ "bcm2709.dtsi"

/ {
        compatible = "brcm,bcm2709";
        model = "Raspberry Pi 2 Model B";
};

&gpio {
        spi0_pins: spi0_pins {
                brcm,pins = <7 8 9 10 11>;
                brcm,function = <4>; /* alt0 */
        };

        i2c0_pins: i2c0 {
                brcm,pins = <0 1>;
                brcm,function = <4>;
        };

        i2c1_pins: i2c1 {
                brcm,pins = <2 3>;
                brcm,function = <4>;
        };

        i2s_pins: i2s {
                brcm,pins = <18 19 20 21>;
                brcm,function = <4>; /* alt0 */
        };
};

&mmc {
        status = "okay";
        bus-width = <4>;
};

&fb {
        status = "okay";
};

&uart0 {
        status = "okay";
};

&spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins>;

        spidev@0{
                compatible = "spidev";
                reg = <0>;      /* CE0 */
                #address-cells = <1>;
                #size-cells = <0>;
                spi-max-frequency = <500000>;
        };

        spidev@1{
                compatible = "spidev";
                reg = <1>;      /* CE1 */
                #address-cells = <1>;
                #size-cells = <0>;
                spi-max-frequency = <500000>;
        };
};

&i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins>;
        clock-frequency = <100000>;
};

&i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c1_pins>;
        clock-frequency = <100000>;
};

&i2c2 {
        clock-frequency = <100000>;
};

&i2s {
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s_pins>;
};

&leds {
        act_led: act {
                label = "led0";
                linux,default-trigger = "mmc0";
                gpios = <&gpio 47 0>;
        };

        pwr_led: pwr {
                label = "led1";
                linux,default-trigger = "input";
                gpios = <&gpio 35 0>;
        };
};

/ {
        __overrides__ {
                uart0 = <&uart0>,"status";
                uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
                uart1_clkrate = <&uart1>,"clock-frequency:0";
                i2s = <&i2s>,"status";
                spi = <&spi0>,"status";
                i2c0 = <&i2c0>,"status";
                i2c1 = <&i2c1>,"status";
                i2c2_iknowwhatimdoing = <&i2c2>,"status";
                i2c0_baudrate = <&i2c0>,"clock-frequency:0";
                i2c1_baudrate = <&i2c1>,"clock-frequency:0";
                i2c2_baudrate = <&i2c2>,"clock-frequency:0";
                core_freq = <&clk_core>,"clock-frequency:0";

                act_led_gpio = <&act_led>,"gpios:4";
                act_led_activelow = <&act_led>,"gpios:8";
                act_led_trigger = <&act_led>,"linux,default-trigger";

                pwr_led_gpio = <&pwr_led>,"gpios:4";
                pwr_led_activelow = <&pwr_led>,"gpios:8";
                pwr_led_trigger = <&pwr_led>,"linux,default-trigger";

                audio = <&audio>,"status";
                watchdog = <&watchdog>,"status";
                random = <&random>,"status";
        };
};

 

bcm2709.dtsi

arch/arm/boot/dts/bcm2709.dtsi

/include/ "bcm2708_common.dtsi"

/ {
        compatible = "brcm,bcm2709";
        model = "BCM2709";

        chosen {
                /* No padding required - the boot loader can do that. */
                bootargs = ""; 
        };

        soc {
                ranges = <0x7e000000 0x3f000000 0x01000000>;

                arm-pmu {
                        compatible = "arm,cortex-a7-pmu";
                        interrupts = <3 9>;
                };
        };

        timer {
                compatible = "arm,armv7-timer";
                clock-frequency = <19200000>;
                interrupts = <3 0>, // PHYS_SECURE_PPI
                             <3 1>, // PHYS_NONSECURE_PPI
                             <3 3>, // VIRT_PPI
                             <3 2>; // HYP_PPI
                always-on;
        };

        cpus: cpus {
                #address-cells = <1>;
                #size-cells = <0>;

                v7_cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf00>;
                        clock-frequency = <800000000>;
                };

                v7_cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf01>;
                        clock-frequency = <800000000>;
                };

                v7_cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf02>;
                        clock-frequency = <800000000>;
                };

                v7_cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf03>;
                        clock-frequency = <800000000>;
                };
        };

        __overrides__ {
                arm_freq = <&v7_cpu0>, "clock-frequency:0",
                       <&v7_cpu1>, "clock-frequency:0",
                       <&v7_cpu2>, "clock-frequency:0",
                       <&v7_cpu3>, "clock-frequency:0";
        };
};

 

bcm2708_common.dtsi

arch/arm/boot/dts/bcm2708_common.dtsi

/ {
        interrupt-parent = <&intc>;

        aliases {
                audio = &audio;
                sound = &sound;
                soc = &soc;
                dma = &dma;
                intc = &intc;
                watchdog = &watchdog;
                random = &random;
                mailbox = &mailbox;
                gpio = &gpio;
                uart0 = &uart0;
                i2s  = &i2s;
                spi0 = &spi0;
                i2c0 = &i2c0;
                uart1 = &uart1;
                mmc = &mmc;
                i2c1 = &i2c1;
                i2c2 = &i2c2;
                usb = &usb;
                leds = &leds;
                fb = &fb;
                vchiq = &vchiq;
                thermal = &thermal;
                clocks = &clocks;
        };

        /* Onboard audio */
        audio: audio {
                compatible = "brcm,bcm2835-audio";
                brcm,pwm-channels = <8>;
                status = "disabled";
        };

        /* External sound card */
        sound: sound {
        };
        soc: soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;

                dma: dma@7e007000 {
                        compatible = "brcm,bcm2835-dma";
                        reg = <0x7e007000 0xf00>;
                        interrupts = <1 16>,
                                     <1 17>,
                                     <1 18>,
                                     <1 19>,
                                     <1 20>,
                                     <1 21>,
                                     <1 22>,
                                     <1 23>,
                                     <1 24>,
                                     <1 25>,
                                     <1 26>,
                                     <1 27>,
                                     <1 28>;

                        #dma-cells = <1>;
                        brcm,dma-channel-mask = <0x7f35>;
                };

                intc: interrupt-controller {
                        compatible = "brcm,bcm2708-armctrl-ic";
                        reg = <0x7e00b200 0x200>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                };

                mailbox: mailbox@7e00b800 {
                        compatible = "brcm,bcm2708-vcio";
                        reg = <0x7e00b880 0x40>;
                        interrupts = <0 1>;
                };

                watchdog: watchdog@7e100000 {
                        compatible = "brcm,bcm2835-pm-wdt";
                        reg = <0x7e100000 0x28>;
                        status = "disabled";
                };

                random: rng@7e104000 {
                        compatible = "brcm,bcm2835-rng";
                        reg = <0x7e104000 0x10>;
                        status = "disabled";
                };

                gpio: gpio {
                        compatible = "brcm,bcm2835-gpio";
                        reg = <0x7e200000 0xb4>;
                        interrupts = <2 17>, <2 18>;

                        gpio-controller;
                        #gpio-cells = <2>;

                        interrupt-controller;
                        #interrupt-cells = <2>;
                };
                uart0: uart@7e201000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x7e201000 0x1000>;
                        interrupts = <2 25>;
                        clocks = <&clk_uart0 &clk_apb_p>;
                        clock-names = "uartclk","apb_pclk";
                        arm,primecell-periphid = <0x00241011>; // For an explanation, see
                        // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038
                        status = "disabled";
                };

                i2s: i2s@7e203000 {
                        compatible = "brcm,bcm2708-i2s";
                        reg = <0x7e203000 0x20>,
                              <0x7e101098 0x02>;

                        //dmas = <&dma 2>,
                        //       <&dma 3>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                };

                spi0: spi@7e204000 {
                        compatible = "brcm,bcm2835-spi";
                        reg = <0x7e204000 0x1000>;
                        interrupts = <2 22>;
                        clocks = <&clk_core>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                        /* the dma channels */
                        dmas = <&dma 6>, <&dma 7>;
                        dma-names = "tx", "rx";
                        /* the chipselects used - <0> means native GPIO
                         * add more gpios if necessary as <&gpio 6 1>
                         * (but do not forget to make them output!)
                         */
                        cs-gpios = <0>, <0>;
                };

                i2c0: i2c@7e205000 {
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e205000 0x1000>;
                        interrupts = <2 21>;
                        clocks = <&clk_i2c>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                };
                uart1: uart@7e215040 {
                        compatible = "brcm,bcm2835-aux-uart", "ns16550";
                        reg = <0x7e215040 0x40>;
                        interrupts = <1 29>;
                        clock-frequency = <500000000>;
                        reg-shift = <2>;
                        no-loopback-test;
                        status = "disabled";
                };

                mmc: mmc@7e300000 {
                        compatible = "brcm,bcm2835-mmc";
                        reg = <0x7e300000 0x100>;
                        interrupts = <2 30>;
                        clocks = <&clk_mmc>;
                        dmas = <&dma 11>,
                               <&dma 11>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                };

                i2c1: i2c@7e804000 {
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e804000 0x1000>;
                        interrupts = <2 21>;
                        clocks = <&clk_i2c>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                };

                i2c2: i2c@7e805000 {
                        // Beware - this is shared with the HDMI module.
                        // Careless use may break (really) your display.
                        // Caveat emptor.
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e805000 0x1000>;
                        interrupts = <2 21>;
                        clocks = <&clk_i2c>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                };

                usb: usb@7e980000 {
                        compatible = "brcm,bcm2708-usb";
                        reg = <0x7e980000 0x10000>,
                              <0x7e006000 0x1000>;
                        interrupts = <2 0>,
                                     <1 9>;
                };

                leds: leds {
                        compatible = "gpio-leds";
                };
                fb: fb {
                        compatible = "brcm,bcm2708-fb";
                        status = "disabled";
                };

                vchiq: vchiq {
                        compatible = "brcm,bcm2835-vchiq";
                        reg = <0x7e00b840 0xf>;
                        interrupts = <0 2>;
                        cache-line-size = <32>;
                };

                thermal: thermal {
                        compatible = "brcm,bcm2835-thermal";
                };
        };

        clocks: clocks {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <0>;

                clk_mmc: clock@0 {
                        compatible = "fixed-clock";
                        reg = <0>;
                        #clock-cells = <0>;
                        clock-output-names = "mmc";
                        clock-frequency = <250000000>;
                };

                clk_i2c: clock@1 {
                        compatible = "fixed-clock";
                        reg = <1>;
                        #clock-cells = <0>;
                        clock-output-names = "i2c";
                        clock-frequency = <250000000>;
                };

                clk_core: clock@2 {
                        compatible = "fixed-clock";
                        reg = <2>;
                        #clock-cells = <0>;
                        clock-output-names = "core";
                        clock-frequency = <250000000>;
                };

                clk_uart0: clock@3 {
                        compatible = "fixed-clock";
                        reg = <3>;
                        #clock-cells = <0>;
                        clock-output-names = "uart0_pclk";
                        clock-frequency = <3000000>;
                };

                clk_apb_p: clock@4 {
                        compatible = "fixed-clock";
                        reg = <4>;
                        #clock-cells = <0>;
                        clock-output-names = "apb_pclk";
                        clock-frequency = <126000000>;
                };
        };

        __overrides__ {
                cache_line_size = <&vchiq>, "cache-line-size:0";
        };
};

 

skeleton.dtsi

arch/arm/boot/dts/skeleton.dtsi

/*
 * Skeleton device tree; the bare minimum needed to boot; just include and
 * add a compatible value.  The bootloader will typically populate the memory
 * node.
 */

/ {
        #address-cells = <1>;
        #size-cells = <1>;
        chosen { };
        aliases { };
        memory { device_type = "memory"; reg = <0 0>; };
};

 

통합 Script

위의 4개 스크립트를 dtc로 컴파일하면 하나의 스크립트로 병합시킬 수 있다.

  • dtc bcm2709-rpi-2-b.dts -O dtb > a.dtsi
/dts-v1/;

/ {
        #address-cells = <0x1>;
        #size-cells = <0x1>;
        interrupt-parent = <0x1>;
        compatible = "brcm,bcm2709";
        model = "Raspberry Pi 2 Model B"; 

        chosen {
                bootargs = [00];
        };

        aliases {
                audio = "/audio";
                sound = "/sound";
                soc = "/soc";
                dma = "/soc/dma@7e007000";
                intc = "/soc/interrupt-controller";
                watchdog = "/soc/watchdog@7e100000";
                random = "/soc/rng@7e104000";
                mailbox = "/soc/mailbox@7e00b800";
                gpio = "/soc/gpio";
                uart0 = "/soc/uart@7e201000";
                i2s = "/soc/i2s@7e203000";
                spi0 = "/soc/spi@7e204000";
                i2c0 = "/soc/i2c@7e205000";
                uart1 = "/soc/uart@7e215040";
                mmc = "/soc/mmc@7e300000";
                i2c1 = "/soc/i2c@7e804000";
                i2c2 = "/soc/i2c@7e805000";
                usb = "/soc/usb@7e980000";
                leds = "/soc/leds";
                fb = "/soc/fb";
                vchiq = "/soc/vchiq";
                thermal = "/soc/thermal";
                clocks = "/clocks";
        };

        memory {
                device_type = "memory";
                reg = <0x0 0x0>;
        };

        audio: audio {
                compatible = "brcm,bcm2835-audio";
                brcm,pwm-channels = <0x8>;
                status = "disabled";
                linux,phandle = <0x1b>;
                phandle = <0x1b>;
        };

        sound: sound {
        };

        soc: soc {
                compatible = "simple-bus";
                #address-cells = <0x1>;
                #size-cells = <0x1>;
                ranges = <0x7e000000 0x3f000000 0x1000000>;

                dma: dma@7e007000 {
                        compatible = "brcm,bcm2835-dma";
                        reg = <0x7e007000 0xf00>;
                        interrupts = <0x1 0x10 0x1 0x11 0x1 0x12 0x1 0x13 0x1 0x14 0x1 0x15 0x1 0x16 0x1 0x17 0x1 0x18 0x1 0x19 0x1 0x1a 0x1 0x1b 0x1 0x1c>;
                        #dma-cells = <0x1>;
                        brcm,dma-channel-mask = <0x7f35>;
                        linux,phandle = <0x6>;
                        phandle = <0x6>;
                };

                intc: interrupt-controller {
                        compatible = "brcm,bcm2708-armctrl-ic";
                        reg = <0x7e00b200 0x200>;
                        interrupt-controller;
                        #interrupt-cells = <0x2>;
                        linux,phandle = <0x1>;
                        phandle = <0x1>;
                };

                mailbox: mailbox@7e00b800 {
                        compatible = "brcm,bcm2708-vcio";
                        reg = <0x7e00b880 0x40>;
                        interrupts = <0x0 0x1>;
                };

                watchdog: watchdog@7e100000 {
                        compatible = "brcm,bcm2835-pm-wdt";
                        reg = <0x7e100000 0x28>;
                        status = "disabled";
                        linux,phandle = <0x1c>;
                        phandle = <0x1c>;
                };

                random: rng@7e104000 {
                        compatible = "brcm,bcm2835-rng";
                        reg = <0x7e104000 0x10>;
                        status = "disabled";
                        linux,phandle = <0x1d>;
                        phandle = <0x1d>;
                };

                gpio: gpio {
                        compatible = "brcm,bcm2835-gpio";
                        reg = <0x7e200000 0xb4>;
                        interrupts = <0x2 0x11 0x2 0x12>;
                        gpio-controller;
                        #gpio-cells = <0x2>;
                        interrupt-controller;
                        #interrupt-cells = <0x2>;
                        linux,phandle = <0xc>;
                        phandle = <0xc>;

                        spi0_pins: spi0_pins {
                                brcm,pins = <0x7 0x8 0x9 0xa 0xb>;
                                brcm,function = <0x4>;
                                linux,phandle = <0x7>;
                                phandle = <0x7>;
                        };

                        i2c0_pins: i2c0 {
                                brcm,pins = <0x0 0x1>;
                                brcm,function = <0x4>;
                                linux,phandle = <0x9>;
                                phandle = <0x9>;
                        };

                        i2c1_pins: i2c1 {
                                brcm,pins = <0x2 0x3>;
                                brcm,function = <0x4>;
                                linux,phandle = <0xb>;
                                phandle = <0xb>;
                        };

                        i2s_pins: i2s {
                                brcm,pins = <0x12 0x13 0x14 0x15>;
                                brcm,function = <0x4>;
                                linux,phandle = <0x4>;
                                phandle = <0x4>;
                        };
                };

                uart0: uart@7e201000 {
                        compatible = "arm,pl011", "arm,primecell";
                        reg = <0x7e201000 0x1000>;
                        interrupts = <0x2 0x19>;
                        clocks = <0x2 0x3>;
                        clock-names = "uartclk", "apb_pclk";
                        arm,primecell-periphid = <0x241011>;
                        status = "okay";
                        linux,phandle = <0x12>;
                        phandle = <0x12>;
                };

                i2s: i2s@7e203000 {
                        compatible = "brcm,bcm2708-i2s";
                        reg = <0x7e203000 0x20 0x7e101098 0x2>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                        #sound-dai-cells = <0x0>;
                        pinctrl-names = "default";
                        pinctrl-0 = <0x4>;
                        linux,phandle = <0x14>;
                        phandle = <0x14>;
                };

                spi0: spi@7e204000 {
                        compatible = "brcm,bcm2835-spi";
                        reg = <0x7e204000 0x1000>;
                        interrupts = <0x2 0x16>;
                        clocks = <0x5>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        dmas = <0x6 0x6 0x6 0x7>;
                        dma-names = "tx", "rx";
                        cs-gpios = <0x0 0x0>;
                        pinctrl-names = "default";
                        pinctrl-0 = <0x7>;
                        linux,phandle = <0x15>;
                        phandle = <0x15>;

                        spidev@0 {
                                compatible = "spidev";
                                reg = <0x0>;
                                #address-cells = <0x1>;
                                #size-cells = <0x0>;
                                spi-max-frequency = <0x7a120>;
                        };

                        spidev@1 {
                                compatible = "spidev";
                                reg = <0x1>;
                                #address-cells = <0x1>;
                                #size-cells = <0x0>;
                                spi-max-frequency = <0x7a120>;
                        };
                };

                i2c0: i2c@7e205000 {
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e205000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x8>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        pinctrl-names = "default";
                        pinctrl-0 = <0x9>;
                        clock-frequency = <0x186a0>;
                        linux,phandle = <0x16>;
                        phandle = <0x16>;
                };

                uart1: uart@7e215040 {
                        compatible = "brcm,bcm2835-aux-uart", "ns16550";
                        reg = <0x7e215040 0x40>;
                        interrupts = <0x1 0x1d>;
                        clock-frequency = <0x1dcd6500>;
                        reg-shift = <0x2>;
                        no-loopback-test;
                        status = "disabled";
                        linux,phandle = <0x13>;
                        phandle = <0x13>;
                };

                mmc: mmc@7e300000 {
                        compatible = "brcm,bcm2835-mmc";
                        reg = <0x7e300000 0x100>;
                        interrupts = <0x2 0x1e>;
                        clocks = <0xa>;
                        dmas = <0x6 0xb 0x6 0xb>;
                        dma-names = "tx", "rx";
                        status = "okay";
                        bus-width = <0x4>;
                };

                i2c1: i2c@7e804000 {
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e804000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x8>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        pinctrl-names = "default";
                        pinctrl-0 = <0xb>;
                        clock-frequency = <0x186a0>;
                        linux,phandle = <0x17>;
                        phandle = <0x17>;
                };

                i2c2: i2c@7e805000 {
                        compatible = "brcm,bcm2708-i2c";
                        reg = <0x7e805000 0x1000>;
                        interrupts = <0x2 0x15>;
                        clocks = <0x8>;
                        #address-cells = <0x1>;
                        #size-cells = <0x0>;
                        status = "disabled";
                        clock-frequency = <0x186a0>;
                        linux,phandle = <0x18>;
                        phandle = <0x18>;
                };

                usb: usb@7e980000 {
                        compatible = "brcm,bcm2708-usb";
                        reg = <0x7e980000 0x10000 0x7e006000 0x1000>;
                        interrupts = <0x2 0x0 0x1 0x9>;
                };

                leds: leds {
                        compatible = "gpio-leds";

                        act_led: act {
                                label = "led0";
                                linux,default-trigger = "mmc0";
                                gpios = <0xc 0x2f 0x0>;
                                linux,phandle = <0x19>;
                                phandle = <0x19>;
                        };

                        pwr_led: pwr {
                                label = "led1";
                                linux,default-trigger = "input";
                                gpios = <0xc 0x23 0x0>;
                                linux,phandle = <0x1a>;
                                phandle = <0x1a>;
                        };
                };

                fb: fb {
                        compatible = "brcm,bcm2708-fb";
                        status = "okay";
                };

                vchiq: vchiq {
                        compatible = "brcm,bcm2835-vchiq";
                        reg = <0x7e00b840 0xf>;
                        interrupts = <0x0 0x2>;
                        cache-line-size = <0x20>;
                        linux,phandle = <0xd>;
                        phandle = <0xd>;
                };

                thermal: thermal {
                        compatible = "brcm,bcm2835-thermal";
                };

                arm-pmu {
                        compatible = "arm,cortex-a7-pmu";
                        interrupts = <0x3 0x9>;
                };
        };

        clocks: clocks {
                compatible = "simple-bus";
                #address-cells = <0x1>;
                #size-cells = <0x0>;

                clk_mmc: clock@0 {
                        compatible = "fixed-clock";
                        reg = <0x0>;
                        #clock-cells = <0x0>;
                        clock-output-names = "mmc";
                        clock-frequency = <0xee6b280>;
                        linux,phandle = <0xa>;
                        phandle = <0xa>;
                };

                clk_i2c: clock@1 {
                        compatible = "fixed-clock";
                        reg = <0x1>;
                        #clock-cells = <0x0>;
                        clock-output-names = "i2c";
                        clock-frequency = <0xee6b280>;
                        linux,phandle = <0x8>;
                        phandle = <0x8>;
                };

                clk_core: clock@2 {
                        compatible = "fixed-clock";
                        reg = <0x2>;
                        #clock-cells = <0x0>;
                        clock-output-names = "core";
                        clock-frequency = <0xee6b280>;
                        linux,phandle = <0x5>;
                        phandle = <0x5>;
                };

                clk_uart0: clock@3 {
                        compatible = "fixed-clock";
                        reg = <0x3>;
                        #clock-cells = <0x0>;
                        clock-output-names = "uart0_pclk";
                        clock-frequency = <0x2dc6c0>;
                        linux,phandle = <0x2>;
                        phandle = <0x2>;
                };

                clk_apb_p: clock@4 {
                        compatible = "fixed-clock";
                        reg = <0x4>;
                        #clock-cells = <0x0>;
                        clock-output-names = "apb_pclk";
                        clock-frequency = <0x7829b80>;
                        linux,phandle = <0x3>;
                        phandle = <0x3>;
                };
        };

        __overrides__ {
                cache_line_size = "", "", "", "\rcache-line-size:0";
                arm_freq = <0xe 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0xf636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000 0x10 0x636c6f63 0x6b2d6672 0x65717565 0x6e63793a 0x30000000 0x11636c 0x6f636b2d 0x66726571 0x75656e63 0x793a3000>;
                uart0 = [00 00 00 12 73 74 61 74 75 73 00];
                uart0_clkrate = [00 00 00 02 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                uart1_clkrate = [00 00 00 13 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                i2s = [00 00 00 14 73 74 61 74 75 73 00];
                spi = [00 00 00 15 73 74 61 74 75 73 00];
                i2c0 = [00 00 00 16 73 74 61 74 75 73 00];
                i2c1 = [00 00 00 17 73 74 61 74 75 73 00];
                i2c2_iknowwhatimdoing = [00 00 00 18 73 74 61 74 75 73 00];
                i2c0_baudrate = [00 00 00 16 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                i2c1_baudrate = [00 00 00 17 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                i2c2_baudrate = [00 00 00 18 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                core_freq = [00 00 00 05 63 6c 6f 63 6b 2d 66 72 65 71 75 65 6e 63 79 3a 30 00];
                act_led_gpio = <0x19 0x6770696f 0x733a3400>;
                act_led_activelow = <0x19 0x6770696f 0x733a3800>;
                act_led_trigger = [00 00 00 19 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];
                pwr_led_gpio = <0x1a 0x6770696f 0x733a3400>;
                pwr_led_activelow = <0x1a 0x6770696f 0x733a3800>;
                pwr_led_trigger = [00 00 00 1a 6c 69 6e 75 78 2c 64 65 66 61 75 6c 74 2d 74 72 69 67 67 65 72 00];
                audio = [00 00 00 1b 73 74 61 74 75 73 00];
                watchdog = [00 00 00 1c 73 74 61 74 75 73 00];
                random = [00 00 00 1d 73 74 61 74 75 73 00];
        };

        timer {
                compatible = "arm,armv7-timer";
                clock-frequency = <0x124f800>;
                interrupts = <0x3 0x0 0x3 0x1 0x3 0x3 0x3 0x2>;
                always-on;
        };

        cpus: cpus {
                #address-cells = <0x1>;
                #size-cells = <0x0>;

                v7_cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf00>;
                        clock-frequency = <0x2faf0800>;
                        linux,phandle = <0xe>;
                        phandle = <0xe>;
                };

                v7_cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf01>;
                        clock-frequency = <0x2faf0800>;
                        linux,phandle = <0xf>;
                        phandle = <0xf>;
                };

                v7_cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf02>;
                        clock-frequency = <0x2faf0800>;
                        linux,phandle = <0x10>;
                        phandle = <0x10>;
                };

                v7_cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf03>;
                        clock-frequency = <0x2faf0800>;
                        linux,phandle = <0x11>;
                        phandle = <0x11>;
                };
        };
};
  • 라즈베리안에서 실제 넘겨주는 스크립트에는 다음의 내용이 추가된다.
    • 루트 노드의 속성으로 memreserve = <0x37000000 0x00000000>;
    • memory 노드의 속성으로 reg = <0x00000000 0x736f6300>;
      • 메모리 사이즈는 설정에 따라 다르다.
    • 아래와 같은 display 노드
      • display {
        broadcom,depth = <0x00000010>;
        broadcom,height = <0x00000000>;
        broadcom,width = <0x00000000>;
        };
  • 입출력 장치가 사용하는 0x7e****** 주소들은 물리주소나 가상주소가 아닌 버스주소이다.

 

컴파일된 DTB

커널 v4.2부터 디바이스 트리 내부에서도 커널 헤더를 참고하여 컴파일 할 수 있다.

  • 커널 v4.1 까지
    • 예) dts -> dtb로 컴파일
      • dtc -I dts -O dtb bcm2709-rpi-2-b.dts -o bcm2709-rpi-2-b.dtb
    • 예) dts <- dtb로 역 컴파일
      • dtc -I dtb -O dts bcm2709-rpi-2-b.dtb -o bcm2709-rpi-2-b.dts
  • 커널 v4.2 부터
    • dts 파일 내부에서 #include를 사용하므로 gcc의 프리프로세서가 필요하다. 따라서 dtc를 사용하여 바로 컴파일 할 수 없으며, 리눅스 디렉토리에서 make 명령을 사용한다.
      • dts <- dtb로 역 컴파일하는 방법은 기존과 동일하다.
    • 예) make bcm2709-rpi2-b.dtb
    • 예) make broadcom/ns2-svk.dtb

 

다음은 dtb를 dump한 예) hexdump a.dtb -C

00000000  d0 0d fe ed 00 00 20 7f  00 00 00 38 00 00 1d 14  |...... ....8....|
00000010  00 00 00 28 00 00 00 11  00 00 00 10 00 00 0f 00  |...(............|
00000020  00 00 03 6b 00 00 1c dc  00 00 00 00 00 00 00 00  |...k............|
00000030  00 00 00 00 00 00 00 00  00 00 00 01 00 00 00 00  |................|
00000040  00 00 00 03 00 00 00 04  00 00 00 00 00 00 00 01  |................|
00000050  00 00 00 03 00 00 00 04  00 00 00 0f 00 00 00 01  |................|
00000060  00 00 00 03 00 00 00 04  00 00 00 1b 00 00 00 01  |................|
00000070  00 00 00 03 00 00 00 0d  00 00 00 2c 62 72 63 6d  |...........,brcm|
00000080  2c 62 63 6d 32 37 30 39  00 00 00 00 00 00 00 03  |,bcm2709........|
00000090  00 00 00 17 00 00 00 37  52 61 73 70 62 65 72 72  |.......7Raspberr|
000000a0  79 20 50 69 20 32 20 4d  6f 64 65 6c 20 42 00 00  |y Pi 2 Model B..|
000000b0  00 00 00 01 63 68 6f 73  65 6e 00 00 00 00 00 03  |....chosen......|
000000c0  00 00 00 01 00 00 00 3d  00 00 00 00 00 00 00 02  |.......=........|
000000d0  00 00 00 01 61 6c 69 61  73 65 73 00 00 00 00 03  |....aliases.....|
000000e0  00 00 00 07 00 00 00 46  2f 61 75 64 69 6f 00 00  |.......F/audio..|
000000f0  00 00 00 03 00 00 00 07  00 00 00 4c 2f 73 6f 75  |...........L/sou|
00000100  6e 64 00 00 00 00 00 03  00 00 00 05 00 00 00 52  |nd.............R|
00000110  2f 73 6f 63 00 00 00 00  00 00 00 03 00 00 00 12  |/soc............|
00000120  00 00 00 56 2f 73 6f 63  2f 64 6d 61 40 37 65 30  |...V/soc/dma@7e0|
00000130  30 37 30 30 30 00 00 00  00 00 00 03 00 00 00 1a  |07000...........|
00000140  00 00 00 5a 2f 73 6f 63  2f 69 6e 74 65 72 72 75  |...Z/soc/interru|
00000150  70 74 2d 63 6f 6e 74 72  6f 6c 6c 65 72 00 00 00  |pt-controller...|
00000160  00 00 00 03 00 00 00 17  00 00 00 5f 2f 73 6f 63  |..........._/soc|
00000170  2f 77 61 74 63 68 64 6f  67 40 37 65 31 30 30 30  |/watchdog@7e1000|
00000180  30 30 00 00 00 00 00 03  00 00 00 12 00 00 00 68  |00.............h|
00000190  2f 73 6f 63 2f 72 6e 67  40 37 65 31 30 34 30 30  |/soc/rng@7e10400|
000001a0  30 00 00 00 00 00 00 03  00 00 00 16 00 00 00 6f  |0..............o|
000001b0  2f 73 6f 63 2f 6d 61 69  6c 62 6f 78 40 37 65 30  |/soc/mailbox@7e0|
000001c0  30 62 38 30 30 00 00 00  00 00 00 03 00 00 00 0a  |0b800...........|
000001d0  00 00 00 77 2f 73 6f 63  2f 67 70 69 6f 00 00 00  |...w/soc/gpio...|
000001e0  00 00 00 03 00 00 00 13  00 00 00 7c 2f 73 6f 63  |...........|/soc|
000001f0  2f 75 61 72 74 40 37 65  32 30 31 30 30 30 00 00  |/uart@7e201000..|
00000200  00 00 00 03 00 00 00 12  00 00 00 82 2f 73 6f 63  |............/soc|
00000210  2f 69 32 73 40 37 65 32  30 33 30 30 30 00 00 00  |/i2s@7e203000...|
00000220  00 00 00 03 00 00 00 12  00 00 00 86 2f 73 6f 63  |............/soc|
00000230  2f 73 70 69 40 37 65 32  30 34 30 30 30 00 00 00  |/spi@7e204000...|
00000240  00 00 00 03 00 00 00 12  00 00 00 8b 2f 73 6f 63  |............/soc|
00000250  2f 69 32 63 40 37 65 32  30 35 30 30 30 00 00 00  |/i2c@7e205000...|
00000260  00 00 00 03 00 00 00 13  00 00 00 90 2f 73 6f 63  |............/soc|
00000270  2f 75 61 72 74 40 37 65  32 31 35 30 34 30 00 00  |/uart@7e215040..|
00000280  00 00 00 03 00 00 00 12  00 00 00 96 2f 73 6f 63  |............/soc|
00000290  2f 6d 6d 63 40 37 65 33  30 30 30 30 30 00 00 00  |/mmc@7e300000...|
000002a0  00 00 00 03 00 00 00 12  00 00 00 9a 2f 73 6f 63  |............/soc|
000002b0  2f 69 32 63 40 37 65 38  30 34 30 30 30 00 00 00  |/i2c@7e804000...|
000002c0  00 00 00 03 00 00 00 12  00 00 00 9f 2f 73 6f 63  |............/soc|
000002d0  2f 69 32 63 40 37 65 38  30 35 30 30 30 00 00 00  |/i2c@7e805000...|
000002e0  00 00 00 03 00 00 00 12  00 00 00 a4 2f 73 6f 63  |............/soc|
000002f0  2f 75 73 62 40 37 65 39  38 30 30 30 30 00 00 00  |/usb@7e980000...|
00000300  00 00 00 03 00 00 00 0a  00 00 00 a8 2f 73 6f 63  |............/soc|
00000310  2f 6c 65 64 73 00 00 00  00 00 00 03 00 00 00 08  |/leds...........|
00000320  00 00 00 ad 2f 73 6f 63  2f 66 62 00 00 00 00 03  |..../soc/fb.....|
00000330  00 00 00 0b 00 00 00 b0  2f 73 6f 63 2f 76 63 68  |......../soc/vch|
00000340  69 71 00 00 00 00 00 03  00 00 00 0d 00 00 00 b6  |iq..............|
00000350  2f 73 6f 63 2f 74 68 65  72 6d 61 6c 00 00 00 00  |/soc/thermal....|
00000360  00 00 00 03 00 00 00 08  00 00 00 be 2f 63 6c 6f  |............/clo|
00000370  63 6b 73 00 00 00 00 02  00 00 00 01 6d 65 6d 6f  |cks.........memo|
00000380  72 79 00 00 00 00 00 03  00 00 00 07 00 00 00 c5  |ry..............|
00000390  6d 65 6d 6f 72 79 00 00  00 00 00 03 00 00 00 08  |memory..........|
000003a0  00 00 00 d1 00 00 00 00  00 00 00 00 00 00 00 02  |................|
000003b0  00 00 00 01 61 75 64 69  6f 00 00 00 00 00 00 03  |....audio.......|
000003c0  00 00 00 13 00 00 00 2c  62 72 63 6d 2c 62 63 6d  |.......,brcm,bcm|
000003d0  32 38 33 35 2d 61 75 64  69 6f 00 00 00 00 00 03  |2835-audio......|
000003e0  00 00 00 04 00 00 00 d5  00 00 00 08 00 00 00 03  |................|
000003f0  00 00 00 09 00 00 00 e7  64 69 73 61 62 6c 65 64  |........disabled|
00000400  00 00 00 00 00 00 00 03  00 00 00 04 00 00 00 ee  |................|
00000410  00 00 00 1b 00 00 00 03  00 00 00 04 00 00 00 f4  |................|
00000420  00 00 00 1b 00 00 00 02  00 00 00 01 73 6f 75 6e  |............soun|
00000430  64 00 00 00 00 00 00 02  00 00 00 01 73 6f 63 00  |d...........soc.|
00000440  00 00 00 03 00 00 00 0b  00 00 00 2c 73 69 6d 70  |...........,simp|
00000450  6c 65 2d 62 75 73 00 00  00 00 00 03 00 00 00 04  |le-bus..........|
00000460  00 00 00 00 00 00 00 01  00 00 00 03 00 00 00 04  |................|
00000470  00 00 00 0f 00 00 00 01  00 00 00 03 00 00 00 0c  |................|
00000480  00 00 00 fc 7e 00 00 00  3f 00 00 00 01 00 00 00  |....~...?.......|
00000490  00 00 00 01 64 6d 61 40  37 65 30 30 37 30 30 30  |....dma@7e007000|
000004a0  00 00 00 00 00 00 00 03  00 00 00 11 00 00 00 2c  |...............,|
000004b0  62 72 63 6d 2c 62 63 6d  32 38 33 35 2d 64 6d 61  |brcm,bcm2835-dma|
000004c0  00 00 00 00 00 00 00 03  00 00 00 08 00 00 00 d1  |................|
000004d0  7e 00 70 00 00 00 0f 00  00 00 00 03 00 00 00 68  |~.p............h|
000004e0  00 00 01 03 00 00 00 01  00 00 00 10 00 00 00 01  |................|
000004f0  00 00 00 11 00 00 00 01  00 00 00 12 00 00 00 01  |................|
00000500  00 00 00 13 00 00 00 01  00 00 00 14 00 00 00 01  |................|
00000510  00 00 00 15 00 00 00 01  00 00 00 16 00 00 00 01  |................|
00000520  00 00 00 17 00 00 00 01  00 00 00 18 00 00 00 01  |................|
00000530  00 00 00 19 00 00 00 01  00 00 00 1a 00 00 00 01  |................|
00000540  00 00 00 1b 00 00 00 01  00 00 00 1c 00 00 00 03  |................|
00000550  00 00 00 04 00 00 01 0e  00 00 00 01 00 00 00 03  |................|
00000560  00 00 00 04 00 00 01 19  00 00 7f 35 00 00 00 03  |...........5....|
00000570  00 00 00 04 00 00 00 ee  00 00 00 06 00 00 00 03  |................|
00000580  00 00 00 04 00 00 00 f4  00 00 00 06 00 00 00 02  |................|
00000590  00 00 00 01 69 6e 74 65  72 72 75 70 74 2d 63 6f  |....interrupt-co|
000005a0  6e 74 72 6f 6c 6c 65 72  00 00 00 00 00 00 00 03  |ntroller........|
000005b0  00 00 00 18 00 00 00 2c  62 72 63 6d 2c 62 63 6d  |.......,brcm,bcm|
000005c0  32 37 30 38 2d 61 72 6d  63 74 72 6c 2d 69 63 00  |2708-armctrl-ic.|
000005d0  00 00 00 03 00 00 00 08  00 00 00 d1 7e 00 b2 00  |............~...|
000005e0  00 00 02 00 00 00 00 03  00 00 00 00 00 00 01 2f  |.............../|
000005f0  00 00 00 03 00 00 00 04  00 00 01 44 00 00 00 02  |...........D....|
00000600  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 01  |................|
00000610  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 01  |................|
00000620  00 00 00 02 00 00 00 01  6d 61 69 6c 62 6f 78 40  |........mailbox@|
00000630  37 65 30 30 62 38 30 30  00 00 00 00 00 00 00 03  |7e00b800........|
00000640  00 00 00 12 00 00 00 2c  62 72 63 6d 2c 62 63 6d  |.......,brcm,bcm|
00000650  32 37 30 38 2d 76 63 69  6f 00 00 00 00 00 00 03  |2708-vcio.......|
00000660  00 00 00 08 00 00 00 d1  7e 00 b8 80 00 00 00 40  |........~......@|
00000670  00 00 00 03 00 00 00 08  00 00 01 03 00 00 00 00  |................|
00000680  00 00 00 01 00 00 00 02  00 00 00 01 77 61 74 63  |............watc|
00000690  68 64 6f 67 40 37 65 31  30 30 30 30 30 00 00 00  |hdog@7e100000...|
000006a0  00 00 00 03 00 00 00 14  00 00 00 2c 62 72 63 6d  |...........,brcm|
000006b0  2c 62 63 6d 32 38 33 35  2d 70 6d 2d 77 64 74 00  |,bcm2835-pm-wdt.|
000006c0  00 00 00 03 00 00 00 08  00 00 00 d1 7e 10 00 00  |............~...|
000006d0  00 00 00 28 00 00 00 03  00 00 00 09 00 00 00 e7  |...(............|
000006e0  64 69 73 61 62 6c 65 64  00 00 00 00 00 00 00 03  |disabled........|
000006f0  00 00 00 04 00 00 00 ee  00 00 00 1c 00 00 00 03  |................|
00000700  00 00 00 04 00 00 00 f4  00 00 00 1c 00 00 00 02  |................|
00000710  00 00 00 01 72 6e 67 40  37 65 31 30 34 30 30 30  |....rng@7e104000|
00000720  00 00 00 00 00 00 00 03  00 00 00 11 00 00 00 2c  |...............,|
00000730  62 72 63 6d 2c 62 63 6d  32 38 33 35 2d 72 6e 67  |brcm,bcm2835-rng|
00000740  00 00 00 00 00 00 00 03  00 00 00 08 00 00 00 d1  |................|
00000750  7e 10 40 00 00 00 00 10  00 00 00 03 00 00 00 09  |~.@.............|
00000760  00 00 00 e7 64 69 73 61  62 6c 65 64 00 00 00 00  |....disabled....|
00000770  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 1d  |................|
00000780  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 1d  |................|
00000790  00 00 00 02 00 00 00 01  67 70 69 6f 00 00 00 00  |........gpio....|
000007a0  00 00 00 03 00 00 00 12  00 00 00 2c 62 72 63 6d  |...........,brcm|
000007b0  2c 62 63 6d 32 38 33 35  2d 67 70 69 6f 00 00 00  |,bcm2835-gpio...|
000007c0  00 00 00 03 00 00 00 08  00 00 00 d1 7e 20 00 00  |............~ ..|
000007d0  00 00 00 b4 00 00 00 03  00 00 00 10 00 00 01 03  |................|
000007e0  00 00 00 02 00 00 00 11  00 00 00 02 00 00 00 12  |................|
000007f0  00 00 00 03 00 00 00 00  00 00 01 55 00 00 00 03  |...........U....|
00000800  00 00 00 04 00 00 01 65  00 00 00 02 00 00 00 03  |.......e........|
00000810  00 00 00 00 00 00 01 2f  00 00 00 03 00 00 00 04  |......./........|
00000820  00 00 01 44 00 00 00 02  00 00 00 03 00 00 00 04  |...D............|
00000830  00 00 00 ee 00 00 00 0c  00 00 00 03 00 00 00 04  |................|
00000840  00 00 00 f4 00 00 00 0c  00 00 00 01 73 70 69 30  |............spi0|
00000850  5f 70 69 6e 73 00 00 00  00 00 00 03 00 00 00 14  |_pins...........|
00000860  00 00 01 71 00 00 00 07  00 00 00 08 00 00 00 09  |...q............|
00000870  00 00 00 0a 00 00 00 0b  00 00 00 03 00 00 00 04  |................|
00000880  00 00 01 7b 00 00 00 04  00 00 00 03 00 00 00 04  |...{............|
00000890  00 00 00 ee 00 00 00 07  00 00 00 03 00 00 00 04  |................|
000008a0  00 00 00 f4 00 00 00 07  00 00 00 02 00 00 00 01  |................|
000008b0  69 32 63 30 00 00 00 00  00 00 00 03 00 00 00 08  |i2c0............|
000008c0  00 00 01 71 00 00 00 00  00 00 00 01 00 00 00 03  |...q............|
000008d0  00 00 00 04 00 00 01 7b  00 00 00 04 00 00 00 03  |.......{........|
000008e0  00 00 00 04 00 00 00 ee  00 00 00 09 00 00 00 03  |................|
000008f0  00 00 00 04 00 00 00 f4  00 00 00 09 00 00 00 02  |................|
00000900  00 00 00 01 69 32 63 31  00 00 00 00 00 00 00 03  |....i2c1........|
00000910  00 00 00 08 00 00 01 71  00 00 00 02 00 00 00 03  |.......q........|
00000920  00 00 00 03 00 00 00 04  00 00 01 7b 00 00 00 04  |...........{....|
00000930  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 0b  |................|
00000940  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 0b  |................|
00000950  00 00 00 02 00 00 00 01  69 32 73 00 00 00 00 03  |........i2s.....|
00000960  00 00 00 10 00 00 01 71  00 00 00 12 00 00 00 13  |.......q........|
00000970  00 00 00 14 00 00 00 15  00 00 00 03 00 00 00 04  |................|
00000980  00 00 01 7b 00 00 00 04  00 00 00 03 00 00 00 04  |...{............|
00000990  00 00 00 ee 00 00 00 04  00 00 00 03 00 00 00 04  |................|
000009a0  00 00 00 f4 00 00 00 04  00 00 00 02 00 00 00 02  |................|
000009b0  00 00 00 01 75 61 72 74  40 37 65 32 30 31 30 30  |....uart@7e20100|
000009c0  30 00 00 00 00 00 00 03  00 00 00 18 00 00 00 2c  |0..............,|
000009d0  61 72 6d 2c 70 6c 30 31  31 00 61 72 6d 2c 70 72  |arm,pl011.arm,pr|
000009e0  69 6d 65 63 65 6c 6c 00  00 00 00 03 00 00 00 08  |imecell.........|
000009f0  00 00 00 d1 7e 20 10 00  00 00 10 00 00 00 00 03  |....~ ..........|
00000a00  00 00 00 08 00 00 01 03  00 00 00 02 00 00 00 19  |................|
00000a10  00 00 00 03 00 00 00 08  00 00 00 be 00 00 00 02  |................|
00000a20  00 00 00 03 00 00 00 03  00 00 00 11 00 00 01 89  |................|
00000a30  75 61 72 74 63 6c 6b 00  61 70 62 5f 70 63 6c 6b  |uartclk.apb_pclk|
00000a40  00 00 00 00 00 00 00 03  00 00 00 04 00 00 01 95  |................|
00000a50  00 24 10 11 00 00 00 03  00 00 00 05 00 00 00 e7  |.$..............|
00000a60  6f 6b 61 79 00 00 00 00  00 00 00 03 00 00 00 04  |okay............|
00000a70  00 00 00 ee 00 00 00 12  00 00 00 03 00 00 00 04  |................|
00000a80  00 00 00 f4 00 00 00 12  00 00 00 02 00 00 00 01  |................|
00000a90  69 32 73 40 37 65 32 30  33 30 30 30 00 00 00 00  |i2s@7e203000....|
00000aa0  00 00 00 03 00 00 00 11  00 00 00 2c 62 72 63 6d  |...........,brcm|
00000ab0  2c 62 63 6d 32 37 30 38  2d 69 32 73 00 00 00 00  |,bcm2708-i2s....|
00000ac0  00 00 00 03 00 00 00 10  00 00 00 d1 7e 20 30 00  |............~ 0.|
00000ad0  00 00 00 20 7e 10 10 98  00 00 00 02 00 00 00 03  |... ~...........|
00000ae0  00 00 00 06 00 00 01 ac  74 78 00 72 78 00 00 00  |........tx.rx...|
00000af0  00 00 00 03 00 00 00 09  00 00 00 e7 64 69 73 61  |............disa|
00000b00  62 6c 65 64 00 00 00 00  00 00 00 03 00 00 00 04  |bled............|
00000b10  00 00 01 b6 00 00 00 00  00 00 00 03 00 00 00 08  |................|
00000b20  00 00 01 c7 64 65 66 61  75 6c 74 00 00 00 00 03  |....default.....|
00000b30  00 00 00 04 00 00 01 d5  00 00 00 04 00 00 00 03  |................|
00000b40  00 00 00 04 00 00 00 ee  00 00 00 14 00 00 00 03  |................|
00000b50  00 00 00 04 00 00 00 f4  00 00 00 14 00 00 00 02  |................|
00000b60  00 00 00 01 73 70 69 40  37 65 32 30 34 30 30 30  |....spi@7e204000|
00000b70  00 00 00 00 00 00 00 03  00 00 00 11 00 00 00 2c  |...............,|
00000b80  62 72 63 6d 2c 62 63 6d  32 38 33 35 2d 73 70 69  |brcm,bcm2835-spi|
00000b90  00 00 00 00 00 00 00 03  00 00 00 08 00 00 00 d1  |................|
00000ba0  7e 20 40 00 00 00 10 00  00 00 00 03 00 00 00 08  |~ @.............|
00000bb0  00 00 01 03 00 00 00 02  00 00 00 16 00 00 00 03  |................|
00000bc0  00 00 00 04 00 00 00 be  00 00 00 05 00 00 00 03  |................|
00000bd0  00 00 00 04 00 00 00 00  00 00 00 01 00 00 00 03  |................|
00000be0  00 00 00 04 00 00 00 0f  00 00 00 00 00 00 00 03  |................|
00000bf0  00 00 00 09 00 00 00 e7  64 69 73 61 62 6c 65 64  |........disabled|
00000c00  00 00 00 00 00 00 00 03  00 00 00 10 00 00 01 df  |................|
00000c10  00 00 00 06 00 00 00 06  00 00 00 06 00 00 00 07  |................|
00000c20  00 00 00 03 00 00 00 06  00 00 01 ac 74 78 00 72  |............tx.r|
00000c30  78 00 00 00 00 00 00 03  00 00 00 08 00 00 01 e4  |x...............|
00000c40  00 00 00 00 00 00 00 00  00 00 00 03 00 00 00 08  |................|
00000c50  00 00 01 c7 64 65 66 61  75 6c 74 00 00 00 00 03  |....default.....|
00000c60  00 00 00 04 00 00 01 d5  00 00 00 07 00 00 00 03  |................|
00000c70  00 00 00 04 00 00 00 ee  00 00 00 15 00 00 00 03  |................|
00000c80  00 00 00 04 00 00 00 f4  00 00 00 15 00 00 00 01  |................|
00000c90  73 70 69 64 65 76 40 30  00 00 00 00 00 00 00 03  |spidev@0........|
00000ca0  00 00 00 07 00 00 00 2c  73 70 69 64 65 76 00 00  |.......,spidev..|
00000cb0  00 00 00 03 00 00 00 04  00 00 00 d1 00 00 00 00  |................|
00000cc0  00 00 00 03 00 00 00 04  00 00 00 00 00 00 00 01  |................|
00000cd0  00 00 00 03 00 00 00 04  00 00 00 0f 00 00 00 00  |................|
00000ce0  00 00 00 03 00 00 00 04  00 00 01 ed 00 07 a1 20  |............... |
00000cf0  00 00 00 02 00 00 00 01  73 70 69 64 65 76 40 31  |........spidev@1|
00000d00  00 00 00 00 00 00 00 03  00 00 00 07 00 00 00 2c  |...............,|
00000d10  73 70 69 64 65 76 00 00  00 00 00 03 00 00 00 04  |spidev..........|
00000d20  00 00 00 d1 00 00 00 01  00 00 00 03 00 00 00 04  |................|
00000d30  00 00 00 00 00 00 00 01  00 00 00 03 00 00 00 04  |................|
00000d40  00 00 00 0f 00 00 00 00  00 00 00 03 00 00 00 04  |................|
00000d50  00 00 01 ed 00 07 a1 20  00 00 00 02 00 00 00 02  |....... ........|
00000d60  00 00 00 01 69 32 63 40  37 65 32 30 35 30 30 30  |....i2c@7e205000|
00000d70  00 00 00 00 00 00 00 03  00 00 00 11 00 00 00 2c  |...............,|
00000d80  62 72 63 6d 2c 62 63 6d  32 37 30 38 2d 69 32 63  |brcm,bcm2708-i2c|
00000d90  00 00 00 00 00 00 00 03  00 00 00 08 00 00 00 d1  |................|
00000da0  7e 20 50 00 00 00 10 00  00 00 00 03 00 00 00 08  |~ P.............|
00000db0  00 00 01 03 00 00 00 02  00 00 00 15 00 00 00 03  |................|
00000dc0  00 00 00 04 00 00 00 be  00 00 00 08 00 00 00 03  |................|
00000dd0  00 00 00 04 00 00 00 00  00 00 00 01 00 00 00 03  |................|
00000de0  00 00 00 04 00 00 00 0f  00 00 00 00 00 00 00 03  |................|
00000df0  00 00 00 09 00 00 00 e7  64 69 73 61 62 6c 65 64  |........disabled|
00000e00  00 00 00 00 00 00 00 03  00 00 00 08 00 00 01 c7  |................|
00000e10  64 65 66 61 75 6c 74 00  00 00 00 03 00 00 00 04  |default.........|
00000e20  00 00 01 d5 00 00 00 09  00 00 00 03 00 00 00 04  |................|
00000e30  00 00 01 ff 00 01 86 a0  00 00 00 03 00 00 00 04  |................|
00000e40  00 00 00 ee 00 00 00 16  00 00 00 03 00 00 00 04  |................|
00000e50  00 00 00 f4 00 00 00 16  00 00 00 02 00 00 00 01  |................|
00000e60  75 61 72 74 40 37 65 32  31 35 30 34 30 00 00 00  |uart@7e215040...|
00000e70  00 00 00 03 00 00 00 1e  00 00 00 2c 62 72 63 6d  |...........,brcm|
00000e80  2c 62 63 6d 32 38 33 35  2d 61 75 78 2d 75 61 72  |,bcm2835-aux-uar|
00000e90  74 00 6e 73 31 36 35 35  30 00 00 00 00 00 00 03  |t.ns16550.......|
00000ea0  00 00 00 08 00 00 00 d1  7e 21 50 40 00 00 00 40  |........~!P@...@|
00000eb0  00 00 00 03 00 00 00 08  00 00 01 03 00 00 00 01  |................|
00000ec0  00 00 00 1d 00 00 00 03  00 00 00 04 00 00 01 ff  |................|
00000ed0  1d cd 65 00 00 00 00 03  00 00 00 04 00 00 02 0f  |..e.............|
00000ee0  00 00 00 02 00 00 00 03  00 00 00 00 00 00 02 19  |................|
00000ef0  00 00 00 03 00 00 00 09  00 00 00 e7 64 69 73 61  |............disa|
00000f00  62 6c 65 64 00 00 00 00  00 00 00 03 00 00 00 04  |bled............|
00000f10  00 00 00 ee 00 00 00 13  00 00 00 03 00 00 00 04  |................|
00000f20  00 00 00 f4 00 00 00 13  00 00 00 02 00 00 00 01  |................|
00000f30  6d 6d 63 40 37 65 33 30  30 30 30 30 00 00 00 00  |mmc@7e300000....|
00000f40  00 00 00 03 00 00 00 11  00 00 00 2c 62 72 63 6d  |...........,brcm|
00000f50  2c 62 63 6d 32 38 33 35  2d 6d 6d 63 00 00 00 00  |,bcm2835-mmc....|
00000f60  00 00 00 03 00 00 00 08  00 00 00 d1 7e 30 00 00  |............~0..|
00000f70  00 00 01 00 00 00 00 03  00 00 00 08 00 00 01 03  |................|
00000f80  00 00 00 02 00 00 00 1e  00 00 00 03 00 00 00 04  |................|
00000f90  00 00 00 be 00 00 00 0a  00 00 00 03 00 00 00 10  |................|
00000fa0  00 00 01 df 00 00 00 06  00 00 00 0b 00 00 00 06  |................|
00000fb0  00 00 00 0b 00 00 00 03  00 00 00 06 00 00 01 ac  |................|
00000fc0  74 78 00 72 78 00 00 00  00 00 00 03 00 00 00 05  |tx.rx...........|
00000fd0  00 00 00 e7 6f 6b 61 79  00 00 00 00 00 00 00 03  |....okay........|
00000fe0  00 00 00 04 00 00 02 2a  00 00 00 04 00 00 00 02  |.......*........|
00000ff0  00 00 00 01 69 32 63 40  37 65 38 30 34 30 30 30  |....i2c@7e804000|
00001000  00 00 00 00 00 00 00 03  00 00 00 11 00 00 00 2c  |...............,|
00001010  62 72 63 6d 2c 62 63 6d  32 37 30 38 2d 69 32 63  |brcm,bcm2708-i2c|
00001020  00 00 00 00 00 00 00 03  00 00 00 08 00 00 00 d1  |................|
00001030  7e 80 40 00 00 00 10 00  00 00 00 03 00 00 00 08  |~.@.............|
00001040  00 00 01 03 00 00 00 02  00 00 00 15 00 00 00 03  |................|
00001050  00 00 00 04 00 00 00 be  00 00 00 08 00 00 00 03  |................|
00001060  00 00 00 04 00 00 00 00  00 00 00 01 00 00 00 03  |................|
00001070  00 00 00 04 00 00 00 0f  00 00 00 00 00 00 00 03  |................|
00001080  00 00 00 09 00 00 00 e7  64 69 73 61 62 6c 65 64  |........disabled|
00001090  00 00 00 00 00 00 00 03  00 00 00 08 00 00 01 c7  |................|
000010a0  64 65 66 61 75 6c 74 00  00 00 00 03 00 00 00 04  |default.........|
000010b0  00 00 01 d5 00 00 00 0b  00 00 00 03 00 00 00 04  |................|
000010c0  00 00 01 ff 00 01 86 a0  00 00 00 03 00 00 00 04  |................|
000010d0  00 00 00 ee 00 00 00 17  00 00 00 03 00 00 00 04  |................|
000010e0  00 00 00 f4 00 00 00 17  00 00 00 02 00 00 00 01  |................|
000010f0  69 32 63 40 37 65 38 30  35 30 30 30 00 00 00 00  |i2c@7e805000....|
00001100  00 00 00 03 00 00 00 11  00 00 00 2c 62 72 63 6d  |...........,brcm|
00001110  2c 62 63 6d 32 37 30 38  2d 69 32 63 00 00 00 00  |,bcm2708-i2c....|
00001120  00 00 00 03 00 00 00 08  00 00 00 d1 7e 80 50 00  |............~.P.|
00001130  00 00 10 00 00 00 00 03  00 00 00 08 00 00 01 03  |................|
00001140  00 00 00 02 00 00 00 15  00 00 00 03 00 00 00 04  |................|
00001150  00 00 00 be 00 00 00 08  00 00 00 03 00 00 00 04  |................|
00001160  00 00 00 00 00 00 00 01  00 00 00 03 00 00 00 04  |................|
00001170  00 00 00 0f 00 00 00 00  00 00 00 03 00 00 00 09  |................|
00001180  00 00 00 e7 64 69 73 61  62 6c 65 64 00 00 00 00  |....disabled....|
00001190  00 00 00 03 00 00 00 04  00 00 01 ff 00 01 86 a0  |................|
000011a0  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 18  |................|
000011b0  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 18  |................|
000011c0  00 00 00 02 00 00 00 01  75 73 62 40 37 65 39 38  |........usb@7e98|
000011d0  30 30 30 30 00 00 00 00  00 00 00 03 00 00 00 11  |0000............|
000011e0  00 00 00 2c 62 72 63 6d  2c 62 63 6d 32 37 30 38  |...,brcm,bcm2708|
000011f0  2d 75 73 62 00 00 00 00  00 00 00 03 00 00 00 10  |-usb............|
00001200  00 00 00 d1 7e 98 00 00  00 01 00 00 7e 00 60 00  |....~.......~.`.|
00001210  00 00 10 00 00 00 00 03  00 00 00 10 00 00 01 03  |................|
00001220  00 00 00 02 00 00 00 00  00 00 00 01 00 00 00 09  |................|
00001230  00 00 00 02 00 00 00 01  6c 65 64 73 00 00 00 00  |........leds....|
00001240  00 00 00 03 00 00 00 0a  00 00 00 2c 67 70 69 6f  |...........,gpio|
00001250  2d 6c 65 64 73 00 00 00  00 00 00 01 61 63 74 00  |-leds.......act.|
00001260  00 00 00 03 00 00 00 05  00 00 02 34 6c 65 64 30  |...........4led0|
00001270  00 00 00 00 00 00 00 03  00 00 00 05 00 00 02 3a  |...............:|
00001280  6d 6d 63 30 00 00 00 00  00 00 00 03 00 00 00 0c  |mmc0............|
00001290  00 00 01 e7 00 00 00 0c  00 00 00 2f 00 00 00 00  |.........../....|
000012a0  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 19  |................|
000012b0  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 19  |................|
000012c0  00 00 00 02 00 00 00 01  70 77 72 00 00 00 00 03  |........pwr.....|
000012d0  00 00 00 05 00 00 02 34  6c 65 64 31 00 00 00 00  |.......4led1....|
000012e0  00 00 00 03 00 00 00 06  00 00 02 3a 69 6e 70 75  |...........:inpu|
000012f0  74 00 00 00 00 00 00 03  00 00 00 0c 00 00 01 e7  |t...............|
00001300  00 00 00 0c 00 00 00 23  00 00 00 00 00 00 00 03  |.......#........|
00001310  00 00 00 04 00 00 00 ee  00 00 00 1a 00 00 00 03  |................|
00001320  00 00 00 04 00 00 00 f4  00 00 00 1a 00 00 00 02  |................|
00001330  00 00 00 02 00 00 00 01  66 62 00 00 00 00 00 03  |........fb......|
00001340  00 00 00 10 00 00 00 2c  62 72 63 6d 2c 62 63 6d  |.......,brcm,bcm|
00001350  32 37 30 38 2d 66 62 00  00 00 00 03 00 00 00 05  |2708-fb.........|
00001360  00 00 00 e7 6f 6b 61 79  00 00 00 00 00 00 00 02  |....okay........|
00001370  00 00 00 01 76 63 68 69  71 00 00 00 00 00 00 03  |....vchiq.......|
00001380  00 00 00 13 00 00 00 2c  62 72 63 6d 2c 62 63 6d  |.......,brcm,bcm|
00001390  32 38 33 35 2d 76 63 68  69 71 00 00 00 00 00 03  |2835-vchiq......|
000013a0  00 00 00 08 00 00 00 d1  7e 00 b8 40 00 00 00 0f  |........~..@....|
000013b0  00 00 00 03 00 00 00 08  00 00 01 03 00 00 00 00  |................|
000013c0  00 00 00 02 00 00 00 03  00 00 00 04 00 00 02 50  |...............P|
000013d0  00 00 00 20 00 00 00 03  00 00 00 04 00 00 00 ee  |... ............|
000013e0  00 00 00 0d 00 00 00 03  00 00 00 04 00 00 00 f4  |................|
000013f0  00 00 00 0d 00 00 00 02  00 00 00 01 74 68 65 72  |............ther|
00001400  6d 61 6c 00 00 00 00 03  00 00 00 15 00 00 00 2c  |mal............,|
00001410  62 72 63 6d 2c 62 63 6d  32 38 33 35 2d 74 68 65  |brcm,bcm2835-the|
00001420  72 6d 61 6c 00 00 00 00  00 00 00 02 00 00 00 01  |rmal............|
00001430  61 72 6d 2d 70 6d 75 00  00 00 00 03 00 00 00 12  |arm-pmu.........|
00001440  00 00 00 2c 61 72 6d 2c  63 6f 72 74 65 78 2d 61  |...,arm,cortex-a|
00001450  37 2d 70 6d 75 00 00 00  00 00 00 03 00 00 00 08  |7-pmu...........|
00001460  00 00 01 03 00 00 00 03  00 00 00 09 00 00 00 02  |................|
00001470  00 00 00 02 00 00 00 01  63 6c 6f 63 6b 73 00 00  |........clocks..|
00001480  00 00 00 03 00 00 00 0b  00 00 00 2c 73 69 6d 70  |...........,simp|
00001490  6c 65 2d 62 75 73 00 00  00 00 00 03 00 00 00 04  |le-bus..........|
000014a0  00 00 00 00 00 00 00 01  00 00 00 03 00 00 00 04  |................|
000014b0  00 00 00 0f 00 00 00 00  00 00 00 01 63 6c 6f 63  |............cloc|
000014c0  6b 40 30 00 00 00 00 03  00 00 00 0c 00 00 00 2c  |k@0............,|
000014d0  66 69 78 65 64 2d 63 6c  6f 63 6b 00 00 00 00 03  |fixed-clock.....|
000014e0  00 00 00 04 00 00 00 d1  00 00 00 00 00 00 00 03  |................|
000014f0  00 00 00 04 00 00 02 60  00 00 00 00 00 00 00 03  |.......`........|
00001500  00 00 00 04 00 00 02 6d  6d 6d 63 00 00 00 00 03  |.......mmmc.....|
00001510  00 00 00 04 00 00 01 ff  0e e6 b2 80 00 00 00 03  |................|
00001520  00 00 00 04 00 00 00 ee  00 00 00 0a 00 00 00 03  |................|
00001530  00 00 00 04 00 00 00 f4  00 00 00 0a 00 00 00 02  |................|
00001540  00 00 00 01 63 6c 6f 63  6b 40 31 00 00 00 00 03  |....clock@1.....|
00001550  00 00 00 0c 00 00 00 2c  66 69 78 65 64 2d 63 6c  |.......,fixed-cl|
00001560  6f 63 6b 00 00 00 00 03  00 00 00 04 00 00 00 d1  |ock.............|
00001570  00 00 00 01 00 00 00 03  00 00 00 04 00 00 02 60  |...............`|
00001580  00 00 00 00 00 00 00 03  00 00 00 04 00 00 02 6d  |...............m|
00001590  69 32 63 00 00 00 00 03  00 00 00 04 00 00 01 ff  |i2c.............|
000015a0  0e e6 b2 80 00 00 00 03  00 00 00 04 00 00 00 ee  |................|
000015b0  00 00 00 08 00 00 00 03  00 00 00 04 00 00 00 f4  |................|
000015c0  00 00 00 08 00 00 00 02  00 00 00 01 63 6c 6f 63  |............cloc|
000015d0  6b 40 32 00 00 00 00 03  00 00 00 0c 00 00 00 2c  |k@2............,|
000015e0  66 69 78 65 64 2d 63 6c  6f 63 6b 00 00 00 00 03  |fixed-clock.....|
000015f0  00 00 00 04 00 00 00 d1  00 00 00 02 00 00 00 03  |................|
00001600  00 00 00 04 00 00 02 60  00 00 00 00 00 00 00 03  |.......`........|
00001610  00 00 00 05 00 00 02 6d  63 6f 72 65 00 00 00 00  |.......mcore....|
00001620  00 00 00 03 00 00 00 04  00 00 01 ff 0e e6 b2 80  |................|
00001630  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 05  |................|
00001640  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 05  |................|
00001650  00 00 00 02 00 00 00 01  63 6c 6f 63 6b 40 33 00  |........clock@3.|
00001660  00 00 00 03 00 00 00 0c  00 00 00 2c 66 69 78 65  |...........,fixe|
00001670  64 2d 63 6c 6f 63 6b 00  00 00 00 03 00 00 00 04  |d-clock.........|
00001680  00 00 00 d1 00 00 00 03  00 00 00 03 00 00 00 04  |................|
00001690  00 00 02 60 00 00 00 00  00 00 00 03 00 00 00 0b  |...`............|
000016a0  00 00 02 6d 75 61 72 74  30 5f 70 63 6c 6b 00 00  |...muart0_pclk..|
000016b0  00 00 00 03 00 00 00 04  00 00 01 ff 00 2d c6 c0  |.............-..|
000016c0  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 02  |................|
000016d0  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 02  |................|
000016e0  00 00 00 02 00 00 00 01  63 6c 6f 63 6b 40 34 00  |........clock@4.|
000016f0  00 00 00 03 00 00 00 0c  00 00 00 2c 66 69 78 65  |...........,fixe|
00001700  64 2d 63 6c 6f 63 6b 00  00 00 00 03 00 00 00 04  |d-clock.........|
00001710  00 00 00 d1 00 00 00 04  00 00 00 03 00 00 00 04  |................|
00001720  00 00 02 60 00 00 00 00  00 00 00 03 00 00 00 09  |...`............|
00001730  00 00 02 6d 61 70 62 5f  70 63 6c 6b 00 00 00 00  |...mapb_pclk....|
00001740  00 00 00 03 00 00 00 04  00 00 01 ff 07 82 9b 80  |................|
00001750  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 03  |................|
00001760  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 03  |................|
00001770  00 00 00 02 00 00 00 02  00 00 00 01 5f 5f 6f 76  |............__ov|
00001780  65 72 72 69 64 65 73 5f  5f 00 00 00 00 00 00 03  |errides__.......|
00001790  00 00 00 16 00 00 02 80  00 00 00 0d 63 61 63 68  |............cach|
000017a0  65 2d 6c 69 6e 65 2d 73  69 7a 65 3a 30 00 00 00  |e-line-size:0...|
000017b0  00 00 00 03 00 00 00 58  00 00 02 90 00 00 00 0e  |.......X........|
000017c0  63 6c 6f 63 6b 2d 66 72  65 71 75 65 6e 63 79 3a  |clock-frequency:|
000017d0  30 00 00 00 00 0f 63 6c  6f 63 6b 2d 66 72 65 71  |0.....clock-freq|
000017e0  75 65 6e 63 79 3a 30 00  00 00 00 10 63 6c 6f 63  |uency:0.....cloc|
000017f0  6b 2d 66 72 65 71 75 65  6e 63 79 3a 30 00 00 00  |k-frequency:0...|
00001800  00 11 63 6c 6f 63 6b 2d  66 72 65 71 75 65 6e 63  |..clock-frequenc|
00001810  79 3a 30 00 00 00 00 03  00 00 00 0b 00 00 00 7c  |y:0............||
00001820  00 00 00 12 73 74 61 74  75 73 00 00 00 00 00 03  |....status......|
00001830  00 00 00 16 00 00 02 99  00 00 00 02 63 6c 6f 63  |............cloc|
00001840  6b 2d 66 72 65 71 75 65  6e 63 79 3a 30 00 00 00  |k-frequency:0...|
00001850  00 00 00 03 00 00 00 16  00 00 02 a7 00 00 00 13  |................|
00001860  63 6c 6f 63 6b 2d 66 72  65 71 75 65 6e 63 79 3a  |clock-frequency:|
00001870  30 00 00 00 00 00 00 03  00 00 00 0b 00 00 00 82  |0...............|
00001880  00 00 00 14 73 74 61 74  75 73 00 00 00 00 00 03  |....status......|
00001890  00 00 00 0b 00 00 02 b5  00 00 00 15 73 74 61 74  |............stat|
000018a0  75 73 00 00 00 00 00 03  00 00 00 0b 00 00 00 8b  |us..............|
000018b0  00 00 00 16 73 74 61 74  75 73 00 00 00 00 00 03  |....status......|
000018c0  00 00 00 0b 00 00 00 9a  00 00 00 17 73 74 61 74  |............stat|
000018d0  75 73 00 00 00 00 00 03  00 00 00 0b 00 00 02 b9  |us..............|
000018e0  00 00 00 18 73 74 61 74  75 73 00 00 00 00 00 03  |....status......|
000018f0  00 00 00 16 00 00 02 cf  00 00 00 16 63 6c 6f 63  |............cloc|
00001900  6b 2d 66 72 65 71 75 65  6e 63 79 3a 30 00 00 00  |k-frequency:0...|
00001910  00 00 00 03 00 00 00 16  00 00 02 dd 00 00 00 17  |................|
00001920  63 6c 6f 63 6b 2d 66 72  65 71 75 65 6e 63 79 3a  |clock-frequency:|
00001930  30 00 00 00 00 00 00 03  00 00 00 16 00 00 02 eb  |0...............|
00001940  00 00 00 18 63 6c 6f 63  6b 2d 66 72 65 71 75 65  |....clock-freque|
00001950  6e 63 79 3a 30 00 00 00  00 00 00 03 00 00 00 16  |ncy:0...........|
00001960  00 00 02 f9 00 00 00 05  63 6c 6f 63 6b 2d 66 72  |........clock-fr|
00001970  65 71 75 65 6e 63 79 3a  30 00 00 00 00 00 00 03  |equency:0.......|
00001980  00 00 00 0c 00 00 03 03  00 00 00 19 67 70 69 6f  |............gpio|
00001990  73 3a 34 00 00 00 00 03  00 00 00 0c 00 00 03 10  |s:4.............|
000019a0  00 00 00 19 67 70 69 6f  73 3a 38 00 00 00 00 03  |....gpios:8.....|
000019b0  00 00 00 1a 00 00 03 22  00 00 00 19 6c 69 6e 75  |......."....linu|
000019c0  78 2c 64 65 66 61 75 6c  74 2d 74 72 69 67 67 65  |x,default-trigge|
000019d0  72 00 00 00 00 00 00 03  00 00 00 0c 00 00 03 32  |r..............2|
000019e0  00 00 00 1a 67 70 69 6f  73 3a 34 00 00 00 00 03  |....gpios:4.....|
000019f0  00 00 00 0c 00 00 03 3f  00 00 00 1a 67 70 69 6f  |.......?....gpio|
00001a00  73 3a 38 00 00 00 00 03  00 00 00 1a 00 00 03 51  |s:8............Q|
00001a10  00 00 00 1a 6c 69 6e 75  78 2c 64 65 66 61 75 6c  |....linux,defaul|
00001a20  74 2d 74 72 69 67 67 65  72 00 00 00 00 00 00 03  |t-trigger.......|
00001a30  00 00 00 0b 00 00 00 46  00 00 00 1b 73 74 61 74  |.......F....stat|
00001a40  75 73 00 00 00 00 00 03  00 00 00 0b 00 00 00 5f  |us............._|
00001a50  00 00 00 1c 73 74 61 74  75 73 00 00 00 00 00 03  |....status......|
00001a60  00 00 00 0b 00 00 00 68  00 00 00 1d 73 74 61 74  |.......h....stat|
00001a70  75 73 00 00 00 00 00 02  00 00 00 01 74 69 6d 65  |us..........time|
00001a80  72 00 00 00 00 00 00 03  00 00 00 10 00 00 00 2c  |r..............,|
00001a90  61 72 6d 2c 61 72 6d 76  37 2d 74 69 6d 65 72 00  |arm,armv7-timer.|
00001aa0  00 00 00 03 00 00 00 04  00 00 01 ff 01 24 f8 00  |.............$..|
00001ab0  00 00 00 03 00 00 00 20  00 00 01 03 00 00 00 03  |....... ........|
00001ac0  00 00 00 00 00 00 00 03  00 00 00 01 00 00 00 03  |................|
00001ad0  00 00 00 03 00 00 00 03  00 00 00 02 00 00 00 03  |................|
00001ae0  00 00 00 00 00 00 03 61  00 00 00 02 00 00 00 01  |.......a........|
00001af0  63 70 75 73 00 00 00 00  00 00 00 03 00 00 00 04  |cpus............|
00001b00  00 00 00 00 00 00 00 01  00 00 00 03 00 00 00 04  |................|
00001b10  00 00 00 0f 00 00 00 00  00 00 00 01 63 70 75 40  |............cpu@|
00001b20  30 00 00 00 00 00 00 03  00 00 00 04 00 00 00 c5  |0...............|
00001b30  63 70 75 00 00 00 00 03  00 00 00 0e 00 00 00 2c  |cpu............,|
00001b40  61 72 6d 2c 63 6f 72 74  65 78 2d 61 37 00 00 00  |arm,cortex-a7...|
00001b50  00 00 00 03 00 00 00 04  00 00 00 d1 00 00 0f 00  |................|
00001b60  00 00 00 03 00 00 00 04  00 00 01 ff 2f af 08 00  |............/...|
00001b70  00 00 00 03 00 00 00 04  00 00 00 ee 00 00 00 0e  |................|
00001b80  00 00 00 03 00 00 00 04  00 00 00 f4 00 00 00 0e  |................|
00001b90  00 00 00 02 00 00 00 01  63 70 75 40 31 00 00 00  |........cpu@1...|
00001ba0  00 00 00 03 00 00 00 04  00 00 00 c5 63 70 75 00  |............cpu.|
00001bb0  00 00 00 03 00 00 00 0e  00 00 00 2c 61 72 6d 2c  |...........,arm,|
00001bc0  63 6f 72 74 65 78 2d 61  37 00 00 00 00 00 00 03  |cortex-a7.......|
00001bd0  00 00 00 04 00 00 00 d1  00 00 0f 01 00 00 00 03  |................|
00001be0  00 00 00 04 00 00 01 ff  2f af 08 00 00 00 00 03  |......../.......|
00001bf0  00 00 00 04 00 00 00 ee  00 00 00 0f 00 00 00 03  |................|
00001c00  00 00 00 04 00 00 00 f4  00 00 00 0f 00 00 00 02  |................|
00001c10  00 00 00 01 63 70 75 40  32 00 00 00 00 00 00 03  |....cpu@2.......|
00001c20  00 00 00 04 00 00 00 c5  63 70 75 00 00 00 00 03  |........cpu.....|
00001c30  00 00 00 0e 00 00 00 2c  61 72 6d 2c 63 6f 72 74  |.......,arm,cort|
00001c40  65 78 2d 61 37 00 00 00  00 00 00 03 00 00 00 04  |ex-a7...........|
00001c50  00 00 00 d1 00 00 0f 02  00 00 00 03 00 00 00 04  |................|
00001c60  00 00 01 ff 2f af 08 00  00 00 00 03 00 00 00 04  |..../...........|
00001c70  00 00 00 ee 00 00 00 10  00 00 00 03 00 00 00 04  |................|
00001c80  00 00 00 f4 00 00 00 10  00 00 00 02 00 00 00 01  |................|
00001c90  63 70 75 40 33 00 00 00  00 00 00 03 00 00 00 04  |cpu@3...........|
00001ca0  00 00 00 c5 63 70 75 00  00 00 00 03 00 00 00 0e  |....cpu.........|
00001cb0  00 00 00 2c 61 72 6d 2c  63 6f 72 74 65 78 2d 61  |...,arm,cortex-a|
00001cc0  37 00 00 00 00 00 00 03  00 00 00 04 00 00 00 d1  |7...............|
00001cd0  00 00 0f 03 00 00 00 03  00 00 00 04 00 00 01 ff  |................|
00001ce0  2f af 08 00 00 00 00 03  00 00 00 04 00 00 00 ee  |/...............|
00001cf0  00 00 00 11 00 00 00 03  00 00 00 04 00 00 00 f4  |................|
00001d00  00 00 00 11 00 00 00 02  00 00 00 02 00 00 00 02  |................|
00001d10  00 00 00 09 23 61 64 64  72 65 73 73 2d 63 65 6c  |....#address-cel|
00001d20  6c 73 00 23 73 69 7a 65  2d 63 65 6c 6c 73 00 69  |ls.#size-cells.i|
00001d30  6e 74 65 72 72 75 70 74  2d 70 61 72 65 6e 74 00  |nterrupt-parent.|
00001d40  63 6f 6d 70 61 74 69 62  6c 65 00 6d 6f 64 65 6c  |compatible.model|
00001d50  00 62 6f 6f 74 61 72 67  73 00 61 75 64 69 6f 00  |.bootargs.audio.|
00001d60  73 6f 75 6e 64 00 73 6f  63 00 64 6d 61 00 69 6e  |sound.soc.dma.in|
00001d70  74 63 00 77 61 74 63 68  64 6f 67 00 72 61 6e 64  |tc.watchdog.rand|
00001d80  6f 6d 00 6d 61 69 6c 62  6f 78 00 67 70 69 6f 00  |om.mailbox.gpio.|
00001d90  75 61 72 74 30 00 69 32  73 00 73 70 69 30 00 69  |uart0.i2s.spi0.i|
00001da0  32 63 30 00 75 61 72 74  31 00 6d 6d 63 00 69 32  |2c0.uart1.mmc.i2|
00001db0  63 31 00 69 32 63 32 00  75 73 62 00 6c 65 64 73  |c1.i2c2.usb.leds|
00001dc0  00 66 62 00 76 63 68 69  71 00 74 68 65 72 6d 61  |.fb.vchiq.therma|
00001dd0  6c 00 63 6c 6f 63 6b 73  00 64 65 76 69 63 65 5f  |l.clocks.device_|
00001de0  74 79 70 65 00 72 65 67  00 62 72 63 6d 2c 70 77  |type.reg.brcm,pw|
00001df0  6d 2d 63 68 61 6e 6e 65  6c 73 00 73 74 61 74 75  |m-channels.statu|
00001e00  73 00 6c 69 6e 75 78 2c  70 68 61 6e 64 6c 65 00  |s.linux,phandle.|
00001e10  72 61 6e 67 65 73 00 69  6e 74 65 72 72 75 70 74  |ranges.interrupt|
00001e20  73 00 23 64 6d 61 2d 63  65 6c 6c 73 00 62 72 63  |s.#dma-cells.brc|
00001e30  6d 2c 64 6d 61 2d 63 68  61 6e 6e 65 6c 2d 6d 61  |m,dma-channel-ma|
00001e40  73 6b 00 69 6e 74 65 72  72 75 70 74 2d 63 6f 6e  |sk.interrupt-con|
00001e50  74 72 6f 6c 6c 65 72 00  23 69 6e 74 65 72 72 75  |troller.#interru|
00001e60  70 74 2d 63 65 6c 6c 73  00 67 70 69 6f 2d 63 6f  |pt-cells.gpio-co|
00001e70  6e 74 72 6f 6c 6c 65 72  00 23 67 70 69 6f 2d 63  |ntroller.#gpio-c|
00001e80  65 6c 6c 73 00 62 72 63  6d 2c 70 69 6e 73 00 62  |ells.brcm,pins.b|
00001e90  72 63 6d 2c 66 75 6e 63  74 69 6f 6e 00 63 6c 6f  |rcm,function.clo|
00001ea0  63 6b 2d 6e 61 6d 65 73  00 61 72 6d 2c 70 72 69  |ck-names.arm,pri|
00001eb0  6d 65 63 65 6c 6c 2d 70  65 72 69 70 68 69 64 00  |mecell-periphid.|
00001ec0  64 6d 61 2d 6e 61 6d 65  73 00 23 73 6f 75 6e 64  |dma-names.#sound|
00001ed0  2d 64 61 69 2d 63 65 6c  6c 73 00 70 69 6e 63 74  |-dai-cells.pinct|
00001ee0  72 6c 2d 6e 61 6d 65 73  00 70 69 6e 63 74 72 6c  |rl-names.pinctrl|
00001ef0  2d 30 00 64 6d 61 73 00  63 73 2d 67 70 69 6f 73  |-0.dmas.cs-gpios|
00001f00  00 73 70 69 2d 6d 61 78  2d 66 72 65 71 75 65 6e  |.spi-max-frequen|
00001f10  63 79 00 63 6c 6f 63 6b  2d 66 72 65 71 75 65 6e  |cy.clock-frequen|
00001f20  63 79 00 72 65 67 2d 73  68 69 66 74 00 6e 6f 2d  |cy.reg-shift.no-|
00001f30  6c 6f 6f 70 62 61 63 6b  2d 74 65 73 74 00 62 75  |loopback-test.bu|
00001f40  73 2d 77 69 64 74 68 00  6c 61 62 65 6c 00 6c 69  |s-width.label.li|
00001f50  6e 75 78 2c 64 65 66 61  75 6c 74 2d 74 72 69 67  |nux,default-trig|
00001f60  67 65 72 00 63 61 63 68  65 2d 6c 69 6e 65 2d 73  |ger.cache-line-s|
00001f70  69 7a 65 00 23 63 6c 6f  63 6b 2d 63 65 6c 6c 73  |ize.#clock-cells|
00001f80  00 63 6c 6f 63 6b 2d 6f  75 74 70 75 74 2d 6e 61  |.clock-output-na|
00001f90  6d 65 73 00 63 61 63 68  65 5f 6c 69 6e 65 5f 73  |mes.cache_line_s|
00001fa0  69 7a 65 00 61 72 6d 5f  66 72 65 71 00 75 61 72  |ize.arm_freq.uar|
00001fb0  74 30 5f 63 6c 6b 72 61  74 65 00 75 61 72 74 31  |t0_clkrate.uart1|
00001fc0  5f 63 6c 6b 72 61 74 65  00 73 70 69 00 69 32 63  |_clkrate.spi.i2c|
00001fd0  32 5f 69 6b 6e 6f 77 77  68 61 74 69 6d 64 6f 69  |2_iknowwhatimdoi|
00001fe0  6e 67 00 69 32 63 30 5f  62 61 75 64 72 61 74 65  |ng.i2c0_baudrate|
00001ff0  00 69 32 63 31 5f 62 61  75 64 72 61 74 65 00 69  |.i2c1_baudrate.i|
00002000  32 63 32 5f 62 61 75 64  72 61 74 65 00 63 6f 72  |2c2_baudrate.cor|
00002010  65 5f 66 72 65 71 00 61  63 74 5f 6c 65 64 5f 67  |e_freq.act_led_g|
00002020  70 69 6f 00 61 63 74 5f  6c 65 64 5f 61 63 74 69  |pio.act_led_acti|
00002030  76 65 6c 6f 77 00 61 63  74 5f 6c 65 64 5f 74 72  |velow.act_led_tr|
00002040  69 67 67 65 72 00 70 77  72 5f 6c 65 64 5f 67 70  |igger.pwr_led_gp|
00002050  69 6f 00 70 77 72 5f 6c  65 64 5f 61 63 74 69 76  |io.pwr_led_activ|
00002060  65 6c 6f 77 00 70 77 72  5f 6c 65 64 5f 74 72 69  |elow.pwr_led_tri|
00002070  67 67 65 72 00 61 6c 77  61 79 73 2d 6f 6e 00     |gger.always-on.|

 

참고

 

 

DTB – 구조

 

DTB(Device Tree Blob) 구조

  • FDT(Flattened Device Tree)로도 불린다.
  • 4바이트 단위로 정렬되어 저장된다.
  • 저장되는 포맷은 빅엔디안 구조를 사용한다.
    • cpu는 DTB를 읽어 cpu 엔디안에 맞춰 엔디안 변환을 하여 사용해야 한다.
    • 처음 4바이트에는 DTB magic 넘버인 0xd00dfeed 값이 들어있다.
      • 이 값을 읽어서 엔디안 변환이 필요함을 알아낼 수도 있다.
  • DTB는 커널에서 읽어들인 후 꼭 필요한 속성 값을 먼저(early) 참고하여 사용한다. 그런 후 slab 메모리 관리자가 초기화된 후 object 형태로 변환(unflatten 과정)하여 사용한다.

dtb1

DTB 덤프 분석

dtb2

 

현재 사용중인 DTB 확인

DTB(FDT)

  • hexdump /sys/firmware/fdt -C

 

OF(노드들)

  • 커널에서 사용 중인 디바이스 트리 노드
    • unflatten되어 하이라키 구조로 표현된 디바이스 트리 노드 object
$ ls /sys/firmware/devicetree/base -la
total 0
-r--r--r--  1 root root  4 Jun 25 13:57 #address-cells
-r--r--r--  1 root root  4 Jun 25 13:57 #size-cells
drwxr-xr-x 52 root root  0 Jun 25 13:58 .
drwxr-xr-x  3 root root  0 Jun 25 13:47 ..
drwxr-xr-x  2 root root  0 Jun 25 13:57 apb-pclk
drwxr-xr-x  2 root root  0 Jun 25 13:57 chosen
-r--r--r--  1 root root 17 Jun 25 13:57 compatible
drwxr-xr-x  4 root root  0 Jun 25 13:57 cpus
drwxr-xr-x  2 root root  0 Jun 25 13:57 flash@0
drwxr-xr-x  2 root root  0 Jun 25 13:57 foo4
drwxr-xr-x  2 root root  0 Jun 25 13:57 fw-cfg@9020000
drwxr-xr-x  2 root root  0 Jun 25 13:57 gpio
drwxr-xr-x  3 root root  0 Jun 25 13:57 gpio-keys
drwxr-xr-x  3 root root  0 Jun 25 13:57 intc
-r--r--r--  1 root root  4 Jun 25 13:57 interrupt-parent
drwxr-xr-x  2 root root  0 Jun 25 13:57 memory
-r--r--r--  1 root root  1 Jun 25 13:57 name
drwxr-xr-x  2 root root  0 Jun 25 13:57 pcie@10000000
drwxr-xr-x  2 root root  0 Jun 25 13:57 pl011@9000000
drwxr-xr-x  2 root root  0 Jun 25 13:57 pl031@9010000
drwxr-xr-x  2 root root  0 Jun 25 13:57 pl061@9030000
drwxr-xr-x  2 root root  0 Jun 25 13:57 platform@c000000
drwxr-xr-x  2 root root  0 Jun 25 13:57 pmu
drwxr-xr-x  2 root root  0 Jun 25 13:57 psci
drwxr-xr-x  2 root root  0 Jun 25 13:57 timer
drwxr-xr-x  2 root root  0 Jun 25 13:57 virtio_mmio@a000000
drwxr-xr-x  2 root root  0 Jun 25 13:57 virtio_mmio@a000200
...
drwxr-xr-x  2 root root  0 Jun 25 13:57 virtio_mmio@a003e00

 

하이라키 구조로 표현된 디렉토리들

$ tree /sys/firmware/devicetree
/sys/firmware/devicetree
└── base
    ├── #address-cells
    ├── #size-cells
    ├── apb-pclk
    │   ├── #clock-cells
    │   ├── clock-frequency
    │   ├── clock-output-names
    │   ├── compatible
    │   ├── name
    │   └── phandle
    ├── chosen
    │   ├── bootargs
    │   ├── name
    │   └── stdout-path
    ├── compatible
    ├── cpus
    │   ├── #address-cells
    │   ├── #size-cells
    │   ├── cpu@0
    │   │   ├── compatible
    │   │   ├── device_type
    │   │   ├── enable-method
    │   │   ├── name
    │   │   └── reg
    │   ├── cpu@1
    │   │   ├── compatible
    │   │   ├── device_type
    │   │   ├── enable-method
    │   │   ├── name
    │   │   └── reg
    │   └── name
    ├── flash@0
    │   ├── bank-width
    │   ├── compatible
    │   ├── name
...

 

 

참고