of_property_read_u32 函数说明
of_property_read_u32
是 Linux 设备树 (Device Tree) 操作中的一个常用函数,用于从设备树节点中读取一个 32 位无符号整数值。
函数原型
int of_property_read_u32(const struct device_node *np, const char *propname, u32 *out_value);
参数说明
-
np
: 指向设备树节点的指针,表示要从哪个节点读取属性 -
propname
: 要读取的属性名称字符串 -
out_value
: 输出参数,用于存储读取到的32位无符号整数值
返回值
-
成功时返回 0
-
如果属性不存在,返回 -EINVAL
-
如果属性长度不正确,返回 -EOVERFLOW
#include <linux/of.h>
u32 value;
int ret;
ret = of_property_read_u32(dev->of_node, "clock-frequency", &value);
if (ret) {
/* 处理错误 */
dev_err(dev, "Failed to read clock-frequency property\n");
} else {
/* 使用读取到的值 */
dev_info(dev, "Clock frequency is %u Hz\n", value);
}
相关函数
-
of_property_read_u16
: 读取16位无符号整数 -
of_property_read_u8
: 读取8位无符号整数 -
of_property_read_u64
: 读取64位无符号整数 -
of_property_read_u32_array
: 读取32位无符号整数数组 -
of_property_read_string
: 读取字符串属性
注意事项
-
在调用前应确保设备树节点和属性确实存在
-
属性值在设备树中应以正确的格式定义(如
property = <0x1000>;
) -
错误处理是必要的,因为属性可能不存在或格式不正确