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

RK3568驱动指南|第六篇-平台总线-第55章 初识设备树

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。


【公众号】迅为电子

【粉丝群】824412014(加群获取驱动文档+例程)

【视频观看】嵌入式学习之Linux驱动(第六篇-平台总线_全新升级)_基于RK3568

【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板


第55章 初识设备树

55.1 设备树的由来 

设备树(Device Tree)是一种硬件描述机制,用于在嵌入式系统和操作系统中描述硬件设备的特性、连接关系和配置信息。它提供了一种与平台无关的方式来描述硬件,使得内核与硬件之间的耦合度降低,提高了系统的可移植性和可维护性。

在上一篇平台总线内容的学习中,我们使用platform_device结构体来对硬件设备进行描述,这是一种传统的平台总线设备描述方式。每个platform_device结构表示一个特定的硬件设备,并通过注册到平台总线上来使得内核能够与该设备进行通信和交互。该结构包含设备的名称、资源(如内存地址、中断号等)、设备驱动程序等信息。

然而,随着时间的推移,Linux内核中的ARM部分存在着大量的平台相关配置代码,这些代码通常是杂乱而重复的,导致了维护的困难和工作量的增加。在2011年3月17日,Linux的创始人Linus Torvalds在ARM Linux邮件列表中发表了一封帖子,他表达了对ARM架构配置方式的不满,并宣称"Gaah. Guys, this whole ARM thing is a f*cking pain in the ass"。这引起了广泛的讨论和反思。ARM社区中的开发者们开始认识到,传统的平台相关配置方式已经变得不可持续,需要一种更加先进和可扩展的方法来解决这个问题。

为了应对这一挑战,ARM社区开始探索新的硬件描述机制,并逐渐形成了设备树的概念。设备树提供了一种更加灵活和可移植的描述硬件的机制,将设备的描述信息转移到设备树中。设备树使用一种结构化的数据格式,通过描述设备节点、属性和连接关系等信息,使得硬件的描述与具体的平台无关,同时允许多个平台共享相同的设备树描述。

设备树的引入为ARM架构上的Linux内核带来了革命性的变化。它提供了一种统一的硬件描述方式,使得不同芯片和板级的支持更加简单和灵活。此外,设备树还提供了硬件配置的可视化和可读性,方便开发者理解和调试硬件。

随着时间的推移,设备树逐渐成为了嵌入式系统和Linux内核中描述硬件的标准方式。它不仅在ARM架构上得到了广泛应用,也被扩展到其他架构和平台上。

55.2 设备树基础知识

当描述设备树(Device Tree)时,通常会涉及到以下几个关键术语:DTS、DTSI、DTB和DTC。下面来对每个术语进行介绍。

DTS(Device Tree Source):DTS是设备树的源文件,采用一种类似于文本的语法来描述硬件设备的结构、属性和连接关系。DTS文件以.dts为扩展名,通常由开发人员编写。它是人类可读的形式,用于描述设备树的层次结构和属性信息。

DTSI(Device Tree Source Include):DTSI文件是设备树源文件的包含文件。它扩展了DTS文件的功能,用于定义可重用的设备树片段。DTSI文件以.dtsi为扩展名,可以在多个DTS文件中包含和共享。通过使用DTSI,可以提高设备树的可重用性和可维护性(和C语言中头文件的作用相同)。

DTB(Device Tree Blob):DTB是设备树的二进制表示形式。DTB文件是通过将DTS或DTSI文件编译而成的二进制文件,以.dtb为扩展名。DTB文件包含了设备树的结构、属性和连接信息,被操作系统加载和解析。在运行时,操作系统使用DTB文件来动态识别和管理硬件设备。

DTC(Device Tree Compiler):DTC是设备树的编译器。它是一个命令行工具,用于将DTS和DTSI文件编译成DTB文件。DTC将文本格式的设备树源代码转换为二进制的设备树表示形式,以便操作系统能够加载和解析。DTC是设备树开发中一个重要的工具。

DTSDTSIDTBDTC之间的关系:

(1)开发人员使用文本编辑器编写DTS和DTSI文件,描述硬件设备的层次结构、属性和连接关系。

(2)DTSI文件可以在多个DTS文件中包含和共享,以提高设备树的可重用性和可维护性。

(3)使用DTC编译器,开发人员将DTS和DTSI文件编译成二进制的DTB文件,如下图(图55- 1)所示:

(4)操作系统在启动过程中加载和解析DTB文件,以识别和管理硬件设备。

设备树文件存放路径:

ARM体系结构:

ARM体系结构下的设备树源文件通常存放在arch/arm/boot/dts/目录中。该目录是设备树源文件的根目录。如下图(图55- 2)所示:

图55- 2

ARM64体系结构:

设备树源文件路径:ARM64体系结构下的设备树源文件通常存放在arch/arm64/boot/dts/目录及其子目录中。该目录也是设备树源文件的根目录,并包含了针对不同ARM64平台和设备的子目录,如下图(图55- 3)所示:

 

图55- 3

子目录结构:在ARM64的子目录中,同样会按照硬件平台、设备类型或制造商进行组织和分类。这些子目录的命名可能与特定芯片厂商(如Qualcomm、NVIDIA、Samsung)有关,由于我们本手册使用的soc是瑞芯微的rk3568,所以匹配的设备树目录为arch/arm64/boot/dts/rockchip。每个子目录中可能包含多个设备树文件,用于描述不同的硬件配置和设备类型,这里以rockchip目录内容如下图(图55- 4)所示:

图55- 4

55.3 设备树的编译

设备树的编译是将设备树源文件(如上述的.dts文件)转换为二进制的设备树表示形式(.dtb文件)的过程。编译器通常被称为DTC(Device Tree Compiler)。

在Linux内核源码中,DTC(Device Tree Compiler)的源代码和相关工具通常存放在scripts/dtc/目录中,如下图(图55- 5)所示:

 

图55- 5

在编译完源码之后dtc设备树编译器会默认生成,如果没有生成相应的dtc可执行文件,可以查看在内核默认配置文件中CONFIG_DTC是否使能。

设备树的编译:

在Linux环境中,可以使用以下命令将设备树源文件编译为二进制设备树文件:

dtc -I dts -O dtb -o output.dtb input.dts

其中,`input.dts`是输入的设备树源文件,`output.dtb`是编译后的二进制设备树文件。

编译器会验证设备树源文件的语法和语义,生成与硬件描述相对应的设备树表示形式。

设备树的反编译:
设备树的反编译是将二进制设备树文件转换回设备树源文件的过程,以便进行查看、编辑或修改。反编译器通常也是DTC。

在Linux环境中,可以使用以下命令将二进制设备树文件反编译为设备树源文件:

dtc -I dtb -O dts -o output.dts input.dtb

其中,input.dtb是输入的二进制设备树文件,output.dts是反编译后的设备树源文件。

反编译器会将二进制设备树文件解析并还原为文本形式的设备树源文件,使其可读性更好。

下面来进行一下实际的设备树编译和反编译的演示,首先创建一个名为test.dts的设备树文件,文件内容如下所示:

/dts-v1/;
/ {};

创建完成如下图(图55- 6)所示:

图55- 6

这个设备树很简单,只包含了根节点/,而根节点中没有任何子节点或属性。这个示例并没有描述任何具体的硬件设备或连接关系,它只是一个最基本的设备树框架,在本小节只是为了测试设备树的编译和反编译。

然后使用以下命令进行设备树的编译,编译完成如下图(图55- 7)所示:

/home/topeet/Linux/linux_sdk/kernel/scripts/dtc/dtc -I dts -O dtb -o test.dtb test.dts

图55- 7

可以看到test.dtb就生成了,然后继续使用以下命令对test.dtb进行反编译,反编译完成如下图(图55- 8)所示:

图55- 8

可以看到反编译出的1.dts跟之前的test.dts内容相同。


 

相关文章:

RK3568驱动指南|第六篇-平台总线-第55章 初识设备树

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...

【ELK 使用指南 1】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…...

Springboot高频应用注解

本文旨在记录开发中遇到的SpringBoot高频注解,并针对其具体应用记录。 一、LOMBOK相关注解 Slf4j 目的在于使用Log的日志功能,可以在JAVA中自动生成日志记录器!使用时在类上添加Slf4j注解后即可以在类中调用log方法如 可以 调用 log.info …...

面试总结分享:25道数据库测试题

1)什么是数据库测试? 数据库测试也称为后端测试。数据库测试分为四个不同的类别。数据完整性测试 数据有效性测试 数据库相关的性能 测试功能,程序和触发器 2)在数据库测试中,我们需要正常检查什么? 通常&a…...

和硕首次参加展OCP 峰会,将发布多项AI合作项目产品 | 百能云芯

电子代工大厂和硕联合科技宣布,将参与今年的 OCP 全球峰会 (OCP Global Summit),展示与英伟达 (NVIDIA) 合作成果,包含使用英伟达 GH200 Grace Hopper 超级芯片的 MGX AI 服务器,以及搭载 A100、L40 等服务器产品。 OCP 峰会于 10…...

FPGA基于1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、我这里已有的以太网方案3、设计思路框架视频源选择OV5640摄像头配置及采集动态彩条UDP协议栈UDP视频数据组包UDP协议栈数据发送UDP协议栈数据缓冲IP地址、端口号的修改Tri Mode Ethernet MAC1G/2.5G Ethernet PCS/PMA or SGMIIQT上位机和源…...

小程序setData动态传递key

有些时候可能需要根据key是个变量 比如 let keyName "name" this.setData({keyName :"张三" })本来想将keyName替换为name的,但是小程序只会在data中定义一个key为keyName ,value为“张三”的一条数据。 正确写法为: let keyNam…...

boost Geometry

boost::Geometry boost作为C中最常用的第三方库,Geometry库里面拥有大量的开源算法。 函数作用get获取几何图形(通常为点)的坐标值get (with index)获取框或段的坐标值set设置几何图形(通常为点)的坐标值set (with i…...

凉鞋的 Unity 笔记 201. 第三轮循环:引入变量

201. 第三轮循环:引入变量 在这一篇,我们进行第三轮 编辑-测试 循环。 在之前我们编写了 输出 Hello Unity 的脚本,如下: using System.Collections; using System.Collections.Generic; using UnityEngine;public class FirstGameObject …...

小魔推短视频裂变工具,如何帮助实体行业降本增效?

在如今的互联网时代,大多数的实体老板都在寻找不同的宣传方法来吸引客户,现在短视频平台已经成为重中之重的获客渠道之一,而如何在这个日活用户超7亿的平台获取客户,让更多人知道自己的门店、自己的品牌,泽成为了不少老…...

VBA技术资料MF71:查找所有空格并替换为固定字符

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...

c++小知识

内联函数 inline 用来替换宏函数 不能分文件编辑 在c语言中#define NULL 0在c中使用nullptr表示空指针class内存的大小计算规则使用的是内存对齐 没有成员,但是还有1个字节,我们使用这个来标记他是个类 类成员函数不存在于类中 为什么每个对象使用的…...

C#上位机序列9: 批量读写+事件广播

1. 读取配置文件及创建变量信息(点位名称,地址,数据类型(bool/short/int/float/long/double)) 2. 读任务&写任务,数据有变化时事件广播通知 using HslCommunication; using HslCommunication.Core; usi…...

ARM +FPGA GPIB IP核实现

目前在数据发生其技术上居领先的是美国的 Tektronix 公司和 Agilent 公司。 Agilent 公司的台式脉冲 / 数据发生器家族的最高时钟频率达 3GHz (定 时发生器),数据发生器 E81200 在通道数为 8CH 时数据速率为 660Mb/s, 即可以产…...

有消息称苹果Vision Pro会有廉价版

据外媒爆料,苹果公司苹果正在研发的头显产品Vision Pro,将会有廉价版。据透露,这款产品预计售价在1500美元至2500美元之间,虽然仍不算低,但较现有的Vision Pro 3499美元的起售价,还是有明显降低。 透露廉价…...

jenkins整合gerrit

背景 公司项目之前使用jenkins整合了gitlab,后面代码迁移到gerrit,所以需要修改jenkins配置。下面就简单的介绍一下jenkins如何整合gerrit。 环境 服务器:linux 环境:docker、jenkins 代码仓库:gerrit 前提 docke…...

PMP考完后应该考什么?

PMP(项目管理专业)认证是全球范围内最受认可和尊重的项目管理资格证书之一。通过PMP考试的人已经展示了他们在项目管理领域的知识和技能。然而,项目管理是一个不断发展和变化的领域,持续学习和进一步提升自己的能力是非常重要的。…...

科技资讯|苹果Vision Pro可通过手势ID检测不同用户

近日,美国专利局公布了苹果公司的一项专利申请,该专利申请涉及基于手部特征验证用户身份的技术。苹果指出,可能是多个家庭成员都想使用 Apple Vision Pro,系统必须识别不同的手势以控制 visionOS。在另一个示例中,苹果…...

CUDA编程模型- 层次结构

层次结构的划分 在GPU上,为了满足其大规模并行处理的特性,执行模型采用了大量并行化的轻量级线程。当我们谈到CUDA编程模型时,我们首先要考虑的是其线程执行层次结构。这种层次结构起始于一个被称为kernel的函数,当它在GPU上执行…...

国际站阿里云服务器无法安装程序怎么办?

阿里云服务器是阿里云推出的一种云核算产品,它能够帮助企业和个人快速建立、扩展和管理网络服务。可是,有时候在运用阿里云服务器时,或许会遇到无法装置程序的问题。本文将具体介绍如何处理这个问题。 阿里云服务器无法装置程序或许是由多种原…...

基于Vue+webpack之H5打包资源优化

前言 基于公司的业务以及今年接触到的项目大部分都是APP混合开发,即原生Android/ios H5页面开发APP。项目从产品需求的评审到方案的评审再到开发提测...这一套流程下来让我收货颇多。总想找个时间好好记录一番,大概还是自己懒惰了,一直拖到现…...

C#中DataAdapter对象

目录 一、DataAdapter对象概述 二、Fill()方法填充数据集DataSet 1.举例 2.源码 3.生成效果 三、Update()方法 1.Update()方法更新数据源 2.设置数据库主键 3.源码 4.生成效果 一、DataAdapter对象概述 DataAdapter对象是一个数据适配器对象,是DataSet与…...

Nginx正向代理,反向代理,负载均衡

Nginx正向代理,反向代理,负载均衡 Nginx当中有两种代理方式: 七层代理(http协议) 四层代理(tcp/udp流量转发) 七层代理:七层代理,代理的是http的请求和响应 客户端请求…...

安防视频监控平台EasyCVR出现视频流播放卡顿情况,如何优化?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...

VRRP基础

1.VRRP概述 VRRP( Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。 通过把几台路由设备联合组成一台虚拟的“路由设备”&…...

虚实融合 智兴百业 | 赵捷副市长莅临拓世科技集团筹备展台指导,本月19号!拓世科技集团与您相约世界VR产业大会

新时代科技革命中,虚拟现实技术、5G和“元宇宙”概念崛起,助力全球范围内的数字经济和产业转型。我国也正迈向高质量发展攻坚阶段,在中部腹地的江西,政府结合全球技术趋势和自身发展需求,选择虚拟现实为新的经济增长点…...

2000-2023年省市县人工智能企业数量数据

2000-2023年省市县人工智能企业数量数据 1、时间:2000-2023年7月 2、指标:所属年度、所属省份、所属城市、所属区县、人工智能企业数量(省人工智能企业数量、地级市人工智能企业数量、区县人工智能企业数量) 3、来源&#xff1…...

CSP模拟58联测20 牵着她的手

题目大意 考虑所有 n n n行 m m m列的矩阵,矩阵中每个元素的值都在 1 1 1到 k k k之间。对于这样的矩阵 A A A,按照下面规则构造序列 x 1 , x 2 , ⋯ , x n m x_1,x_2,\cdots,x_{nm} x1​,x2​,⋯,xnm​: 对于 1 ≤ i ≤ n 1\leq i\leq n …...

电脑版便签软件下载用哪个?

在面对每天繁忙的工作日程,电脑是许多上班族不可或缺的工作助手,而一款得心应手的电脑便签软件,更是可以帮助大家记录、提醒、督促各项任务按时完成的得力助手。那么,究竟在众多的电脑便签软。件中,哪一位能够真正成为…...

别再卷组件库了,Vue 拖拽库都断代了!

前言 最近在测试 Tailwind CSS 和 Uno CSS 这两种原子化 CSS 工具是否能够有效减少打包后的文件体积时,先开始分析这些工具的优缺点,然后再直接上数据,最后做了一款经典的 TodoList 来进行测试,文章都写好了就差最后的数据了。 …...