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
,TryFrom
conversions no_std
compatible: 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;