RK3568驱动指南|第八篇 设备树插件-第83章 设备树插件驱动分析实验

news2025/2/6 0:04:11

瑞芯微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主板


第83章 设备树插件驱动分析实验

在上个章节中,我们成功移植了设备树插件驱动,而在本章节中,我们将深入研究设备树驱动的分析过程。

大家有了configfs虚拟文件系统数据结构的基础以后,现在分析设备树插件的驱动就非常容易了。

网盘资料“iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\65_dtbocfg”dtbocfg.c为设备树插件驱动文件。

在驱动文件中,生成device-tree/overlays目录结构,如下图(图 83-1)所示:

图 83-1

在dtbocfg_overlays_type中实现了ct_group_ops下的make_item和drop_item。如下图(图 83-2)所示:

图 83-2

在命令行输入mkdir命令会去执行的函数,如下图(图 83-3)所示:

图 83-3

在dtbocfg_overlay_item_type中实现了attrs和bin_attrs和ct_item_ops,如下图(图 83-4)所示:

图 83-4

定义了dtbocfg_overlay_item_attr_dtbo结构体。实现了dtbocfg_overlay_item_dtbo_read和dtbocfg_overlay_item_dtbo_write函数,如下图(图 83-5)所示:

图 83-5

重点看当给status写1的时候会发生什么事情,如下图(图 83-6)所示:

图 83-6

当status写入1的时,会执行dtbocfg_overlay_item_create函数。在这个函数中又去执行了of_overlay_fdt_apply函数。of_overlay_fdt_apply函数如下图(图 83-7)所示:

图 83-7

设备树插件(dtbo)里面的节点也要被转换成device_node,有的device_node也要被转换成platform_device。不过在进行转换之前,of_overlay_fdt_apply函数会先创建一个改变集。然后根据这个改变集去进行修改。

创建改变集的目的是为了方便对设备树进行修改和复原。设备树是一种静态的数据结构,一旦被编译和加载到内核中,就难以直接修改。为了解决这个问题,设备树覆盖功能引入了改变集的概念。

改变集是一个描述设备树变化的数据结构,它记录了对设备树的修改操作,如添加、删除或修改节点。通过创建改变集,我们可以在运行时对设备树进行动态修改,而无需修改原始的设备树源文件。

通过创建改变集,我们可以方便地定义需要进行的修改操作,而不必直接操作设备树的底层结构。这提供了一种高层次的抽象,使我们能够以更简洁和可读的方式描述设备树的变化。同时,改变集也可以被保存、传递和应用到其他设备树上,方便在不同系统或环境中进行设备树的配置和定制。

此外,改变集还可以用于设备树的复原。在某些情况下,我们可能需要在运行时撤销对设备树的修改并恢复到原始状态。通过应用反向的改变集,我们可以还原设备树,使其回到修改之前的状态,实现修改的复原。

因此,创建改变集提供了一种方便、可控和可复原的方式来修改设备树,使设备树的管理和配置更加灵活和可靠。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1336904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA web面试大全(全)

摘自: Java技术栈 公众号 一、JVM篇 (含:JVM类加载机制,JVM内存模型,垃圾收集机制,类字节码实现机制,JVM调优案例,GC日志详解等) 二、Java并发编程 (含&am…

微信小程序---API的promise化

1.实现API promise化 npm install --save miniprogram-api-promise1.0.4 2.构建miniprogram_npm,先把miniprogram_npm删除,再点击工具->构建npm 3. 4.页面使用 async getInfo(){const {data:res} await wx.p.request({method:GET,url:https://ap…

项目管理及系统规划

一、项目管理 1.软件工程基本概念 1.1 软件 (1)什么是软件? 软件一般认为由三部分组成: • 程序:在运行时,能提供所希望的功能和性能的指令集。 • 数据结构:使程序能够正确运行的数据结构 …

少走十年弯路!!!webpack详解

webpack是什么?? 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模…

【问题系列】同时管理多版本node方案

目录 一、问题描述 二、解决方案 三、详细步骤 3.1 安装NVM: 3.2 运行NVM 3.3 安装Node.js 3.4 切换Node.js版本 3.5 验证安装: 四、拓展 4.1 设置默认 Node.js 版本 4.2 列出已安装的 Node.js 版本 4.3 其他命令介绍 一、问题描述 需要运行…

java:4-7运算符优先级

运算符优先级 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。只有单目运算符(第二行)、赋值运算符(倒数3行)是从右向左运算的。一览表, 不要背&#x…

Fiddler抓包,怎么抓抓得好抓得快?

01.什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请…

智慧导游带你“一部手机游景区”——VR版

不知不觉中,元旦小假期快要来了,既然期待了这么久,那肯定不能让假期就这样平淡的“溜走”,各大景区的攻略你都做好了吗?是不是翻遍网上各式各样的图文攻略,依旧感觉没有做到位呢?你可能需要一个…

echarts生成地图(自定义区域色块,自定义图标样式,自定义移入效果)

一、使用echarts生成一个地图,看一下生成效果图 二、使用步骤 1.先准备需要的数据 DataV.GeoAtlas地理小工具系列 可以去这个网站下载需要的json数据,也可在线引入,但是发布到线上有问题,所以我这边是直接把数据下载到本地使用。 把下载好的数据放入到public里面 在api写入一…

【FPGA】分享一些FPGA高速信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

Python实现API接口并发测试

目录 一、引言 二、准备工作 三、并发测试的实现 1、导入必要的库 2、定义并发测试函数 3、调用并发测试函数 四、测试结果分析和优化 五、总结 一、引言 随着微服务架构和RESTful API的普及,API接口测试变得越来越重要。并发测试是API测试的一个重要方面&…

入门IC必读书目推荐!你真的不能错过

在IC行业,技术和经验都很重要,为了更好的学习,现为大家整理了各岗位的学习书目。 以上书目,可以免费分享,你想要哪本呢~ 这里放个口:入门IC必读书目 通用基础类 《半导体物理学》 这本书被国内大部分高校…

PostgreSQL数据库有哪些优点

在现在的这个数据驱动的社会中,数据库管理系统的选择对于企业来说非常重要的。PostgreSQL凭着他卓越的特性和优势成为了大多数组织和开发者的选择。那PostgreSQL数据库有哪些优势呢,下面以我的理解简单的介绍一下。 可靠性 系统设计重视数据完整性和一…

SpringBoot3 核心原理

1. 事件和监听器 1. 生命周期监听 场景:监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springfram…

MyBatis框架——MyBatis实现查询功能

一、简单查询 查询数据中的一条数据或多条数据,返回,有两种实现方式: 第一种,用注解的方式实现,方法如下图: 第二种,用mapper的方式实现,方法如下图: 注意:…

Python-logging模块之配置字典

Python-logging模块之配置字典 目录 介绍模版功能详情 formatters日志格式fitters过滤器handlers日志处理器loggers日志记录器 字典的加载进阶操作 无名loggers日志轮转 介绍 由于不少小伙伴在使用logging.basicConfig基本日志配置时经常遇到乱码问题,这其实是…

Flamingo与亚马逊云科技合作,进一步优化海外客户的访问体验

据中国海关统计,2023年上半年,我国跨境电商进出口规模约1.1万亿元,比上年同期(下同)增长16.6%,增速加快13.7个百分点。其中,出口约8254亿元,增长20.6%,占同期我国出口总值…

分支限界法求解01背包(优先队列)【java】

实验内容:运用分支限界法解决0-1背包问题 实验目的:分支限界法按广度优先策略遍历问题的解空间树,在遍历过程中,对已经处理的每一个结点根据限界函数估算目标函数的可能取值,从中选取使目标函数取得极值的结点优先进行广度忧先搜…

xxl-job报错:xxl-job registry fail:The access token is wrong

1、报错信息 .ExecutorRegistryThread : >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroupEXECUTOR, registryKeyxxl-job-executor-sample, registryValuehttp://192.168.133.1:9999/}, registryResult:Re…

支持二开可定制化的企业电子招标采购系统源码

随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本&#…