gd->fdt_blob已经设置成了dtb的地址了, fdt提供的接口都是以gd->fdt_blob(dtb的地址)为参数的,常用接口如下:(用节点在dtb中的偏移地址来表示一个节点).
lib/fdtdec.c中
1.fdt_path_offset
int fdt_path_offset(const void *fdt, const char *path)
eg:node = fdt_path_offset(gd->fdt_blob, “/aliases”);
功能:获得dtb下某个节点的路径path的偏移。这个偏移就代表了这个节点。
2.fdt_getprop
const void *fdt_getprop(const void *fdt, int nodeoffset, const char *name, int *lenp)
eg: mac = fdt_getprop(gd->fdt_blob, node, “mac-address”, &len);
功能:获得节点node的某个字符串属性值。
3.fdtdec_get_int_array、fdtdec_get_byte_array
int fdtdec_get_int_array(const void *blob, int node, const char *prop_name, u32 *array, int count)
eg: ret = fdtdec_get_int_array(blob, node, “interrupts”, cell, ARRAY_SIZE(cell));
功能:获得节点node的某个整形数组属性值。
4. fdtdec_get_addr
fdt_addr_t fdtdec_get_addr(const void *blob, int node, const char *prop_name)
eg:fdtdec_get_addr(blob, node, “reg”);
功能:获得节点node的地址属性值。
5. fdtdec_get_config_int、fdtdec_get_config_bool、fdtdec_get_config_string
功能:获得config节点下的整形属性、bool属性、字符串等等。
6. fdtdec_get_chosen_node
int fdtdec_get_chosen_node(const void *blob, const char *name)
功能:获得chosen下的name节点的偏移
7. fdtdec_get_chosen_prop
const char *fdtdec_get_chosen_prop(const void *blob, const char *name)
功能:获得chosen下name属性的值
lib/fdtdec_common.c中
8. fdtdec_get_int
int fdtdec_get_int(const void *blob, int node, const char *prop_name, int default_val)
eg: bus->udelay = fdtdec_get_int(blob, node, “i2c-gpio,delay-us”, DEFAULT_UDELAY);
功能:获得节点node的某个整形属性值。
9.fdtdec_get_uint
功能:获得节点node的某个无符号整形属性值。
原文链接:https://blog.youkuaiyun.com/qq_37307259/article/details/116902916