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

2.13作业【设备树解析,按自己理解】

设备树定义

        设备树(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:GPIO@50006000

键值对格式

属性是简单的键值对,其中值可以为空或包含任意字节流

文本字符串(以 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)

相关文章:

2.13作业【设备树解析,按自己理解】

设备树定义 设备树&#xff08;device tree是描述硬件信息的一种树形结构&#xff0c;设备书文件在linux内核启动后被内核解析。描述一个硬件设备信息的节点我们叫做设备节点&#xff0c;一个设备节点内部包含当前硬件的多个不同属性&#xff0c;相同节点不同属性是以链式结构存…...

《NFL星计划》:巴尔的摩乌鸦·橄榄1号位

巴尔的摩乌鸦&#xff08;英语&#xff1a;Baltimore Ravens&#xff09;是一支职业美式橄榄球球队位于马里兰州的巴尔的摩。他们现时为美国美式橄榄球联合会的北区进行比赛&#xff0c;其主场为M&T银行体育场。乌鸦队曾在2000年和2012年取得超级碗冠军。 巴尔的摩乌鸦 成…...

Allegro如何设置自动保存和自动保存的时间操作指导

Allegro如何设置自动保存和自动保存的时间操作指导 做PCB设计的时候,自动保存软件是一个必要的功能,Allegro同样支持设置自动保存,而且可以设置自动保存的时间。 如下图 具体操作如下 点击Setup点击User Preferences...

Kotlin实现简单音乐播放器

关于音乐播放器&#xff0c;我真的是接触比较多&#xff0c;听歌作为我第一大爱好&#xff0c;之前也用Java设计过音乐播放器&#xff0c;感兴趣的同学可以阅读&#xff1a;Android Studio如何实现音乐播放器&#xff08;简单易上手&#xff09;和 Android Studio实现音乐播放器…...

ShardingSphere-Proxy 数据库协议交互解读

数据库协议对于大部分开发者来说算是比较冷门的知识&#xff0c;一般的用户、开发者都是通过现成的数据库客户端、驱动使用数据库&#xff0c;不会直接操作数据库协议。不过&#xff0c;对数据库协议的特点与流程有一些基本的了解&#xff0c;有助于开发者在排查数据库功能、性…...

基于ubuntu20.4的wine的MDK5软件的安装

本文基于ubuntu20.4安装MDK5的keil软件&#xff0c;由于MDK不提供linux版本的安装软件&#xff0c;因此需要利用wine软件来安装MDK5软件&#xff0c;具体流程包括wine软件安装、MDK5安装及MDK5的lic添加等3部分内容。具体流程如下所示&#xff1a; &#xff08;一&#xff09;…...

Jmeter之直连数据库框架搭建简介

案例简介 通过直连数据库让程序代替接口访问数据库&#xff0c;如果二者预期结果不一致&#xff0c;就找到了程序的缺陷。 下面通过一个案例分析讲解如何实现&#xff1a;获取某个字段值&#xff0c;放在百度上搜索。 实现方式 1、Jmeter本身不具备直连数据库的功能&#xf…...

备战蓝桥杯【高精度乘法和高精度除法】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

火眼审阅 | 基于NLP和OCR识别技术赋能合同审阅

合同作为确定权利义务的法律文件&#xff0c;贯穿企业内外部活动的所有环节&#xff0c;可见合同数据之于企业是非常重要的数据资产。 合同管理是企业营业中的重要部分&#xff0c;其中合同审核是企业法务的基本工作之一。而对于所有的法务人员一直存在一个问题&#xff1a;合…...

关于在集合中对象比较属性值的问题

关于在集合中对象比较属性值的问题1 问题说明2 问题排查3 总结及伪代码楼主在最近遇到一个场景&#xff0c;项目中有一个校验。 需要将数据库查询的集合对象与前端传递的集合对象进行比较&#xff0c;看数据是否被修改。 1 问题说明 基于上面项目需求&#xff0c;项目为较老的…...

java微信小程序旅游管理系统

本旅游服务软件,主要实现了管理员后端&#xff1a;首页、个人中心、旅游攻略管理、旅游资讯管理、景点信息管理、门票预定管理、用户管理、酒店信息管理、酒店预定管理、推荐路线管理、论坛管理、系统管理,用户前端&#xff1a;首页、景点信息、酒店信息、论坛中心、我的等。总…...

2023年要跟踪的11个销售管理关键指标

销售管理关键指标有&#xff1a;营销合格线索数量&#xff08;MQL&#xff09;、MQL 到 SQL 的转换率、商机赢单率、获客成本、总销售额、客户终身价值&#xff08;LTV&#xff09;、LTV 与 CAC 比率、赢单周期、每客户平均销售额&#xff08;平均客单价&#xff09;、每销售人…...

MongoDB--》基本常用命令使用

目录 数据库操作命令 选择和创建数据库 数据库的删除 集合操作命令 集合的显示创建 集合的隐式创建 集合的删除 文档基本的CRUD&#xff08;增删改查&#xff09; 文档的插入 文档的基本查询 文档的更新 删除文档 数据库操作命令 数据库常用的操作命令如下&#x…...

js浮点数四则运算精度丢失以及toFixed()精度丢失解决方法

js浮点数四则运算精度丢失以及tofixed精度丢失解决方法一、js浮点数计算精度丢失的一些例子1、四则运算精度丢失&#xff1a;2、toFixed() 四舍五入精度丢失&#xff1a;二、浮点数计算精度丢失的原因三、解决办法1、使用 big.js&#xff08;如果有大量连续的计算推荐使用&…...

高姿态下的面部表情识别系统

效果展示&#xff1a; python表情、性别识别面部表情识别 (FER) 在计算机安全、神经科学、心理学和工程学方面有大量应用。由于其非侵入性&#xff0c;它被认为是打击犯罪的有用技术。然而&#xff0c;FER 面临着几个挑战&#xff0c;其中最严重的是它在严重的头部姿势下的预测…...

English Learning - Day59 作业打卡 2023.2.13 周一

English Learning - Day59 作业打卡 2023.2.13 周一引言1. 我有一些急事要处理。2. 这个孩子无忧无虑。3. 那个骑在白马上的姑娘是我姐姐。4. 对方正在给我们公司施加压力迫使我们降价。5. 我的医生告诉我要少吃垃圾食品。6. 我从来不熬夜。7.我早就想跟你聊一聊了。8.我一定不…...

图机器学习

图机器学习1、图机器学习导论1.1图神经网络与普通神经网络的异同2、图的基本表示和特征工程2.1 图的基本表示2.1.1 图的本体设计2.1.2 图的种类2.1.3节点连接数&#xff08;度&#xff09;2.1.4图的基本表示&#xff08;邻接矩阵&#xff09;节点数量少使用2.1.5图的基本表示&a…...

ArcGIS中ArcMap创建渔网Create Fishnet:生成指定大小的格网矢量文件

本文介绍在ArcMap软件中&#xff0c;通过“Create Fishnet”工具创建渔网&#xff0c;从而获得指定大小的矢量格网数据的方法。 首先&#xff0c;我们在创建渔网前&#xff0c;需要指定渔网覆盖的范围。这里我们就以四川省为例&#xff0c;在这一范围内创建渔网&#xff1b;其中…...

TensorRT中的自定义层

TensorRT中的自定义层 文章目录TensorRT中的自定义层9.1. Adding Custom Layers Using The C API9.1.1. Example: Adding A Custom Layer With Dynamic Shape Support Using C重要提示&#xff1a;覆盖检查索引小于pos的连接的格式/类型&#xff0c;但绝不能检查索引大于pos的连…...

部署智能合约到公链

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

Windows server——部署DNS服务(3)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.管理DNS服务 1.子域 案例 2. 委派 案例 1&#xff09;添加主机记录 …...

9. QML_OpenGL--2. 在QQuick中搭建加载OpenGL框架

1. 说明&#xff1a; OPenGL一般在 QtWidget 中使用&#xff0c;但目前使用 QML 做界面开发是一种趋势&#xff0c;同时在QML中使用OPenGL进行渲染也是十分必要&#xff0c;文章简单介绍如何在QML中使用 OPenGL&#xff0c;搭建了一种基本的框架。整体思路和在 QtWidget 中类似…...

亚马逊云科技携手滴普科技,打造数据智能新标杆

随着企业数字化转型的不断深入&#xff0c;数据对于业务的价值和重要性也逐渐凸显。越来越多企业意识到&#xff0c;只有不断提升底层数据基础平台的性能和能力&#xff0c;才能构建数据驱动的业务&#xff0c;增强企业核心竞争力。作为湖仓一体数据智能基础软件独角兽企业&…...

CGO 跨平台静态编译

什么是跨平台编译&#xff1f; 跨平台编译&#xff1a;即交叉编译&#xff0c;是在一个平台上生成另一个平台上的可执行文件。所谓平台&#xff0c;实际上包含两个概念&#xff1a;体系架构(Architecture)、操作系统 (Operating System&#xff09;。同一个体系架构可以运行不同…...

股票买卖接口怎么来的?

现在股票买卖接口主要是在线上研发&#xff0c;有专业的开发团队进行源码开发和完善&#xff0c;但是&#xff0c;常常会在开发过程中出现问题&#xff0c;也就是遇到一些特殊的情况需要及时处理&#xff0c;那么股票买卖接口怎么开发实现出来的&#xff1f;一、股票买卖接口开…...

【Python学习笔记】29.Python3 面向对象

前言 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 Python3 面向对象 如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面…...

MySQL 索引

索引 索引是一种用于快速查询和检查数据的数据结构&#xff0c;其本质可以看成是一种排好序的数据结构。理解&#xff1a;索引的作用就相当于书的目录&#x1f4da;&#xff0c;可以根据目录快速定位到想要查看的位置。常见的索引结构&#xff1a;B Tree、B Tree、Hash、红黑树…...

学会使用LoadRunner录制脚本

1.LoadRunner安装 https://blog.csdn.net/weixin_48584088/article/details/129012469 2.Loadrunner的基本概念 LoadRunner是一种适用于许多软件体系架构的自动负载测试工具&#xff0c;从用户关注的响应时间、吞吐量&#xff0c; 并发用户和性能计数器等方面来衡量系统的性…...

产品经理必看的高效产品文档撰写指南

对于企业来说&#xff0c;如何推广自己的产品是一个非常重要的话题&#xff0c;而其中必要的就是创建企业产品宣传册&#xff0c;这对于产品宣传非常重要&#xff0c;尤其是一些大公司&#xff0c;非常重视这种产品展示方式。因为它可以更完整地展现产品&#xff0c;撰写一份合…...

Prometheus 的介绍和安装

介绍 Prometheus 是一个开源的监控和报警系统,最初由SoundCloud于2012年创建,随着越来越多的公司采用Prometheus以及非常活跃的社区,Prometheus于2016年加入云原生基金会,成为Kubernetes之后的第二个托管项目,并于2018年毕业。 特点 通过PromQL来对基于指标名称和键值对…...

国外对企业网站开发的研究/留手机号广告

看到这篇文章的朋友应该都差不多开工了吧。但是我还没有&#xff0c;我甚至不知道自己什么时候才能有工作…… 又是一年初&#xff0c;而我也已经失业一年多了……今天就说说我自己吧——一个有着8年 Android 开发经验的无业游民。 前言 近年来&#xff0c;当程序员真的是越来…...

淄博网站制作公司/免费外网加速器

数据挖掘是指以某种方式分析数据源&#xff0c;从中发现一些潜在的有用的信息&#xff0c;所以数据挖掘又称作知识发现&#xff0c;而关联规则挖掘则是数据挖掘中的一个很重要的课题&#xff0c;顾名思义&#xff0c;它是从数据背后发现事物之间可能存在的关联或者联系。举个最…...

余姚网站建设哪家好/公司网站建设步骤

1 新建 项目右键-->Dynamic web project动态WEB项目 2 在新建项目上面 3 转载于:https://www.cnblogs.com/cici-new/archive/2013/05/14/3078082.html...

青岛网站建设公司哪家好/直通车推广计划方案

QuartZ2d是二维绘图引擎,包含在core Graphics框架中,是纯C语言的; 图形上下文:CGContextRef数据类型,包含以下信息:绘图路径,绘图状态,绘图输出目标; 注意:绘图的顺序对最终显示结果有影响; 1.当view第一次被显示的时候会调用drawRect:(CGRect )rect 2.不要手动调用drawRect…...

协会网站设计方案/互联网营销推广

为什么80%的码农都做不了架构师&#xff1f;>>> 进度类计算 项目进度网络图 ----展示项目各计划活动、持续时间、逻辑关系的图形 双代号网络图&#xff08;箭线型&#xff09; ----用一个箭线表示一项活动&#xff0c;活动名称写在箭线上&#xff0c;箭线同时表示…...

数据管理系统/马鞍山网站seo

一、lsattr命令 lsattr命令用于显示文件属性。 用chattr执行改变文件或目录的属性&#xff0c;可执行lsattr指令查询其属性。 1.1 语法 lsattr [-adlRvV][文件或目录...]1.2 选项 选项描述-a显示所有文件和目录&#xff0c;包括以".“为名称开头字符的额外内建&#xff…...