汇鑫科技网站建设,网站建设培训学院,新媒体运营公司排行榜,网站 制作 中心设备树定义 设备树#xff08;device tree是描述硬件信息的一种树形结构#xff0c;设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点#xff0c;一个设备节点内部包含当前硬件的多个不同属性#xff0c;相同节点不同属性是以链式结构存…设备树定义 设备树device tree是描述硬件信息的一种树形结构设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点一个设备节点内部包含当前硬件的多个不同属性相同节点不同属性是以链式结构存储。 设备树文件格式 内核顶层目录下/arch/arm/boot/dts设备树文件存放路径 单独编译设备树文件make dtbs ***.dts//设备树源码文件 ***.dtsi //设备树的补充文件或者头文件 | | DTC(编译设备树的编译工具) | | ***.dtb //编译后设备树的镜像文件 设备树的语法 /dts-v1/; //设备树的版本号 / { // /表示设备树的根节点所有的节点信息都在根节点内部定义 node1 { //node1是设备树根节点的子节点 a-string-property A string; //node1节点内部的属性键值对 a-string-list-property first string, second string; // hex is implied in byte arrays. no 0x prefix is required a-byte-data-property [01 23 34 56]; child-node1 {//node1节点的子节点 first-child-property; //空属性键值对用来起到标识作用 second-child-property 1; a-string-property Hello, world; }; child-node2 { }; }; node2 { //根节点的子节点 an-empty-property; a-cell-property 1 2 3 4; /* each number (cell) is a uint32 */ child-node1 { }; }; }; 节点命名规则[ name指的是节点名字是一个简单的 ASCII 字符串长度最多为 31 个字符。通常节点是根据它所代表的设备类型来命名的。如果节点使用地址描述设备则包含unit-address ex:GPIO50006000
键值对格式
属性是简单的键值对其中值可以为空或包含任意字节流 文本字符串以 null 结尾用双引号表示 string-property a string; “cell”是 32 位无符号整数由尖括号分隔 cell-property 0xbeef 123 0xabcd1234; 二进制数据用方括号分隔 binary-property [0x01 0x23 0x45 0x67]; 不同表示形式的数据可以使用逗号连接在一起 mixed-property a string, [0x01 0x23 0x45 0x67], 0x12345678; 逗号也用于创建字符串列表 string-list red fish, blue fish; 注在linux中也有一些特殊的键值对譬如-----》compatible 厂商,设备名字; 获取设备树节点信息的API 1.struct device_node *of_find_node_by_name(struct device_node *from, const char *name); 功能根据设备树节点的名字解析设备树节点 参数 from当前节点父节点首地址不知道就填NULL 默认从设备树根节点开始解析 name:设备树节点名字 mynode 返回值成功获取到解析的设备树节点信息结构体首地址失败返回NULL 2.struct device_node *of_find_node_by_path(const char *path) 功能根据设备树节点路径解析设备树节点 参数 path:设备树节点路径 /mynode0x12345678 返回值成功获取到解析的设备树节点信息结构体首地址失败返回NULL 3.struct device_node *of_find_compatible_node(struct device_node *from, const char *type, const char *compat); 功能:根据设备树节点中compatibe键来解析设备树节点 参数 from:填NULL默认从根节点开始解析 type:NULL compat:填写要解析的设备树节点中compatible的值 返回值成功获取到解析的设备树节点信息结构体首地址失败返回NULL 4、struct property *of_find_property(const struct device_node *np, const char *name, int *lenp) 功能基于解析后的设备树节点信息结构体解析指定属性键值对 参数 np:设备树节点信息结构体指针 name:指定的键名 lenp:获取到的字节个数 返回值成功返回属性结构体首地址失败返回NULL 如果存储方式不同可用一下API进行转换 __u32 __be32_to_cpup(const __be32 *p) 功能:u32类型数据大端转小端 参数转换的数据首地址 返回值:返回转换后的数值 __be32 __cpu_to_be32p(const __u32 *p)