在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等数据结构。

最新文章

  1. yum与rpm的使用
  2. nginx日志简单分析工具
  3. LeetCode OJ 153. Find Minimum in Rotated Sorted Array
  4. Oulipo HDU 1686 KMP模板
  5. java基础--static关键字的使用
  6. 2 将mybatis配置到springmvc中
  7. drf序列化组件
  8. Group(), Groups(),& Groupdict() 用法
  9. Specified key was too long; max key length is 767 bytes解决方案
  10. mysql 开发进阶篇系列 17 MySQL Server(key_buffer与table_cache)
  11. Java反射的简单入门
  12. nginx+腾讯云免费ssl证书+阿里云ECS实现Https配置
  13. 使用@RequestBody将请求体映射到Action方法参数中
  14. 【原创】Linux基础之命令行浏览器links
  15. what's the python之模块
  16. Django组件(五) Django之ContentType组件
  17. 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装用来向微信好友发送消息的itchat库(图文详解)
  18. Ruby知识总结-一般变量+操作符+if+数组和哈希
  19. 练习:自己写一个容器ArrayList集合 一一数组综合练习2
  20. IntelliJ IDEA教程

热门文章

  1. 【Leetcode_easy】812. Largest Triangle Area
  2. SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)
  3. Linux 学习笔记 1 使用最小的系统,从分区安装系统开始
  4. golang 切片和map查询比较
  5. Netty源码剖析-断开连接
  6. 安卓版 WPS 使用电脑字体、安卓版 WPS 添加字体、安卓 WPS 无法显示文档真实字体(24)
  7. C++:标准模板库Sort
  8. Python笔记002-Python编程基础概念
  9. 20191011-构建我们公司自己的自动化接口测试框架-ProVar模块
  10. 【规律】Parentheses