flat_device_tree 2.1.1

Reads and parses Linux device tree images
Documentation

flat_device_tree: Parse flattened Linux device trees

NOTE: flat_device_tree development has moved to Codeberg

Device trees are used to describe a lot of hardware, especially in the ARM embedded world and are also used to boot Linux on these device. A device tree describes addresses and other attributes for many parts on these boards.

This library allows parsing the so-called flattened device trees, which are the compiled binary forms of these trees. Users can create these files using the dtc (device tree compiler) utility:

# If your DTS includes C pre-processor directives (e.g. #include <...>), run the `cpp` utillity
cpp -E -P -Wp,-I<include-dir> /path/to/some.dts > processed.dts

# Run the `dtc` utility to "flatten" the device tree
dtc -I dts -O [dts,dtb] -i <include-dir> -o flattened.[dts,dtb] processed.dts

To read more about device trees, check out the kernel docs.

Some example device trees to try out are the Raspberry Pi ones.

The library does not use std, just core.

Examples

# use std::{fs, io::Read};
fn main() {
    // read file into memory
    let mut input = fs::File::open("examples/bcm2709-rpi-2-b.dtb").unwrap();
    let mut buf = Vec::new();
    input.read_to_end(&mut buf).unwrap();

    let dt = device_tree::DeviceTree::load(buf.as_slice ()).unwrap();
    println!("{:?}", dt);
}