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

驱动 day6

关于设备树的理解:

设备树(Device Tree)是一种用于特定硬件设备的解释语法树。它用来表示存储有关主板硬件和CPU架构信息的数据在内核中的传递格式,使内核可以更好地了解硬件并支持它们,而不必编写固定的代码。设备节点是一颗带着叶子和枝的树,它的枝分支表示硬件结构之间的关系类型。它使硬件设备作为一个有意义的结构,以及由几个硬件设备组成的总体设备的依赖关系。

描述一个设备信息的节点,我们叫做设备节点,一个设备节点内部包含当前硬件的多个不同属性,相同节点不同属性是以链式结构存储。

设备树文件格式:

设备树(Device Tree)提供给Linux系统一种标准的用于描述硬件和软件间通信的表示方式。设备树是一种描述性的格式,它包括单个阴影的集合,按照一定的结构和内容构成。

设备树包括3个部分:

  1. 设备树头(Device Tree Header):它定义了该文件的格式版本及操作系统/芯片平台等信息。
  2. 设备节点(device Nodes):它描述了系统中的设备,如 CPU、GPIO、I2C等等。
  3. 引导参数( boot args):它用于描述设备树加载时进行系统初始化所需要的参数以及将来设备树中所定义的设备加载在内存中时所需要的参数。

每个设备树的结构中都会有一个root节点,它的名字一般是/。节点具有属性,即name/value串,name/value串存储于device-levels中,路径由从root node开始,在*.dts*文件中由空格分隔的文本字符串标识。

另外,设备树的属性还可以由#cellsphandleregcompatible等标签标识,它们代表了设备的总体概括信息,以及设备如何组合,结构和行为方式。

设备树基本语法 

       设备树是节点和属性的简单树结构。属性是键值对,节点可以同时包含属性和子节点。

例:

/dts-v1/;//当前使用的设备树的版本号

/ {//设备树的根节点 node1

{//子节点node1 a-string-property = "A string";//属性-》键值对

        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 {//子节点node2

         an-empty-property;

         a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */

         child-node1 {

         };

   };

};

 在驱动中获取设备树信息

设备树节点信息结构体

        在内核里面存在一个结构体 struct device_node,用于存放设备节点信息

struct device_node {

                const char *name;        //设备节点名字 mynode

                const char *full_name;//设备节点完整名字 mynode@0x12345678

                struct property *properties;//键值对结构体(属性结构体)

                struct device_node *parent;//父节点地址

                struct device_node *child;//子节点地址

                struct device_node *sibling;//兄弟节点地址

};

节点属性结构体:

struct property {

                char *name;//键的名字

                int length;//值的长度(字节)

                void *value;//值

                struct property *next;//指向下一个节点的指针

};

自动获取设备树节点API

struct device_node *of_find_node_by_path(const char *path)

功能:通过节点路径获取设备节点

参数: path:节点路径("/mynode@0x12345678")

返回值:成功返回指向设备节点信息结构体空间的指针,失败返回NULL

struct device_node *of_find_node_by_name(struct device_node *from, const char *name)

功能:通过节点名字获取设备节点

参数: from:父节点指针,填NULL,默认从根节点帮我们解析寻找

name:设备节点名:"mynode"

返回值:成功返回指向设备节点信息结构体空间的指针,失败返回NULL

struct device_node *of_find_compatible_node( struct device_node *from, const char *type, const char *compat)

功能:通过compatible来解析节点

参数: from:NULL,默认从根节点开始解析

type:NULL compat:compatible的值

返回值:成功返回指向设备节点信息结构体空间的指针,失败返回NULL

__u32 __be32_to_cpup(const __be32 *p)

功能:将大端字节序转化为小端字节序

参数:数据指针

返回值:成功返回转化后的数据,失败返回-1

属性解析API

struct property *of_find_property(const struct device_node *np, const char *name, int *lenp) 功能:根据解析的节点结构体得到属性结构体信息

参数: np:设备节点首地址

name:键名

lenp:获取到的值的字节数

返回值:成功返回属性结构体地址,失败返回空

相关文章:

驱动 day6

关于设备树的理解&#xff1a; 设备树&#xff08;Device Tree&#xff09;是一种用于特定硬件设备的解释语法树。它用来表示存储有关主板硬件和CPU架构信息的数据在内核中的传递格式&#xff0c;使内核可以更好地了解硬件并支持它们&#xff0c;而不必编写固定的代码。设备节点…...

附录2-tensorflow目标检测

源码来自作者Bubbliiiing&#xff0c;我对参考链接的代码略有修改&#xff0c;网盘地址 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;dvb1 目录 1 参考链接 2 环境 3 数据集准备 3.1 VOCdevkit/VOC2007 3.2 model_data/voc_classes.txt 3.3 voc_an…...

常见的EMC问题

电磁兼容设计的目的就在于满足产品功能要求、减少调试时间&#xff0c;使产品满足电磁兼容标准的要求&#xff0c;并且使产品不会对系统中的其它设备产生电磁干扰。 电磁兼容设计中常见的问题有哪些&#xff1f; 1、电磁兼容设计可以从电路设计&#xff08;包括器件选择&…...

Redis内存存储效率问题

目录 内存碎片是如何形成的&#xff1f; 如何判断是否有内存碎片&#xff1f; 如何清理内存碎片&#xff1f; INFO命令 面向 Prometheus 的 Redis-exporter 监控 实习期间&#xff0c;了解到&#xff0c;企业级开发中多个项目使用Redis&#xff0c;运行Redis实例的有可能是…...

3.28 haas506 2.0开发教程-example-蓝牙多设备扫描(仅支持M320,HD1)

haas506 2.0开发教程-example-蓝牙多设备扫描案例说明蓝牙信息克隆1.手机蓝牙改名信息克隆代码测试案例说明 开发板扫描蓝牙设备&#xff0c;获取并打印蓝牙设备mac地址。mac地址每个设备不同&#xff0c;且不能更改。本案例仅适用于M320开发板和HD1-RTU。案例使用手机与iBeac…...

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…...

git日常使用命令

实习这段时间使用了很多git指令来提交代码&#xff0c;简单记录一下日常使用的指令&#xff1a; 提交代码通常顺序&#xff1a; 1.git status 查看本地修改项 2.git add . 提交全部文件 &#xff08;这个 .是全部文件&#xff09;到暂存区 3.git commit -m ‘本次提交的说明’…...

ES6对象展开运算符浅拷贝or深拷贝

ES6中提出的对象展开运算符“…”就是用来展开元素的。有了它就不用代码循环遍历了&#xff0c;偷懒专用。 1. 合并数组 展开原有数组中的所有元素&#xff0c;可以合并成一个新的数组。 var a[1,2,3]; var b[4,5,6]; var c[...a,...b]; console.log(c) // 输出&#xff1a;…...

leaflet 上传包含shp的zip文件,在map上解析显示图形(059)

第059个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中本地上传包含shp的zip文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果加载shapefile.js方式安装引用jszip(…...

CAN总线详细介绍

1.1 CAN是什么&#xff1f; CAN 最终成为国际标准 &#xff08; ISO11898(高速应用)和 ISO11519&#xff08;低速应用&#xff09;&#xff09;&#xff0c;是国际上应用最广泛的现场总线之一。 1.2 CAN总线特点 多主方式: 可以多主方式工作&#xff0c;网络上任意一个节点…...

python如何完成对 Excel文件的解密后读取?

通常为了防止重要的Excel文件数据内容的泄露&#xff0c;需要对文件整体进行加密与解密的操作。 对于文件的加解密过程&#xff0c;python也有很多非标准库来帮助我们完成操作&#xff0c;这里主要说明如何完成对Excel文件的解密与读取操作。 这里我们使用到的是msoffcrypto-…...

微服务实战--高级篇:RabbitMQ高级

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…...

autoCAD2022 - 设置新的原点

文章目录autoCAD2022 - 设置新的原点概述笔记UCS原点设置功能的菜单位置ENDautoCAD2022 - 设置新的原点 概述 上次整板子的dxf时, 原来的原点不合适, 想调整一下. 当时整完了, 没记录. 这次用的时候, 又找半天… 设置新原点的功能, 不在顶部菜单中, 而是在视图右上角的UCS图标…...

spring boot 配置 mybatis-plus多数据源

简介Mybatis-puls 多数据源的使用&#xff0c;采用的是官方提供的dynamic-datasource-spring-boot-starter包的 DS 注解&#xff0c;具体可以参考官网&#xff1a;https://gitee.com/baomidou/dynamic-datasource-spring-boot-starterpom.xml文件引入如下依赖主要引入dynamic-d…...

独立产品灵感周刊 DecoHack #047 - 安卓手机上最有用的APP

本周刊记录有趣好玩的独立产品设计开发相关内容&#xff0c;每周发布&#xff0c;往期内容同样精彩&#xff0c;感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到&#xff0c;建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。&#x1f4bb; 产品推荐 1. Bouncer Tempor…...

【面试题】JavaScript中递归的理解

大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库递归 RecursionTo iterate is human, to recurse, divine. 理解迭代&#xff0c;神理解递归。本文会以 JavaScript为主、有部分 Rust 举例说明。…...

PyTorch学习笔记

PyTorch学习笔记&#xff08;一&#xff09;&#xff1a;PyTorch环境安装 往期学习资料推荐&#xff1a; 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 安装参考&#xff1a; 1.视频教程&#xff1a;3分钟深度学习【环境搭建】CUDA Anacon…...

SpringBoot2知识点记录

SpringBoot2知识点记录1.SpringBoot2基础入门1.1 环境要求1.1.1 maven设置1.2 第一个程序 HelloWorld1.2.1 创建maven工程1.2.2 引入依赖1.2.3 创建主程序1.2.4 编写业务1.2.5 测试1.2.6 简化配置1.2.7 简化部署1.3 自动装配1.3.1 SpringBoot特点1.3.1.1 依赖管理1.3.1.2 自动装…...

Mysql

1 Sql编写 count(*) //是对行数目进行计数 count(column_name) //是对列中不为空的行进行计数 SELECT COUNT( DISTINCT id ) FROM tablename; //计算表中id不同的记录有多少条 SELECT DISTINCT id, type FROM tablename; //返回表中id与type同时不同的结果 X.1 连表子查询 sel…...

Q4营收利润增长背后估值持续偏低,全球支付巨头PayPal前景如何?

作为国际版的“支付宝”&#xff0c;全球第三方支付巨头PayPal的业务横跨欧美市场&#xff0c;覆盖了全球200多个国家和地区。同时&#xff0c;PayPal也是首家进军中国支付市场的外资机构&#xff0c;实力强劲。然而&#xff0c;近两年&#xff0c;PayPal的市值一路从3000亿跌至…...

【自然语言处理】【大模型】BLOOM:一个176B参数且可开放获取的多语言模型

BLOOM&#xff1a;一个176B参数且可开放获取的多语言模型《BLOOM: A 176B-Parameter Open-Access Multilingual Language Model》论文地址&#xff1a;https://arxiv.org/pdf/2211.05100.pdf 相关博客 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍 【自然…...

小红书穿搭博主推广费用是多少?

小红书作为一个种草属性非常强的平台&#xff0c;商业价值是有目共睹的。很多爱美的女性都会在小红书上被种草某个商品&#xff0c;所以很多服装品牌都会在小红书上布局推广。 穿搭作为小红书的顶梁柱类目&#xff0c;刷小红书就能总是看到好看的穿搭博主分享美美的衣服&#…...

网络安全-PHPstudy环境搭建

网络安全-PHPstudy环境搭建 网络搭建我是专家&#xff0c;安全我懂的不多&#xff0c;所以可能很基础。。因为我自己都不懂&#xff0c;都是跟着课程学的 PHPstudy 这个东东是一个在windwos下可以快速部署的web开发环境&#xff0c;安装了就能用&#xff0c;也支持iis和ngin…...

operator的两种用法(重载和隐式类型转换)

文章目录重载隐式类型转换构造函数的隐式类型转换补充operator算子的隐式类型转换重载 略 隐式类型转换 构造函数的隐式类型转换 利用operator进行的隐式类型转换成为operator算子的隐式类型转换&#xff0c;讲这个之前先了解构造函数的隐式类型转换&#xff0c;请看以下代…...

vue常用指令

介绍 vue是以数据驱动和组件化开发为核心的前端框架&#xff0c;可以快速搭建前端应用 常用指令 指令&#xff1a;页面数据的操作&#xff08;以数据去驱动DOM&#xff09; <div v-xxx""></div>v-if&#xff1a;做元素的插入&#xff08;append&…...

MATLAB | 有关数值矩阵、颜色图及颜色列表的技巧整理

这是一篇有关数值矩阵、颜色矩阵、颜色列表的技巧整合&#xff0c;会以随笔的形式想到哪写到哪&#xff0c;可能思绪会比较飘逸请大家见谅&#xff0c;本文大体分为以下几个部分&#xff1a; 数值矩阵用颜色显示从颜色矩阵提取颜色从颜色矩阵中提取数据颜色列表相关函数颜色测…...

C++模板元编程详细教程(之九)

前序文章请看&#xff1a; C模板元编程详细教程&#xff08;之一&#xff09; C模板元编程详细教程&#xff08;之二&#xff09; C模板元编程详细教程&#xff08;之三&#xff09; C模板元编程详细教程&#xff08;之四&#xff09; C模板元编程详细教程&#xff08;之五&…...

PhysioNet2017分类的代码实现

PhysioNet2017数据集介绍可参考文章&#xff1a;https://wendy.blog.csdn.net/article/details/128686196。本文主要介绍利用PhysioNet2017数据集对其进行分类的代码实现。 目录一、数据集预处理二、训练2.1 导入数据集并进行数据裁剪2.2 划分训练集、验证集和测试集2.3 设置训…...

正大期货本周财经大事抢先看

美国1月CPI、Fed 等央行官员谈话 美国1月超强劲的非农就业人口&#xff0c;让投资人开始上修对这波升息循环利率顶点的预测&#xff0c;也使本周二 (14 日) 的美国 1月 CPI 格外受关注。 介绍正大国际期货主账户对比国内期货的优势 ​第一点&#xff1a;权限都在主账户 例如…...

html+css综合练习一

文章目录一、小米注册页面1、要求2、案例图3、实现效果3.1、index.html3.2、style.css二、下午茶页面1、要求2、案例图3、index.html4、style.css三、法国巴黎页面1、要求2、案例图3、index.html4、style.css一、小米注册页面 1、要求 阅读下列说明、效果图&#xff0c;进行静…...

个人站长做哪些网站好/seo排名工具提升流量

WPF 基础系列2—WPF前世今生 1.开篇前言 很多时分了解一项新技术的汗青和趋势经常比这项技术的自身价值还要首要。WPF作为一项新技术&#xff08;曾经三年多了&#xff0c;或者应该叫老技术了&#xff09;&#xff0c;大家都有需要了解它 的前因后果&#xff0c;特殊是公司的C…...

西宁市建设委员会网站/怎样在百度上打广告

问题描述 给定n个整数&#xff0c;请统计出每个整数出现的次数&#xff0c;按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n&#xff0c;表示给定数字的个数。   第二行包含n个整数&#xff0c;相邻的整数之间用一个空格分隔&#xff0c;表示所给定的…...

网站免费申请/正规seo需要多少钱

Python 自动化测试面试题目汇总 1、super 是干嘛用的&#xff1f;在 Python2 和 Python3 使用&#xff0c;有什么区别&#xff1f;为什么要使用 super&#xff1f;请举例说明。 答&#xff1a; super 用于继承父类的方法、属性。super 是新式类中才有的&#xff0c;所以 Pyt…...

拍卖网站建设公司/seo项目完整流程

...

网站扩展虚拟空间/软件培训机构有哪些?哪个比较好

已经有了一次web项目的开发经验&#xff0c;给自己单一的编程生涯增添了一些色彩。但是自己终归是C工程师&#xff0c;于是在那次web开发后又重回C项目开发中了。1.公司最大项目——某综合性系统公司要做一个客户端有数个应用系统的大型综合平台。有客户端&#xff0c;自然就得…...

东莞响应式网站哪里好/百度一下你就知道了主页

来自金山毒霸反病毒中心最新消息&#xff1a;“敲诈者”变种&#xff08;Win32.Troj.QiaoZhaz.b&#xff09;正在利用互联网进行大肆传播&#xff0c;该病毒可在Windows启动时弹出“诈骗”信息窗口&#xff0c;给用户造成恐慌。金山毒霸反病毒专家戴光剑指出&#xff0c;该“敲…...