Device Tree Background

There is a lot of history on why the Device Tree (DT) was necessary for the BeagleBone Black. With the influx of ARM systems in the past few years, there was a lot of confusion and conflicts in the Linux kernel surrounding the ARM components, prompting Linus Torvalds to push back. That push back eventually led to any new ARM boards essentially needing to use the flattened device tree, instead of ARM board files.

This sort of forced the hands of the BeagleBone Black developers, as they wouldn't be able to get a new ARM board file admitted into the mainline of the Linux kernel. They then decided to implement the DT in the latest kernel version released with the BeagleBone Black (currently using 3.8).

One issue discovered with the DT was that it wasn't designed for open embedded systems that needed to modify the system (muxing pins, enabling devices, etc) during run-time. Pantelis Antoniu implemented a solution to this issue using device tree overlays, and a cape manager. Later, Grant Likely proposed the system that would allow for a new device tree overlay format that was a "direct extension from the existing dtb data format." allowing for modification of the DT during run-time from user-space.

More details about the history, and implementation details can be found at the following links:
https://github.com/jadonk/validation-scripts/tree/master/test-capemgr
https://docs.google.com/document/d/17P54kZkZO_-JtTjrFuVz-Cp_RMMg7GB_8W9JK9sLKfA/pub
This guide was first published on Jul 29, 2013. It was last updated on Jul 29, 2013. This page (Device Tree Background) was last updated on May 04, 2015.