zoukankan      html  css  js  c++  java
  • Linux I2C驱动分析

    http://www.linuxidc.com/Linux/2011-02/32496.htm

    目录
    1. 摘要 3
    2. 简介 3
    3. I2C架构 3
    4. I2C总线初始化 4
    5. I2C适配器驱动 5
    6. I2C设备驱动 9
    7. 用户空间驱动支持 12
    8. 数据传输框架 16
    9. References 16

    1. 摘要
    主要介绍Msm7227平台上I2C驱动原理,多数部分是29内核标准架构。
    2. 简介
    I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL。I2C是一种多主机控制总线,同一总线上可允许多个master.
    i2c总线适配器(adapter)就是一条i2c总线的控制器,在物理连接上若干i2c设备。在linux驱动中,每种处理器平台有自己的适配器驱动。
    3. I2C架构

    内核中i2c相关代码可以分为三个层次:
    i2c框架层:i2c.h和i2c-core.c为其主体框架代码,提供了核心数据结构的定义、i2c适配器驱动和设备驱动的注册、注销管理等;i2c-dev.c用于创建i2c适配器的/dev/i2c-%d设备节点,提供i2c设备的用户空间访问方法等。
    i2c总线适配器驱动:i2c/busses/目录下,如i2c-msm.c。定义描述具体i2c总线适配器的i2c_adapter数据结构、实现在具体i2c适配器上的i2c总线通信的具体实现,并由i2c_algorithm数据结构描述与i2c设备通信的方法。
    i2c设备驱动:定义描述具体设备的i2c_client和可能的私有数据结构。

                
     
     上图展示了内核I2C结构大整体框架,以下根据内核加载顺序介绍I2C总线初始化,I2C总线适配器驱动,I2C设备驱动和用户空间驱动支持及数据传输框架五部分介绍。
    4. I2C总线初始化


     
    该过程主要完成了sysfs总线结构,最终形成如下结构:
    /sys/bus/i2c/
    |-- devices
    |-- drivers
    |   |-- dummy
    |      |-- bind
    |      |-- uevent
    |      `-- unbind
    |-- drivers_autoprobe
    |-- drivers_probe
    `-- uevent

    /sys/class/i2c-adapter/
    dummy_driver 仅仅是注册了一个空的设备驱动,注册驱动时会遍历加载/sys/class/i2c-adapter/中的所有设备,该过程在初始话总线过程中完成, /sys/class/i2c-adapter/基本为空,所以我认为这里的驱动注册只是验证i2c总线结构的完整性考虑的。
    5. I2C适配器驱动

    123456下一页  GO
    <script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
    阅读(995) | 评论(0) | 转发(1) |
    给主人留下些什么吧!~~
    评论热议
  • 相关阅读:
    盛最多水的容器
    字符串的排序
    整数拆分
    TCP和UDP编程
    旋转图像
    非递减数列
    不同路径2
    不同路径
    压缩拉伸图片
    Java对List分割及使用Spring多线程调用
  • 原文地址:https://www.cnblogs.com/ztguang/p/12647421.html
Copyright © 2011-2022 走看看