当前位置: 首页 > 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设备控制器,为什么不直接和硬件打交道,为什么要中间多核心层和适配层? 

http://www.lryc.cn/news/478349.html

相关文章:

  • 元戎启行嵌入式面试题及参考答案
  • 【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽
  • es数据同步(仅供自己参考)
  • apt镜像源制作-ubuntu22.04
  • libaom 源码分析: 预测编码过程梳理
  • 从0开始学习Linux——Yum工具
  • 【Linux】Linux管道揭秘:匿名管道如何连接进程世界
  • 【LeetCode】【算法】155. 最小栈
  • 3.3 windows,ReactOS系统中页面的换出----1
  • QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
  • Linux云计算 |【第五阶段】CLOUD-DAY8
  • 岛屿数量 广搜版BFS C#
  • hive切换表底层文件类型以及分隔符
  • ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
  • asp.net文件防盗链
  • 【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标
  • 华为杯”第十五届中国研究生数学建模竞赛-B题:光传送网建模与价值评估(续)
  • android 使用xml设置背景图片和圆角
  • 数据结构,问题 E: 表达式括号匹配
  • 国家宠物美容师职业技能等级评价(高级)理论考试题
  • Spring挖掘:(AOP篇)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第四题
  • 单元测试怎么做
  • 移动应用开发 实验二:标准身高计算器
  • 金华迪加现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现
  • 使用 pd.ExcelWriter 创建多工作表 Excel 文件的详细教程
  • 驱动-----dht11温湿度传感器
  • Docker 基础命令简介
  • 嵌入式开发之静态库和共享库
  • 关于npm源的切换及相关操作