clocks | soc@03000000 | aliases | chosen | firmware | cpus | opp_l_table | psci | n_brom | s_brom | sram_ctrl | sram_a1 | sram_a2 | prcm | s_cpuscfg | ion | dram | memory@40000000 | interrupt-controller@03020000 | interrupt-controller@0 | intc-nmi@07010320 | sunxi-sid@03006000 | sunxi-sid-ng@03006000 | sunxi-chipid@03006200 | timer_arch | pmu | dramfreq | uboot | iommu@030f0000 | gpu@0x01800000 | box_start_os0 | __symbols__ | Все узлы Flattened Device Tree (FDT) - плоское дерево устройств представляет собой древовидную структуру, содержащую именованные узлы с набором свойств в виде пар имя-значение. Дерево устройств используется загрузчиком U-Boot и ядром системы. В командном интерфейсе U-Boot имеется группа команд поддержки дерева устройств FDT . Исходный бинарный файл FDT находится в образе прошивки Андроид, его имя: sunxi.fex В файловой системе Android бинарный файл FDT читается по пути: sys/firmware/devicetree/base/fdt В файловой системе Linux бинарный файл FDT читается по пути: sys/firmware/fdt Признаком бинарного формата FDT является magic-слово 0xD00DFEED в начале файла. Примечания. В файловой системе дерево устройств отображается по пути: sys/firmware/devicetree/base, а также по пути: proc/device-tree. В FS-формате дерево устройств имеет вид: папка - это узел, а файл - это свойство. Формат "читабельного" текстового исходного файла DTS (Device Tree Source), из которого компилируется бинарный файл при сборке системы, имеет C-образную структуру с фигурными скобками. Текстовый DTS-файл можно восстановить двумя способами: Примечание. Вторым способом был восстановлен DTS-формат дерева устройств Orange Pi Zero 2, на основе которого создана представленная здесь справочная БД дерева устройств. При этом на устройстве Orange Pi Zero 2 была установлена SD-карта с записанной ОС Android 10 (файл прошивки загружен с сайта производителя). Дополнительно Документы Файлы Примечание. В кратком описании узлов и свойств дерева устройств (разделы 2 и 3) использованы переводы отдельных пунктов спецификации Devicetree.org . 1. Как пользоваться справочником Представленный здесь справочный материал предназначен для первого знакомства и изучения дерева устройств. Сложность заключается в том, что наименования узлов и свойств дерева содержат большое количество специфических аббревиатур и обозначений, затрудняющих понимание их смысла и назначения. Вторая проблема - "человекочитабельный" исходный текст дерева представляет собой довольно длинную ленту, чтение и поиск в которой не очень удобен (особенно, на мобильном устройстве). Этот текст больше ориентирован на программный парсинг для конвертации в бинарный формат. Поэтому на его основе сделана БД с соответствуюим веб-интерфейсом для доступа. Дерево устройств OpiZero2 содержит 500 узлов (с подузлами), включающих 4576 свойств Корневой узел FDT (/) имеет следующие свойства: interrupt-parent = <0x00000001>; #address-cells = <0x00000002>; #size-cells = <0x00000002>; model = "sun50iw9"; compatible = "allwinner,h616", "arm,sun50iw9p1"; Узлы первого уровня (базовые) показаны в виде списка из 32-х имен узлов, являющихся ссылками на страницы, раскрывающие их внутреннюю структуру (дочерние подузлы и свойства). При выводе списка многоуровневых узлов (а также полного дерева) иерархия узлов отображается отступами с символами » Для каждого узла выводится заголовок, содержащий полный путь, например: Путь узла: / soc@03000000 / pinctrl@0300b000 / uart2@0 Свойство - это пара: имя свойства - значение свойства. При отображении свойств в справочнике используются "цветовая дифференциация штанов", где имя свойство выделено цветом в зависимости от типа значения: Распределение свойств по типам: Списки узлов, содержащих свойства со значениями выбранного типа Примечание. Символом # в исходном файле помечены свойства: При выводе значений свойств использованы дополнительные форматы: hex=0x2f706d75 dec=795897205 (777243 K, 759 M) bin=101111011100000 110110101110101 Строка: /soc@03000000 /twi@0x07081400 /pmu /regulators /cldo3 Строка: [/so@03000000 /twi@0x07081400 /pmu /regulators /sw] 2. Стандартные свойства Cписки узлов, содержащих стандартные свойства 1. compatible - значение состоит из одной или нескольких строк "производитель, модель" (от самых конкретных до самых общих), которые используется для выбора драйвера устройства. Показывают совместимость с семейством аналогичных устройств, потенциально позволяя одному драйверу устройства соответствовать нескольким устройствам. 2. phandle - числовой идентификатор узла, который уникален в пределах дерева устройств,
используется другими узлами, которым необходимо ссылаться на узел, связанный со свойством.
Примечания.
1. Имя "linux" является устаревшим и используется для совместимости. 3. status - указывает на рабочее состояние устройства, возможные значения: Примечание. Последние два значения статуса в исходном файле отстуствуют, видимо они могут устанавливаться в бинарном FDT при стартовом тестировании. 4. address-cells, size-cells - параметры для свойства reg дочернего узла. # address-cells и # size-cells могут использоваться в любом узле устройства,
который имеет дочерние элементы в иерархии дерева устройств и описывают,как следует обращаться к дочерним узлам устройства.
Узлы cо свойством address-cells, size-cells 5. reg - описывает адреса ресурсов устройства в адресном пространстве, определяемом его родительской шиной. Обычно это смещение и длина отображаемых в память блоков регистров ввода-вывода. Адреса в адресном пространстве, определяемом корневым узлом, являются реальными адресами ЦП.
Если родительский узел имеет # size-cells = 0, то поле длины в значении reg должно быть опущено. Свойство reg представляет физический адрес в адресном пространстве его родительского узла устройства, связанного с узлом, а также объем физического адресного пространства, потребляемого этим устройством. 6. ranges - определяет физический адрес устройства. Значение свойства range описывает соответствие между физическим адресным пространством, определенным шинным узлом (дочерним адресным пространством), и физическим адресным пространством родительского шинного узла (родительским адресным пространством). Формат значения свойства ranges - произвольное количество троек: (адрес дочерней шины, адрес родительской шины, длина). Пустое значение свойства ranges указывает, что родительское и дочернее адресное пространство идентично, и преобразование адресов не требуется. Если свойство отсутствует в шинном узле, предполагается, что не существует сопоставления между дочерними элементами узла и родительским адресным пространством. Примечание. Свойство ranges присутствует в 4-х узлах дерева устройств Opi Zero2:
clocks, soc@03000000, pcie@0x05400000, vind@0 7. device_type - устаревшее свойство Свойство device_type использовалось в IEEE 1275 ( IEEE Standard for Boot Firmware ) для описания модели программирования устройства FCode. Поскольку DTSpec не имеет FCode, новое использование этого свойства считается устаревшим, и его следует включать только в узлы ЦП и памяти для совместимости с деревьями устройств, производными от IEEE 1275 Примечание. FCode - язык программирования, который семантически подобен языку программирования Forth, но закодирован как последовательность двоичных байтовых кодов. В дереве устройств OpiZero2 имеется 115 таких узлов 8. interrupts - определяет прерывания, которые генерируются устройством. Значение свойства прерывания состоит из произвольного числа спецификаторов прерывания. Формат спецификатора прерывания определяется привязкой корня домена прерывания. Значения свойства - массив троек 32-разрядных чисел. Кроме свойства interrupts прерывания описываются также свойствами: 3. Базовые узлы дерева устройств 1. Root node - единственный корневой узел, потомками которого являются все остальные узлы устройств. Полный путь к корневому узлу /. Свойства корневого узла Корневой узел OpiZero2 interrupt-parent = <0x00000001>; #address-cells = <0x00000002>; #size-cells = <0x00000002>; model = "sun50iw9"; compatible = "allwinner,h616", "arm,sun50iw9p1"; Для некоторых базовых узлов дерева в справочнике даны ссылки на соответствующие места в описании Soc Alwinner H616, на расшифровку регистров устройств, а также приведена дополниельная информация в виде комментариев (обычно это переводы цитат из сторонних источников), которые могут дать общее и приблизительное представление о смысле и назначении конкретного узла дерева устройств. |