linux内核中有许多设备树相关的API接口,主要声明在文件 <linux/of.h>
中。 驱动程序中可以使用,帮助从设备树中解析相关内容。详细信息参考内核源码头文件include/linux/of.h
。 另外,还有include/linux/of_xxx.h
的头文件。 设备树的节点在内核中使用 struct device_node
表示,这里记录一些api。
查找节点类
查找节点,返回设备树节点结构体。
1
2
3
4
5
6
7
8
9
10
11
of_find_node_by_name()
of_find_node_by_path()
of_find_node_by_type()
of_find_node_by_phandle()
of_find_xxxx()...
of_get_parent()
of_get_next_parent()
of_get_next_child()
......
获取节点属性值类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
of_find_property()
of_property_read_u8()
of_property_read_u16()
of_property_read_u32()
of_property_read_u64()
of_property_read_u8_array()
of_property_read_u16_array()
of_property_read_u32_array()
of_property_read_u64_array()
of_property_read_string()
of_property_read_string_index()
of_property_read_bool()
内存映射相关
1
2
of_iomap()
of_address_to_resource()
其他
运行中查看设备树情况
1
cat /proc/device-tree/
单独编译设备树
1
2
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
需要指定好ARCH