Linux驱动 2026年5月11日 5 分钟

设备树4-节点属性提取

本章主要对设备树属性提取进行讲解 a. 处理DTBof_fdt.h // dtb文件的相关操作函数, 我们一般用不到, …

本章主要对设备树属性提取进行讲解

a. 处理DTB
of_fdt.h // dtb文件的相关操作函数, 我们一般用不到, 因为dtb文件在内核中已经被转换为device_node树(它更易于使用)

b. 处理device_node
of.h // 提供设备树的一般处理函数, 比如 of_property_read_u32(读取某个属性的u32值), of_get_child_count(获取某个device_node的子节点数)
of_address.h // 地址相关的函数, 比如 of_get_address(获得reg属性中的addr, size值)
of_match_device(从matches数组中取出与当前设备最匹配的一项)
of_dma.h // 设备树中DMA相关属性的函数
of_gpio.h // GPIO相关的函数
of_graph.h // GPU相关驱动中用到的函数, 从设备树中获得GPU信息
of_iommu.h // 很少用到
of_irq.h // 中断相关的函数
of_mdio.h // MDIO (Ethernet PHY) API
of_net.h // OF helpers for network devices.
of_pci.h // PCI相关函数
of_pdt.h // 很少用到
of_reserved_mem.h // reserved_mem的相关函数

c. 处理 platform_device
of_platform.h // 把device_node转换为platform_device时用到的函数,
// 比如of_device_alloc(根据device_node分配设置platform_device),
// of_find_device_by_node (根据device_node查找到platform_device),
// of_platform_bus_probe (处理device_node及它的子节点)
of_device.h // 设备相关的函数, 比如 of_match_device

在根文件系统中查看设备树(有助于调试)

a. /sys/firmware/fdt // 原始dtb文件

hexdump -C /sys/firmware/fdt

b. /sys/firmware/devicetree // 以目录结构程现的dtb文件, 根节点对应base目录, 每一个节点对应一个目录, 每一个属性对应一个文件

c. /sys/devices/platform // 系统中所有的platform_device, 有来自设备树的, 也有来有.c文件中注册的
对于来自设备树的platform_device,
可以进入 /sys/devices/platform/<设备名>/of_node 查看它的设备树属性

d. /proc/device-tree 是链接文件, 指向 /sys/firmware/devicetree/base

上一篇 设备树3-设备树展开过程

本章内容主要参考的又韦东山老版视频中设备树章节、迅为的驱动开发手册、以及claude生成的文章 1.是再不使用设备树的情...

下一篇 设备树3-设备树节点展开2

设备树DTB格式 设备树文件是大端模式,大小端存储方式只会对数字又影响,对于字符串是没有影响的