LLMpediaThe first transparent, open encyclopedia generated by LLMs

Device Tree

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Linux Device Drivers Hop 5
Expansion Funnel Raw 52 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted52
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
Device Tree
NameDevice Tree
CaptionSchematic representation of a flattened device description
DeveloperOpen Firmware, PowerOpen Association, ARM Ltd., Linux Foundation
Initial release1990s
Latest releaseongoing
Operating systemsLinux, BSD, FreeBSD, NetBSD, OpenBSD, VxWorks
Licensevarious (open-source)

Device Tree Device Tree is a data structure and language for describing hardware so that software can understand platform topology, peripherals, and configuration parameters without hard-coded platform-specific logic. It permits decoupling of firmware, bootloaders, and operating systems by providing a machine-readable description consumed by bootloaders and kernels. Originating in workstation and embedded ecosystems, it is widely used across architectures for portable initialization and driver binding.

Overview

Device Tree provides a hardware description using a node/-property hierarchy that enumerates buses, memory, interrupt controllers, and devices. It enables BIOS-like information to be supplied by firmware such as Open Firmware and bootloaders like U-Boot and GRUB to operating systems such as Linux, FreeBSD, and NetBSD. The tree is commonly represented in a human-editable source language that compiles to a binary blob used at boot. This approach supports heterogeneous architectures including ARM Ltd., MIPS Technologies, and PowerPC, and facilitates portability across vendors such as Atmel, NXP Semiconductors, and Qualcomm.

History and Development

The concept traces to early workstation standards including Open Firmware developed at Sun Microsystems and specifications championed by bodies like the PowerOpen Association. Work on a flattened device description gained traction in embedded communities and was adapted for the Linux kernel by contributors associated with organizations such as ARM Ltd. and the Linux Foundation. Key milestones include adoption in server and mobile ecosystems by vendors like IBM and Samsung Electronics, integration with bootloaders including Das U-Boot and toolchain support from projects like GNU Compiler Collection and binutils. Community and corporate stakeholders including Google and Intel influenced extensions and binding conventions through collaborative processes hosted on mailing lists and repositories.

Format and Syntax

The Device Tree source (DTS) is a textual language composed of nodes and properties, similar to a tree of dictionaries. Nodes are identified by names and optional unit addresses and may contain child nodes; properties are key/value pairs with numeric, string, or phandle references. The source compiles into a Device Tree Blob (DTB) via a compiler such as dtc maintained by projects including U-Boot and kernel.org. Address and interrupt encodings follow architecture-specific schemas dictated by vendors like ARM Ltd. and standards referenced by organizations such as IEEE. Conventions for naming, phandles, and compatible strings are coordinated in community repositories and by contributors from companies such as Texas Instruments, Broadcom, and Marvell Technology Group.

Bindings and Data Model

Bindings define the contract between a device node and consumer code; they describe required properties, property types, and compatible strings used by operating system drivers. Binding documents are authored and reviewed in public fora like kernel mailing lists and hosted on resources maintained by the Linux Foundation and kernel.org. The data model supports overlays for runtime modification by bootloaders or userland tools, enabling hotplug-like behaviors on platforms supported by vendors such as NXP Semiconductors and Qualcomm. Standardized bindings exist for buses and controllers like PCI, I2C, SPI, GPIO, storage controllers produced by Seagate Technology and Western Digital, and SoC peripherals from vendors such as STMicroelectronics.

Tools and Compilation

Key tooling includes the Device Tree Compiler (dtc), which converts DTS to DTB and back, and utilities integrated into build systems like Yocto Project and Buildroot. Debugging and inspection tools exist in distributions for kernels from Red Hat and Debian-based systems, and bootloaders like U-Boot provide commands to manipulate and print the tree. Version control and CI workflows maintained by organizations such as GitHub and GitLab host collections of board files and binding documents; contributors from companies such as NVIDIA and Qualcomm submit patches reviewed via systems like Gerrit.

Usage in Operating Systems

Operating systems parse the Device Tree at boot to configure drivers and map hardware resources. Linux uses the flattened DTB passed by firmware or appended by bootloaders to instantiate device drivers in the kernel device model; projects at The Linux Foundation coordinate kernel DT support. BSD variants including FreeBSD and NetBSD provide parsers and adapters that translate DT nodes into native device frameworks. Real-time and embedded operating systems like VxWorks and proprietary RTOSes from vendors such as Wind River Systems may also consume Device Tree descriptions to avoid hard-coded Board Support Package changes.

Development and Maintenance Practices

Best practices recommend keeping binding documents in version-controlled repositories and validating device trees using automated test suites and linters maintained by communities such as those around kernel.org and U-Boot. Collaborators from corporations including ARM Ltd., Intel, and NXP Semiconductors coordinate via mailing lists, issue trackers, and continuous integration services like Travis CI and Jenkins. Maintenance emphasizes clear compatible strings, minimal platform-specific quirks, and upstreaming changes to reduce divergence between vendor trees and mainline kernels maintained by contributors from organizations such as Red Hat and Google. Community governance and contribution policies are guided by institutions like the Linux Foundation and project-specific maintainers.

Category:Embedded systems