2个稳定版本

2.2.0 2024年1月20日
2.1.0 2024年1月20日

#1028 in 硬件支持

MIT 许可证

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