fdt-raw
用于解析设备树二进制文件(DTB)的低级 Rust 库。
概述
fdt-raw 是一个基于 Device Tree Specification v0.4 实现的纯 Rust、#![no_std] 兼容的设备树解析库。该库提供了对扁平设备树(FDT)结构的底层访问接口,适用于嵌入式系统和裸机开发环境。
特性
- 纯 Rust 实现:无需 C 语言依赖
no_std兼容:适用于裸机和嵌入式环境- 基于规范:严格遵循 Device Tree Specification v0.4
- 零拷贝解析:直接在原始数据上操作,避免不必要的内存分配
- 类型安全:提供强类型的 API 接口
- 内存高效:使用
heapless进行无分配器集合操作
核心组件
Fdt 结构
主要的 FDT 解析器,提供对设备树结构的访问:
- 头部信息解析
- 内存保留块遍历
- 节点树遍历
- 属性访问
支持的节点类型
- 内存节点:解析内存区域信息
- chosen 节点:访问启动参数
- 通用节点:处理其他所有节点类型
属性解析
- reg 属性:地址范围解析,支持
#address-cells和#size-cells - 属性迭代器:高效的属性遍历
- 属性值访问:提供各种数据类型的访问方法
快速开始
use Fdt;
// 从字节数据解析 FDT
let fdt = from_bytes?;
// 遍历根节点的子节点
for node in fdt.root.children
// 访问内存保留块
for reservation in fdt.memory_reservations
依赖
heapless = "0.9"- 无分配器集合log = "0.4"- 日志记录thiserror = {version = "2", default-features = false}- 错误处理
开发依赖
dtb-file- 测试数据env_logger = "0.11"- 日志实现
许可证
本项目采用开源许可证,具体许可证类型请查看项目根目录的 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request。请确保:
- 代码遵循项目的格式规范(
cargo fmt) - 通过所有测试(
cargo test) - 通过 Clippy 检查(
cargo clippy)
相关项目
- fdt-parser - 更高级的缓存式 FDT 解析器
- fdt-edit - FDT 编辑和操作库
- dtb-tool - DTB 文件检查工具
- dtb-file - 测试数据包