当前位置: 首页 > news >正文

设备树相关概念的理解

设备树

定义

设备树是描述硬件信息的一种树形结构,设备树文件会在内核启动后被内核解析得到对应设备的具体信息。
树形结构就自然会存在节点,硬件设备信息就存储再设备树中的节点上,即设备节点。而一个设备节点中可以存储硬件的多个不同属性,这些不同的属性是以链表的形式进行存储。

文件格式

以***.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
http://www.lryc.cn/news/6026.html

相关文章:

  • ubuntu20.04下配置深度学习环境GPU
  • 用egg.js来写一个api管理系统(一)
  • 企业数字化转型和升级:架构设计方法与实践
  • 【LeetCode】环形链表 II [M](链表)
  • Unity之如何实现一个VR任务(剧情)系统
  • k8s核心概念与kubectl命令行工具的使用
  • 【零基础入门前端系列】—无序列表、有序列表、定义列表(四)
  • 为什么重写equals还要重写hashcode方法
  • 电子技术——电流镜负载的差分放大器
  • go面试题
  • 攻防世界-Confusion1
  • 机器学习实战--梯度下降法进行波士顿房价预测
  • 黑马】后台管理-项目优化和上线
  • Web 框架 Flask 快速入门(三)数据库-MySQL
  • 牛客网Python篇数据分析习题(六)
  • Ansible的安装及部署
  • 链表题目总结 -- 递归
  • 重写-linux内存管理-伙伴分配器(一)
  • 为什么要用springboot进行开发呢?
  • 设备树信息解析相关函数
  • LeetCode-1124. 表现良好的最长时间段【哈希表,前缀和,单调栈】
  • vue-router路由配置
  • 中国计算机设计大赛来啦!用飞桨驱动智慧救援机器狗
  • 嘉定区2022年高新技术企业认定资助申报指南
  • 【C++】关键字、命名空间、输入和输出、缺省参数、函数重载
  • 【一道面试题】关于HashMap的一系列问题
  • 论文笔记: Monocular Depth Estimation: a Review of the 2022 State of the Art
  • Springmvc补充配置
  • MySQL 的 datetime等日期和时间处理SQL函数及格式化显示
  • 基于微信云开发的防诈反诈宣传教育答题小程序