Device Tree: DTS, DTB и Overlays - краткое руководство
Зачем вообще нужен Device Tree
На обычном ПК операционная система сама находит всё оборудование: процессор, память, USB-порты, сетевые карты. Для этого существуют стандартные механизмы обнаружения - PCI, ACPI и другие.
На одноплатных компьютерах (ARM-платах вроде NAPI-C и NAPI2) всё иначе. Периферия припаяна прямо к процессору, стандартных механизмов обнаружения нет. Ядру Linux нужно заранее сообщить: какой процессор стоит на плате, сколько у него UART-портов, на каких адресах висит I2C, какие GPIO-пины к чему подключены, на какой частоте работает SPI, и так далее.
Именно для этого существует Device Tree - «дерево устройств». Это структурированное описание всего аппаратного обеспечения платы, которое ядро Linux читает при загрузке.
DTS - исходный текст описания
DTS (Device Tree Source) - это текстовый файл, который описывает оборудование платы в читаемом виде. Он похож на конфигурационный файл и выглядит примерно так:
/ {
model = "Napilab NAPI2";
compatible = "napilab,napi2", "rockchip,rk3568";
chosen {
stdout-path = "serial2:1500000n8";
};
leds {
compatible = "gpio-leds";
power-led {
gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};
};