Device trees on the BeagleBone
One feature that was introduced in the Linux kernel is the concept of a device tree. The goal of the device tree is to allow one kernel binary to support different hardware by changing the device tree. A device tree is a data structure used by the kernel to describe the underlying hardware.
The device tree data informs the kernel about the following:
Physical address of the hardware blocks, for example, the I2C block on the BeagleBone is supported by the same driver as the one on the original Beagle boards. However, they differ by the address.
Any hardware revision differences.
Name of the driver the hardware uses. This is often specified as a compatible attribute.
Hardware resources such as interrupts and DMA resources used.
Register settings specific to the hardware.
The device tree information depends on the driver using it. There can be other attributes such as GPIOs to enable functions.
Like building a kernel, the device tree is an advanced topic. We will go through...