内核中I2C体系结构-最强学习笔记!.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内核中I2C体系结构-最强学习笔记!

内核中I2C体系结构 1.总体框架 2 1.1 I2C体系结构总体框图: 2 1.2 组成部分: 2 1.3 重要文件: 3 1.4 重要函数接口与结构体 3 结构体: 3 函数: 3 各结构体的作用与它们之间的关系 3 1.5 i2c子系统的初始化函数的执行先后顺序 4 2.I2C核心 4 2.1 i2c_init()函数 4 2.1.1 i2c总线的注册 5 2.1.2 i2c驱动注册 6 2.1.3 i2c_init()函数总结 6 3.总线驱动 7 3.1 I2C platform_device初始化smdk2440_machine_init() 7 3.1.1 s3c_i2c_set_platdata 8 3.1.2 i2c_register_board_info 9 3.1.3 platform_add_devices 10 3.2 I2C platform_drive适配器驱动初始化i2c_adap_s3c_init() 10 3.3 platform_bus总线 11 3.4总线设备和总线驱动初始化总结: 11 3.5 probe函数——adapter_device 和 client_device的注册 12 总结 16 4,设备驱动 17 4.1 i2c_dev_init() 17 4.1.1 register_chardev 17 4.1.2 i2c_add_drive 注册i2c_driver (i2cdev_driver) 18 总结i2c_dev_init() : 20 5,i2c子系统通信方法 20 5.1 open设备/dev/i2c-0 20 5.2 write 21 5.3 i2cdev_ioctl 27 5.2.1 I2C_SLAVE / I2C_SLAVE_FORCE 27 5.2.2 I2C_RDWR 27 6,I2C子系统总结: 29 附录: 30 说明: 内核版本: 2.6.32 I2C设备: E2PROM (at24c02) /************************************************\ 跳过此内容不影响整体框架学习 \************************************************/ (标号) 上下文相互提到 1.总体框架 1.1 I2C体系结构总体框图:    从i2c驱动架构图中可以看出,linux内核对i2c架构抽象了一个叫核心层core的中间件,它分离了设备驱动device driver和硬件控制的实现细节(如操作i2c的寄存器),core层不但为上面的设备驱动提供封装后的内核注册函数,而且还为小面的硬件事件提供注册接口(也就是i2c总线注册接口),可以说core层起到了承上启下的作用。 1.2 组成部分: Linux的I2C体系结构分为3个组成部分: I2C设备驱动:提供策略,定义描述具体设备的i2c_client和可能的私有数据结构。是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。 主要数据结构:i2c_driver, i2c_client   I2C框架层:i2c.h和i2c-core.c为其主体框架代码,提供了核心数据结构的定义、i2c适配器驱动和设备驱动的注册、注销管理等;i2c-dev.c用于创建i2c适配器的/dev/i2c-%d设备节点,提供i2c设备的用户空间访问方法等。 I2C总线驱动:提供硬件操作能力。i2c/busses/目录下,如i2c-msm.c。描述i2c_adapter数据结构及其具体总线通信,,适配器可由CPU控制,甚至可以直接集成在CPU内部。I2C控制驱动(总线驱动)在芯片(S3C2410)生产出来的时候生产厂商就已经写好了,且永远不变(1类芯片对应1种控制器驱动,控制器驱动就是去操作各种寄存器的值,实现标准I2C时序) 1.3 重要文件: i2c-core.c 实现I2C核心功能 以及/proc/bus/i2c*接口。   i2c-dev.c 通用设备驱动。 创建i2c适配器的/dev/i2c-%d设备节点(MAJOR=89,MINOR=0-255) 每一个I2C适配器都被分配一个client。   Busses 包含I2C总线的驱动,如S3C2410,S3C2440的控制器驱动i2c-s3c2410.c Algos 实现I2C总线适配器的algorithm. 1.4 重要函数接口与结构体 结构体: Struct i2c_adapter //描述一个i2c控制器 Struct i2c_driver //描述一个i2c设备驱动 Struct i2c_client //描

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档