网站建设补充协议,中英文网站英文,浙江建设职业技术学院网站,基础网络建设设备树
定义
设备树是描述硬件信息的一种树形结构#xff0c;设备树文件会在内核启动后被内核解析得到对应设备的具体信息。 树形结构就自然会存在节点#xff0c;硬件设备信息就存储再设备树中的节点上#xff0c;即设备节点。而一个设备节点中可以存储硬件的多个不同属性…设备树
定义
设备树是描述硬件信息的一种树形结构设备树文件会在内核启动后被内核解析得到对应设备的具体信息。 树形结构就自然会存在节点硬件设备信息就存储再设备树中的节点上即设备节点。而一个设备节点中可以存储硬件的多个不同属性这些不同的属性是以链表的形式进行存储。
文件格式
以***.dts结尾的是设备树源码文件 以***.dtsi结尾的是设备树补充文件或头文件 设备树的编码工具是DTC 以***.dtb结尾的是设备树编译后的镜像文件
语法
设备树是由属性和节点构成的简单树形结构。其中节点又可以包含属性和子节点。
节点的命名规则 name[unit-address] name指的是节点名类型为ASCII字符串长度为31个字符。后面是可选的对应地址。 属性键值对 属性为键值对类型值可以为空或包含任意的字节流。 设备树源文件中也有一些基本数据表示形式字符串无符号整数[二进制数据]
设备树信息解析相关函数
1. struct device_node *of_find_node_by_name(struct device_node *from,const char *name);
功能根据设备树节点的名字解析设备树节点
参数from当前节点的父节点首地址如果填写NULL则默认从设备树的根结点开始解析name当前节点名字
返回值解析成功返回设备树节点信息结构体首地址失败返回NULL
2.struct device_node *of_find_node_by_path(const char *path)
功能通过设备树节点路径解析设备树节点
参数path设备树节点对应的路径
返回值解析成功返回设备树节点信息结构体首地址失败返回NULL
3.struct device_node *of_find_compatible_node(struct device_node *from, const char *type, const char *compat);
功能根据compatible键来解析设备树节点
参数from当前节点的父节点首地址如果填写NULL则默认从设备树的根结点开始解析type匹配device_type填NULL表示忽略此选项compat填写要解析的设备树节点中compatible的值返回值成功获取到解析的设备树节点信息结构体首地址失败返回NULL注由于电脑和开发板的无符号整型存储方式可能不同所以需要用__be32_to_cpup一类函数来进行格式转换
由于上述函数找到的设备树节点信息结构体中包含的属性信息可能很多若都是用指针偏移非常不方便因此可以用以下函数来找到具体属性键值对
struct property *of_find_property(const struct device_node *np,const char *name, int *lenp)
功能基于解析后的设备树节点信息结构体解析指定属性键值对
参数np设备树节点信息结构体指针name指定的键名lenp获取到的字节个数
返回值成功返回属性结构体首地址失败返回NULL