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.