Skip to the content.

Device Tree

Выгружаем Device Tree Blob (DTB) для ARM-машины virt из QEMU:

qemu-system-arm -M virt -cpu cortex-a15 -M dumpdtb=virt.dtb

Декомпилируем:

dtc -I dtb -O dts -o virt.dts virt.dtb

Анализируем:

/dts-v1/;

/ {
.........................
    memory@40000000 {
        reg = <0x00 0x40000000 0x00 0x8000000>;
        device_type = "memory";
    };
.........................
    pl011@9000000 {
        clock-names = "uartclk", "apb_pclk";
        clocks = <0x8000 0x8000>;
        interrupts = <0x00 0x01 0x04>;
        reg = <0x00 0x9000000 0x00 0x1000>;
        compatible = "arm,pl011", "arm,primecell";
    };
.........................
    cpus {
        #size-cells = <0x00>;
        #address-cells = <0x01>;
.........................
        cpu@0 {
            phandle = <0x8001>;
            reg = <0x00>;
            compatible = "arm,cortex-a15";
            device_type = "cpu";
        };
    };
.........................
};

Можно увидеть описание регистров PL011 UART, находящихся в диапазоне 0x9000000-0x9000FFF.