hnuOS lab3

实验过程

设备树是用于解决ARM等嵌入式系统由于设备种类纷繁复杂导致的与平台相关的大量内核代码被大量重复的问题。通过设备树来描述系统硬件及其属性,然后通过bootLoader将其传递给kernel,以便kernel可以有较大的灵活性。如下图所示设备树的例子。
我们要自己编写程序解析dtb文件,需要使用libfdt库(设备树编译器DTC的配套库)提供API接口以及处理设备树的二进制结构
首先在wsl中安装libfdt库:

1
sudo apt install device-tree-compiler libfdt-dev

一些关键api:

编写代码

  • 递归遍历并设备树的结构和属性
    • 读取并解析.dtb文件
    • 递归遍历设备树的节点(Nodes)和属性(Properties)。
    • 以缩进格式打印节点层次结构,并格式化不同类型的属性值(字符串、32位整数、二进制数据等

main函数

print_property_value函数

traverse_nodes函数

输出

可以看到解析成功