Home 设备树API,用法等
Post
Cancel

设备树API,用法等

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

This post is licensed under CC BY 4.0 by the author.