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

linux驱动-i2c子系统框架学习(1)

         可以将整个 I2C 子系统用下面的框图来描述:

        可以将上面这一 I2C 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层, 本篇主要内容就是介绍 I2C 子系统框架中的内核空间。

        在用户空间,主要学习如何使用i2c编写应用程序。(业务层)

        在内核空间,放的就是和i2c相关的驱动程序,如果使用i2c编写驱动程序。(主要关注)

        在硬件层,就是放着具体的某一个i2c外设。比如触摸屏的芯片......。

        学习主要学习这一层。 

         在i2c设备驱动层,第一件事就是编写外设的驱动程序,比如触摸屏芯片的驱动程序,让触摸屏芯片工作起来。第二个作用就是创建设备节点,因为在它上面的是应用程,应用层上面想操控外设,比如读写,就需要访问设备节点,访问节点就是对硬件操作。按照以前的子系统,编写完驱动,就是可以自己和硬件打交道了。但是这里不是直接和硬件打交道

         把数据交给了核心层,为什么?i2c的核心层作用是什么。

         搞定i2c核心层,之前先了解i2c适配器驱动层,i2c适配程是直接和硬件打交道的

         我的rk3568是用硬件产生i2c协议的,所以在硬件层,i2c外设,是通过SCL和SDA这两根线连接到cpu的i2c控制器,所以硬件能产生这个i2c波形,就是靠这个i2c控制器。是看不到摸不着的,在cpu里面。

        所以i2c控制器也是一个硬件,想要硬件运行起来我们就需要有对应的驱动程序,所以i2c适配器驱动层的作用就是编写i2c控制器的驱动程序,让i2c控制器运行起来,也就是说让i2c控制器可以产生对应的波形,有一些地方i2c_adapter结构体就是代表i2c控制器

        i2c的核心层是位于i2c设备驱动和i2c适配器驱动层的中间,所以作用就是承上启下。

        最后的问题,竟然有了i2c设备控制器,为什么不直接和硬件打交道,为什么要中间多核心层和适配层? 

相关文章:

linux驱动-i2c子系统框架学习(1)

可以将整个 I2C 子系统用下面的框图来描述: 可以将上面这一 I2C 子系统划分为三个层次,分别为用户空间、内核空间和硬件层,内核空间就包括 I2C 设备驱动层、I2C 核心层和 I2C 适配器驱动层, 本篇主要内容就是介绍 I2C 子系统框架中…...

元戎启行嵌入式面试题及参考答案

介绍下 CAN 通信原理 控制器局域网(CAN)是一种串行通信协议,主要用于汽车、工业自动化等领域的电子控制单元(ECU)之间的通信。 其通信原理是基于多主站架构。在总线上,多个节点(设备)都可以主动发起通信。CAN 协议使用差分信号来传输数据,通过两条信号线 CAN_H 和 CAN…...

【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽

目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中,Excel是一个非常常用的工具。特别是在Java开发中,EasyExcel库因其简单高效而…...

es数据同步(仅供自己参考)

数据同步的问题分析: 当MySQL进行增删改查的时候,数据库的数据有所改变,这个时候需要修改es中的索引库的值,这个时候就涉及到了数据同步的问题 解决方法: 1、同步方法: 当服务对MySQL进行增删改的时候&…...

apt镜像源制作-ubuntu22.04

# 安装必要的软件 sudo apt-get install -y apt-mirror # 编辑/etc/apt/mirror.list,添加以下内容 set base_path /var/spool/apt-mirror # 指定要镜像的Ubuntu发布和组件-null dir jammy-updates main restricted universe multiverse # 镜像的Ubuntu发布和组件的URL-n…...

libaom 源码分析: 预测编码过程梳理

AV1 预测编码中核心技术 AV1(AOMedia Video 1)作为一种开源的视频编码格式,其预测编码核心技术主要包括以下几个方面: 分区树分割模块: AV1利用多类型分割模式,递归地对图像/视频序列进行分区,以捕捉更丰富的空间信息,从而提升编码效率。这包括新的方向预测分割模式及…...

从0开始学习Linux——Yum工具

往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 上一个章节我们简单了解了Linux中常用的一些文本编辑器,本次教程我们将学习yum工具。 一、Yum简介 Yum(全名…...

【Linux】Linux管道揭秘:匿名管道如何连接进程世界

🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 🌈C专栏:C 文章目录 1.什么是管道 ?2. 管道的类型2.1 匿…...

【LeetCode】【算法】155. 最小栈

LeetCode 155. 最小栈 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int …...

3.3 windows,ReactOS系统中页面的换出----1

系列文章目录 文章目录 系列文章目录3.3 页面的换出MiBalancerThread()MmTrimUserMemory()MmPageOutVirtualMemory() 3.3 页面的换出 在前一节中我们看到,如果有映射的页面已经被倒换到磁盘上即倒换文件中&#xff0c…...

QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)

文章目录 实现步骤:详细代码示例:实现原理和解释:使用方法:其他参考要实现一个支持复选框来控制曲线显示和隐藏的自定义 QCPLegend 类,可以通过继承 QCPLegend 并重写绘制和事件处理方法来实现,同时发出信号通知曲线的状态变更。 实现步骤: 继承 QCPLegend 类,添加绘…...

Linux云计算 |【第五阶段】CLOUD-DAY8

主要内容: 掌握DaemonSet控制器、污点策略(NoSchedule、Noexecute)、Job / CronJob资源对象、掌握Service服务、服务名解析CluterIP(服务名自动发现)、(Nodeport、Headless)、Ingress控制器 一…...

岛屿数量 广搜版BFS C#

和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。…...

hive切换表底层文件类型以及分隔符

1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据 ALTER TABLE 表名 SET FILEFORMAT 希望类型;2、更改数据…...

ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较

全新的ChatGPT o1模型(代号“Strawberry”)是OpenAI的最新进展,专注于以前的AI模型难以应对的领域:高层次推理、数学和复杂编程。OpenAI设计o1模型以花费更多时间思考问题,使其在需要逐层推理的任务中提高准确性。本文…...

asp.net文件防盗链

URLRewriter实现 可以参考下面的文章 代码 .net framework 新建asp.net framework的web项目,新建AntiTheftChainHandler using System.Web;namespace AntiTheftChainStu01.Handler {public class AntiTheftChainHandler : IHttpHandler{public bool IsReusable…...

【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标

2024.11.6 【力扣刷题】 58. 最后一个单词的长度 - 力扣(LeetCode)https://leetcode.cn/problems/length-of-last-word/?envTypestudy-plan-v2&envIdtop-interview-150 int lengthOfLastWord(char* s) {int count 0;for (int i strlen(s) - 1; i…...

华为杯”第十五届中国研究生数学建模竞赛-B题:光传送网建模与价值评估(续)

目录 4. 问题二 光传送网规划 4.1 基本假设 4.2 模型建立 4.3 子问题一 4.2 子问题二 4.5 子问题三 5. 问题三 改善星座图 5.1 问题简述 5.2 问题分析 5.3 建模与问题求解 5.3.1 方案一 5.3.2 方案二 6. 模型评价 6.1 模型的优点 6.2 模型的缺点 参考文献 本文篇幅较长,分为上…...

android 使用xml设置背景图片和圆角

使用xml设置背景图片和圆角 <?xml version"1.0" encoding"utf-8"?> <layer-list xmlns:android"http://schemas.android.com/apk/res/android"><item><shape><solid android:color"android:color/transparen…...

数据结构,问题 E: 表达式括号匹配

题目描述 假设一个表达式有英文字母&#xff08;小写&#xff09;和数字、运算符&#xff08;&#xff0c;—&#xff0c;*&#xff0c;/&#xff09;和左右小&#xff08;圆&#xff09;括号构成&#xff0c;以“”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号…...

STM32F103C6 USB DFU升级实战:从CubeMX配置到DfuSeDemo烧录,一步步教你搞定Bootloader设计

STM32F103C6 USB DFU升级全流程解析&#xff1a;从硬件配置到安全跳转的深度实践 在嵌入式开发中&#xff0c;固件升级是产品生命周期中不可或缺的环节。想象一下这样的场景&#xff1a;你的设备已经部署在客户现场&#xff0c;突然发现一个需要紧急修复的BUG&#xff0c;或者需…...

5种颠覆式UI控件库轮播组件创新用法:从业务痛点到零代码实现

5种颠覆式UI控件库轮播组件创新用法&#xff1a;从业务痛点到零代码实现 【免费下载链接】HandyControl Contains some simple and commonly used WPF controls 项目地址: https://gitcode.com/gh_mirrors/ha/HandyControl 在现代WPF应用开发中&#xff0c;UI控件库的轮…...

咱们今天聊点干货——用MATLAB玩转储能电站和微电网的协同优化。这玩意儿听起来高大上,实操起来其实挺有意思。先看上层优化的核心代码段

MATLAB代码&#xff1a;基于储能电站服务的冷热电多微网系统双层优化 MATLAB代码&#xff1a;基于储能电站服务的冷热电多微网系统双层优化|||配置 关键词&#xff1a;储能电站 共享储能电站 冷热电多微网 双层优化配置 参考文档&#xff1a;《基于储能电站服务的冷热电多微…...

告别死记硬背!信息系统项目管理师(高项)思维导图活用法:从考前3个月到考前一天的全周期规划

信息系统项目管理师备考革命&#xff1a;用思维导图构建你的动态知识引擎 备考信息系统项目管理师&#xff08;高项&#xff09;的过程&#xff0c;常常让考生陷入两难困境&#xff1a;一方面要掌握庞杂的知识体系&#xff0c;另一方面又要应对实际工作中的时间压力。传统死记硬…...

开源TTS新秀Spark-TTS深度评测:零样本克隆与可控生成实战

1. Spark-TTS初探&#xff1a;零样本克隆如何颠覆传统语音合成 第一次接触Spark-TTS时&#xff0c;我正为一个智能客服项目寻找合适的语音合成方案。当时测试了市面上七八种TTS工具&#xff0c;要么需要大量样本训练&#xff0c;要么生成的语音机械感明显。直到发现这个开源项目…...

VoxTrans:离线英文转录 + AI 翻译工具,支持本地 / YouTube 素材,人声分离 + 标点优化,生成双语 SRT 字幕,兼顾隐私与效率,是创作学习的得力软件

大家好&#xff0c;我是大飞哥。日常处理英文音视频时&#xff0c;要么需要手动听写字幕耗时耗力&#xff0c;要么在线工具依赖网络且隐私风险高&#xff0c;要么翻译后的字幕语序混乱、专业术语出错&#xff0c;尤其是做内容创作、学习资料整理时&#xff0c;很难高效得到精准…...

OmenSuperHub终极指南:5分钟掌握惠普游戏本性能优化技巧

OmenSuperHub终极指南&#xff1a;5分钟掌握惠普游戏本性能优化技巧 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 厌倦了官方Omen Gaming Hub的臃肿体验&#xff1f;想要一个纯净、高效的硬件控制工具&#xff1f;OmenSup…...

AtlasOS终极解决:2502/2503错误代码效率提升方案

AtlasOS终极解决&#xff1a;2502/2503错误代码效率提升方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...

【技术解析】MapReduce:大规模集群上的高效数据处理框架

1. MapReduce框架的核心思想 第一次听说MapReduce时&#xff0c;我正被一个TB级日志分析任务折磨得焦头烂额。传统单机处理需要几十个小时&#xff0c;而当我用上这个框架后&#xff0c;同样任务在200台机器上仅用23分钟就完成了。这种化腐朽为神奇的体验&#xff0c;让我彻底理…...

NPU加速!DeepSeek-V3大模型极速体验攻略

NPU加速&#xff01;DeepSeek-V3大模型极速体验攻略 【免费下载链接】DeepSeek-V3-0324-w4a8-mtp-QuaRot 项目地址: https://ai.gitcode.com/Eco-Tech/DeepSeek-V3-0324-w4a8-mtp-QuaRot 导语&#xff1a;DeepSeek-V3系列大模型推出NPU硬件加速版本&#xff0c;标志着大…...