2个稳定版本
2.2.0 | 2024年1月20日 |
---|---|
2.1.0 | 2024年1月20日 |
#1028 in 硬件支持
24KB
470 行
psi_device_tree
设备树用于描述大量硬件,尤其是在嵌入式领域,并被用于U-Boot、Linux和其他引导加载程序和内核中。设备树列出了外设、硬件解码器、处理核心和连接到印制电路板(PCB)上系统芯片(SoC)的外部组件的地址和其他属性。
该库允许解析所谓的平坦设备树(FDT),它是相应设备树源(DTS)文件的编译二进制形式,通常在各自项目中找到,例如Linux。设备树源通常是模块化的,先预处理然后编译为DTB。用户可以使用U-Boot项目的dtc
(设备树编译器)实用程序创建这些文件
# 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
要了解更多关于Linux中设备树的信息,请查看内核文档。
一些示例设备树以尝试如下:树莓派设备树。
该库不使用std
,只使用core
。
示例
use std::{fs, io::Read};
use psi_device_tree::DeviceTree as DT;
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 = DT::load(buf.as_slice ()).unwrap();
println!("{dt:?}");
}
依赖项
~2.2–3MB
~54K SLoC