在linux-2.6内核中,IIC的驱动程序可以大概分为三部分:

(1)IIC核心代码:/drivers/i2c/i2c-core.c

IIC核心提供了IIC总线驱动和设备驱动的注册、注销方法和IIC通信方法。i2c-core.c提供了一组不依赖硬件平台的接口函数,IIC总线驱动和IIC设备驱动之间以i2c-core.c为纽带。

                 注册、注销适配器函数

i2c_add_adapter(struct i2c_adapter *adapter);

i2c_del_adapter(struct i2c_adapter *adapter);

                 注册、注销IIC设备驱动

i2c_register_drive(struct module *owner ,struct i2c_driver *driver);

i2c_del_driver(struct i2c_driver *driver);

                  IIC抽象的传输、发送和接收函数

i2c_transfer(struct i2c_adapter *adapter,struct i2c_msg *msg,int num);

i2c_master_send(struct i2c_client *client,const char *buf,int count);

i2c_master_recv(struct i2c_client *client , char * buf , int count);

(此处的数据传输并不是直接操作硬件,它只是寻找到与i2c_adapter对应的i2c_algorithm,并使用master_xfer() 函数真正驱动硬件。)

(2)IIC总线驱动相关代码或者说是IIC适配器(控制器)驱动相关代码:/drivers/i2c/busses/i2c-s3c2410.c

IIC总线驱动是对IIC控制器的操作。他主要包含i2c_adapter 和i2c_algorithm等数据结构和IIC适配器产生的通用信号的函数。

(3)IIC设备相关代码,如具体的EEPROM等IIC设备,linux2-6-38用 /drivers/i2c/i2c-dev.c 实现了一个通用的设备驱动程序,当然我们还可以自己实现IIC的设备驱动程序。

IIC设备驱动是对IIC硬件体系结构中设备端的实现,设备一般是挂载在CPU控制的IIC适配器上,通过IIC适配器与CPU交换数据。IIC设备驱动主要包含i2c_driver和i2c_client等数据结构。

linux-2.6.38 IIC驱动框架分析的更多相关文章

  1. Linux USB驱动框架分析(2)【转】

    转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html   看了http://blog.chinaunix.net/uid-11848011 ...

  2. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

  3. linux驱动基础系列--linux spi驱动框架分析

    前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...

  4. linux驱动基础系列--linux spi驱动框架分析(续)

    前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...

  5. Linux USB驱动框架分析【转】

    转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的 ...

  6. 【原创】Linux PCI驱动框架分析(二)

    背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...

  7. 【原创】Linux PCI驱动框架分析(三)

    背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...

  8. 2.1 摄像头V4L2驱动框架分析

    学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤:  一.V4L ...

  9. uart驱动框架分析(二)uart_add_one_port

    作者:lizuobin (百问网论坛答疑助手) 原文: https://blog.csdn.net/lizuobin2/article/details/51801183 (所用开发板:mini2440 ...

随机推荐

  1. 【C#设计模式3】工厂方法模式

    一.引言 在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以 ...

  2. python爬取网页数据方法

    """#最基本,请求地址无参数# response=urllib.request.urlopen("https://www.scetc.edu.cn" ...

  3. Dapper.NET—轻量ORM

    Dapper.NET使用 本文目录 Dapper.NET使用 1.为什么选择Dapper 2.以Dapper(4.0)为例. 2.1 在数据库中建立几张表. 2.2实体类. 3.使用方法 3.1  一 ...

  4. 综合练习1,划分vlan,单臂路由,DHCP服务及其限制网段、租期,设置根桥,OSPF路由通告综合练习

    实验要求: 1.在LSW1上分别给vlan10和vlan20做DHCP网段分别为192.168.10.0/24.192.168.20.0/24禁用192.168.10.200-253,192.168. ...

  5. APP 和小程序中通过日期格式获取时间戳的一个bug

    介绍一下背景:业务逻辑就不多说了,就说关键出问题的一步,需要将 2019-10-10 这个格式转换为时间戳.在不同平台不同场景下问题还很怪异 app上:ios 安卓线上的都有问题  ios模拟器没问题 ...

  6. Navicat 导入,导出数据 etc

    Navicat 不仅做了分页查询, 显示 `SELECT *,rowid "NAVICAT_ROWID" FROM "main"."Table_100 ...

  7. Spring Boot系列教程十四:Spring boot同时支持HTTP和HTTPS

    自签证书 openssl生成服务端证书,不使用CA证书直接生成 -in server.csr -signkey server.key -out server.crt # 5.server证书转换成ke ...

  8. ARTS 第十周打卡

    Algorithm : 做一个 leetcode 的算法题 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...

  9. 剑指offer60:把二叉树打印成多行。上到下按层打印二叉树。

    1 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 2 思路和方法 vector变量存储每一层的元素vector<vector<int> > ans ...

  10. Java非常好用的反射框架Reflections

    MAVEN 坐标 <dependency> <groupId>org.reflections</groupId> <artifactId>reflect ...