uboot fdt操作函数

phandle处理:

查找最大的phandle: fdt_find_max_phandle
生成新的可用的phandle: fdt_generate_phandle
获取指定节点的phandle: fdt_get_phandle
通过phandle查找节点偏移: fdt_node_offset_by_phandle

创建新的phandle:
使用 fdt_generate_phandle()生成新的phandle, 调用fdt_setprop()设置phandle

获取节点属性

//fdt 输入参数,fdt在内存中的物理地址
//nodeoffset 输入参数,节点偏移,可通过fdt_path_offset()接口获取
//name 输入参数 要获取的属性名称
//lenp 输出参数 返回的数据占用内存大小
const void *fdt_getprop(const void *fdt, int nodeoffset, const char *name, int *lenp)
//示例
const fdt32_t *php;
int len;
php = fdt_getprop(fdt, nodeoffset, "phandle", &len);
if (!php || (len != sizeof(*php))) {
//失败
}
else {
// 成功
}

设置节点属性,添加新的属性

//fdt 输入参数,fdt在内存中的物理地址
//nodeoffset 输入参数,节点偏移,可通过fdt_path_offset()接口获取
//name 输入参数 要设置的属性名称
//val 输入参数 要设置的属性值
//len 输入参数 要设置的属性值占用的内存大小
int fdt_setprop(void *fdt, int nodeoffset, const char *name,
		const void *val, int len)
//示例 向节点中添加status = "okay";属性,或者将status的值更改为“okay”
ret = fdt_setprop((void*)fdtaddr, nodeoffset, "status", "okay", strlen("okay") + 1);
if (ret != 0) {
	dbg("path[%s] enable failed\n", path);
	return -1;
}

大小端转换

fdt32_t out cpu_to_fdt32(u32 in) 用于将cpu数据转换为fdt数据,以便写入设备树中
u32 out fdt32_to_cpu(fdt32_t in) 用于将fdt数据转换为cpu数据,以便cpu应用设备树参数
待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值