Expand description
§Device Tree Parser
Parse Device Tree Blob (DTB) files with zero-copy performance and ergonomic APIs.
Designed for embedded systems with no_std compatibility.
§Quick Start
// Load your DTB data
let dtb_data = std::fs::read("path/to/your.dtb").unwrap();
// Create parser and parse the device tree
let parser = DeviceTreeParser::new(&dtb_data);
let tree = parser.parse_tree()?;
// Use ergonomic APIs (v0.3.0+)
for child in &tree {
println!("Node: {}", child.name);
// Access properties using Index trait
if child.has_property("reg") {
println!("Register: {}", child["reg"].value);
}
}§Features
- Zero-copy parsing: Borrows from original DTB buffer for performance
- Ergonomic APIs: Index traits,
IntoIterator,TryFromconversions no_stdcompatible: Works in embedded environments withalloc- Type-safe: Strong typing for device tree structures and properties
- Real-world tested: Validated against QEMU-generated DTB files
§Main Types
DeviceTreeParser- Main parser interfaceDeviceTreeNode- Device tree nodes with ergonomic accessProperty- Device tree properties with type-safe valuesPropertyValue- Strongly-typed property valuesDtbHeader- DTB file header informationMemoryReservation- Memory reservation entries
Re-exports§
pub use dtb::AddressRange;pub use dtb::AddressSpec;pub use dtb::DeviceTreeNode;pub use dtb::DeviceTreeParser;pub use dtb::DtbError;pub use dtb::DtbHeader;pub use dtb::DtbToken;pub use dtb::MemoryReservation;pub use dtb::NodeIterator;pub use dtb::Property;pub use dtb::PropertyValue;pub use dtb::tree::parse_address_from_bytes;