linux-2.6.38 IIC驱动框架分析
在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驱动框架分析的更多相关文章
- Linux USB驱动框架分析(2)【转】
转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html 看了http://blog.chinaunix.net/uid-11848011 ...
- Linux USB驱动框架分析 【转】
转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...
- linux驱动基础系列--linux spi驱动框架分析
前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...
- linux驱动基础系列--linux spi驱动框架分析(续)
前言 这篇文章是对linux驱动基础系列--linux spi驱动框架分析的补充,主要是添加了最新的linux内核里设备树相关内容. spi设备树相关信息 如之前的文章里所述,控制器的device和s ...
- Linux USB驱动框架分析【转】
转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的 ...
- 【原创】Linux PCI驱动框架分析(二)
背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...
- 【原创】Linux PCI驱动框架分析(三)
背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...
- 2.1 摄像头V4L2驱动框架分析
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤: 一.V4L ...
- uart驱动框架分析(二)uart_add_one_port
作者:lizuobin (百问网论坛答疑助手) 原文: https://blog.csdn.net/lizuobin2/article/details/51801183 (所用开发板:mini2440 ...
随机推荐
- 第四章 INI配置——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2020820 第四章 INI配置——<跟我学Shiro> 博客分类: 跟我学Shir ...
- Javascript的原型链与继承
目录 1. ES5最经典的寄生组合式继承图 2. ES5和ES6的继承 Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类 ...
- CentOS 7 安装wordpress
1.安装php 要安装php 7,必须使用下面的命令在Centos7系统上安装并启用epel和remi存储库. 输入一下代码, yum install http://rpms.remirepo.net ...
- mysql 查询某一天数据
某个场景下需要查询某一天的数据,例如2017/9/27这一天所有的数据量,有以下几个方法. SELECT * FROM cms_book_statistics WHERE substring(Conv ...
- [CF37D]Lesson Timetable_动态规划
Lesson Timetable 题目链接:https://www.codeforces.com/contest/37/problem/D 数据范围:略. 题解: 根本就没想到可以动态规划. 首先从前 ...
- 从 select ... for update来分析mysql的锁
一 mysql的悲观锁 - 以行锁做示例 每次拿数据的时候都认为别的线程会修改数据,所以每次拿数据的时候都会给数据上锁.上锁之后,当别的线程想要拿数据时,就会阻塞.直到给数据上锁的线程将事务提交或者回 ...
- 数据结构 -- 二叉树(Binary Search Tree)
一.简介 在计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆. ...
- pandas数据结构之DataFrame笔记
DataFrame输出的为表的形式,由于要把输出的表格贴上来比较麻烦,在此就不在贴出相关输出结果,代码在jupyter notebook可以顺利运行代码中有相关解释用来加深理解方便记忆 import ...
- MongoDB进阶之路:不仅仅是技术研究,还有优化和最佳实践--转载
摘要:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 本文将从操作手册.技术研究.会议分享.场景应用等几个方面给大家推荐干货好文 ...
- S03_CH07_AXI_VDMA_OV5640摄像头采集系统
S03_CH07_AXI_VDMA_OV5640摄像头采集系统 7.1概述 本章内容和<S03_CH06_AXI_VDMA_OV7725摄像头采集系统>只是摄像头采用的分辨率不同,其他原理 ...