LED模板驱动程序的改造:设备树驱动模型

news2024/11/26 20:21:50

应用程序调用glibc函数

内核层大致分为三个源文件

1)drv.c (硬件操作执行)

包含file operation结构体的设置、注册,结构体中包含了.open(),.read()等驱动函数;

  • .open()会调用对应的函数led_drv_open();
  • led_drv_open()会找到led_operation(此结构体由底层驱动源文件led_gpio.drv.c提供)结构体中某一个成员比如init,此成员的值实际上是对应硬件寄存器操作函数的地址;
  • p_led_opr->init(minor, status);根据次设备号和stasus状态参数执行硬件引脚操作,完成硬件驱动。

2)led_gpio_drv.c(硬件操作说明)

包含platform_driver结构体的设置注册,该结构体中包含了.probe()函数,该函数包括了a.从设备节点读取引脚信息并保存,b.调用drv.c文件中的函数创造led设备节点;

当platform_device中的资源与platform_driver匹配时,就会调用probe();

获取引脚信息后,硬件寄存器操作函数board_led_init()书写了对不同寄存器的不同操作;

硬件寄存器操作函数board_led_init()的地址被赋值给led_opr结构体中的init成员;使用指针变量将led_opr的地址返回给drv.c文件

3)board_led.c(硬件资源)

包含了platform_device结构体的设置注册,该结构体中包含了硬件引脚信息资源。

硬件资源来自设备树节点。

若要修改设备树节点,需要找到你的单板所用的设备树文件dts,在它的根节点下添加节点内容,修改编译后得到新的dtb文件。

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

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

相关文章

Flink学习(四)-数据管道 ETL

一、状态转换 map() 只适用于一对一的转换,即对每个进入算子的流元素,map() 将仅输出一个转换后的元素。 flatmap() 可以输出任意数量的元素,也可以一个都不发。 二、Keyed Streams keyBy() 相当于 sql 中的 group by,通过…

面试(01)————JVM篇,最大白话的一集,常见概念的讲解以及GC监控调优等等

一、JDK体系结构图 二、JVM整体架构 三、JVM组成 3.1、JVM内存区域的执行底层原理 ​编辑 3.1.1、程序计数器 3.1.2、堆栈关系的发现 3.1.3、方法去和堆的关系 3.1.4、堆(重点) 3.1.4.1、可达性分析算法 3.1、内存泄漏测试以及堆区的GC监控 3.…

MiniApp SDK 是什么?

介绍 MiniApp SDK 是提供开发、部署、产品体验分析、上线全流程各种需求的解决方案。接入此 SDK,您就可以只关注于代码开发本身,剩余的所有事情都可以交由 SDK 及其依赖方解决。另外,能够有效降低多端开发的技术门槛和研发成本,提…

EYOU网站迁移提示数据库版本不一致(已解决)

网站迁移过程中一般出现数据库版本就是因为这个原因,下面我们一起来看具体怎么操作吧! 第一步,进入网站后台把数据库文件备份 第二步,下载数据文件上传至install目录文件里面 第三步,将新上传数据库文件改名为“eyoucm…

HarmonyOS 开发-使用SideBarContainer侧边栏淡入淡出动效实现案例

介绍 在2in1或平板上,群聊侧边栏是一种较为常用的功能,虽然HarmonyOS已经具备了基本的动效,但是部分情况下开发者可能有定制侧边栏动效的需求,本例主要介绍了如何基于显式动画实现侧边栏的淡入淡出动效。 效果图预览 使用说明&a…

秋招算法刷题6

20240408 1.两数之和 &#xff08;时间复杂度是O&#xff08;n的平方&#xff09;&#xff09; public int[] twoSum(int[] nums, int target){int nnums.length; for(int i0;i<n;i){ for(int j1;j<n;j){ if(nums[i][j]target){ …

基于逻辑回归和支持向量机的前馈网络进行乳腺癌组织病理学图像分类

CNN&#xff08;卷积神经网络&#xff09;通过使用反向传播方法来学习特征&#xff0c;这种方法需要大量的训练数据&#xff0c;并且存在梯度消失问题&#xff0c;从而恶化了特征学习。 CNN卷积神经网络 CNN由一个多层神经网络组成&#xff0c;该网络从标记的训练数据集中学习…

数据仓库实践

什么是数据仓库&#xff1f; 数据仓库是一个用于存储大量数据并支持数据分析与报告的系统。它通常用于集成来自不同来源的数据&#xff0c;提供一个统一的视图&#xff0c;以便进行更深入的分析和决策。 数据仓库的主要优势&#xff1f; 决策支持&#xff1a;为企业决策提供可靠…

Javascript进阶内容

1. 作用域 1.1 局部作用域 局部作用域分为函数作用域 和 块级作用域 块级作用域就是用 {} 包起来的&#xff0c;let、const声明的变量就是产生块作用域&#xff0c;var不会&#xff1b;不同代码块之间的变量无法互相访问&#xff0c;里面的变量外部无法访问 1.2 全局作用域…

【神经网络】循环神经网络RNN和长短期记忆神经网络LSTM

循环神经网络RNN和长短期记忆神经网络LSTM 欢迎访问Blog总目录&#xff01; 文章目录 循环神经网络RNN和长短期记忆神经网络LSTM1.循环神经网络RNN&#xff08;Recurrent Neural Network&#xff09;1.1.学习链接1.2.RNN结构1.3.RNN缺点 2.长短期记忆递归神经网络LSTM&#x…

本地MinIO存储服务通过Java程序结合cpolar实现远程连接上传文件

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

回归测试覆盖率指的是什么?

定义 回归测试是指修改了旧代码后&#xff0c;重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。 在软件开发过程当中&#xff0c;一旦软件代码做了修改&#xff0c;就有可能引入新的问题&#xff0c;所以这个时候就需要把已经完成了的验证用例重新跑一下&…

智能工业-方案优势

节省成本 ─键修改所有仓储物料信息&#xff0c;无需人工打印、更换仓位卡&#xff0c;降低人力成本;全程无纸化操作&#xff0c;节约材料成本;网络融合方案&#xff0c;降低硬件成本。 高效运营 优化信息变更、陈列、拣货等工作流程&#xff0c;全程APP管理&#xff0c;流程…

Windows Nginx 启动

先解压 nginx安装包&#xff0c;进入到安装目录下(配置环境变量没有用) 解压后的目录结构如上。 #启动服务 默认是80端口&#xff0c; #如果端口被占用&#xff0c;是启动不了的&#xff0c;会生成error log在log目录下 start nginx#停止nginx 服务 nginx -s stop#重新加载配置…

浅析安全传输协议HTTPS之“S”

当前互联网&#xff0c;在各大浏览器厂商和CA厂商的推动下&#xff0c;掀起了一股HTTPS应用浪潮。为了让大家更好的了解HTTPS&#xff0c;本文给大家介绍关于HTTPS 中的S一个整体的认识。从其产生的历史背景、设计目标说起&#xff0c;到分析其协议设计结构、交互流程是如何实现…

linux中查看占用端口的进程方法

1、netstat -tlnp | grep 端口号 netstat -tlnp|grep 3306 其中&#xff1a;95115是进程号&#xff0c;mysqld是进程名称 2、ss -ltnp | grep 端口号 注意&#xff1a;-tlnp和-ltnp ss -ltnp|grep 3306其中&#xff1a;mysqld是进程名称&#xff0c;95115是进程id 3、lsof…

Z变换与传递函数代码化

对于自动控制而言&#xff0c;其关键在于传递函数方程&#xff0c;根据其特性设计出控制器&#xff0c;控制器也是S域的传递函数&#xff0c;那么如何将传递函数用代码的形式表现出来呢&#xff1f;以下将介绍这种工程方法 1、Z变换 对于一个确定的传递函数&#xff0c;如下 …

vue3+高德地图,使用抛物线连接两点,实现线路脉冲和呼吸灯动画效果

最终实现效果 一&#xff1a;版本vue3jsAPI2.0loca2.0.0 二&#xff1a;下载地图加载器 npm i amap/amap-jsapi-loader --save 高德地图jsApi2.0&#xff0c;点击查看官网介绍 三&#xff1a;写成一个组件&#xff0c;哪里使用哪里引入即可&#xff0c;代码如下 <scrip…

深度揭秘:全氟己酮自动灭火毯的原理是什么?

全氟己酮自动灭火毯是近年来很受欢迎的新型消防灭火装置&#xff0c;它不仅高效环保、使用简单、无需安装任何附加设备&#xff0c;还可以主动感应到火灾并自动灭火。为什么它能够做到这一点呢&#xff1f;这要从全氟己酮自动灭火毯的原理说起。 全氟己酮自动灭火毯的原理是什…

JAVA 并发编程之死锁的产生及避免

死锁的产生 死锁可以理解为&#xff0c;在多线程并发竞争资源的环境下&#xff0c;在各自拥有锁的情况下&#xff0c;又去尝试获取对方的锁&#xff0c;从而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将一直阻塞下去。 代码示例&#xff1a; public cl…