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

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

        linux驱动-i2c子系统框架学习(1)  在这篇博客里面已经交代了i2c设备驱动层,主要的功能就是编写具体i2c的外设驱动,和创建设备接点给上层使用 ,按之前学习的字符设备,有了设备节点,就可以对硬件操作了,在i2c子系统框架中,i2c设备驱动层并没有和硬件直接连接。是通过i2c核心层和i2c适配层才和硬件打交道。 为什么呢?

        了解之前,想看这里,看图,同一个i2c总线,是可以挂多个i2c外设,具体是 I2C使用7位地址空间,最多可寻址127个从设备。

        在处理器中,可以运行多个app应用程序,就好比如我们的手机,可以同时运行微信和qq,假设,外设是一个摄像头,微信和qq都想在同时使用摄像头,想操作这些外设,就必须先个给外设发一个起始信号,但是微信和qq都想用,都要发起起始信号,发信号就要通过SDA和SCL这两根线,这是后就有冲突了,怎么办?总不能微信跟qq说,你等一下我先用,协商一下,可能吗?并不能。

         那linux是怎么解决这个问题的?linux通过框架完美解决这个问题。

        假设应用层有三个app,同时访问一个硬件,他们就把数据交给核心层来安排,先处理谁,谁等待?完全是核心层说了算,就相当于一个大管家,不管是多少个应用想调用外设,都得听核心层安排,这个访问程序就不用应用程序去关心了,核心层就解决了冲突的问题。具体是怎么解决的,进行学习才行。

        i2c核心层拿到了这些数据,是不是要把它们发送出去,那么使用i2c进行通信,就要使用到SCL和SDA产生具体的时序,我的rk3568是有硬件产生的,就要用到i2c控制器,但是想要i2c能工作起来就要使用到了i2c适配层,因为i2c适配层的工作就是编写i2c控制器的驱动让i2c控制器工作起来。

        起始这个框架图可以分成三份。

i2c设备驱动层:

        在i2c设备驱动层,编写具体的i2c的驱动程序的时候,就不用相关时序相关的代码,比如产生一个起始信号的代码或者终止信号的代码。因为在linux框架中,是被放到了i2c适配器中。而框架中又把时序的代码拿了出去了,在不同的平台里面移植i2c外设驱动就简单了应该,因为不一样的已经被拿走了,通用性就高了。

i2c适配层: 

        i2c适配器是和硬件打交道的,让i2c控制器能正常工作,这就意味着,不同的平台硬件不一样比如NXP和RK的平台就不一样。这样的话i2c的适配层的代码不一样了,所以这一块东西就是原厂来编写的,但是未必能进原厂,但是时序这些东西还是需要懂的。

i2c核心层:   

        在编写具体的i2c驱动程序的时候我们要怎么弄i2c总线时序通信?时序相关的拿走了,那怎么通信?我在编写i2c具体程序的是对调用i2c核心层提供的函数就可以了


http://www.mrgr.cn/news/67531.html

相关文章:

  • [MySQL]视图
  • 20241102在荣品PRO-RK3566开发板的预置Android13下适配宸芯的数传模块CX6603N
  • PySpark本地开发环境搭建
  • 计算机网络:网络层 —— 边界网关协议 BGP
  • 综合项目--博客
  • Python毕业设计选题:基于django+vue的论坛BBS系统
  • 【测试语言篇二】Python进阶篇:lambda函数、异常和错误处理、Json处理、随机数、星号操作符
  • 钉钉调试微应用整理2
  • 海云安入选软件供应链安全十大代表厂商,软件供应链安全创新成果获认可
  • (十四)JavaWeb后端开发——MyBatis
  • 【Python】轻松解析JSON与XML:Python标准库的json与xml模块
  • 深度学习经典模型之Network in Network
  • 【单例模式】饿汉式与懒汉式以及线程安全
  • 嵌入向量模型与BM25算法结合:并行检索获取多种结果
  • 常见几种GB 9706.1-2020医疗器械试验工装,您有所了解吗?
  • 使用stream遍历对象集合,取出所有对象的某字段,并以逗号拼接起来
  • 【TabBar嵌套Navigation案例-常见问题按钮-WebView-加载JavaScript Objective-C语言】
  • 杭州电商运营公司排名:怎么找到适合自己的电商代运营公司
  • Java基础知识
  • 模拟计算机如何识别和执行机器语言指令:从虚拟CPU的角度解析
  • C#-哈希表
  • 七载同行,共襄盛会!苏州金龙高标准服务进博会彰显中国智造风采
  • Java手写二分查找
  • 部署一个属于自己的文件服务器(File Browser )
  • 使用亚马逊 S3 连接器为 PyTorch 和 MinIO 创建地图式数据集
  • Halcon 算法加速的基础知识(多核并行/GPU)