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
.
# 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);
}