- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 //描
您可能关注的文档
- 冀教初一英语Lesson_13_What_are_you_doing.ppt
- 兼职教师培训之PPT课件制作.ppt
- 其他风味菜.ppt
- 冀教版三年级科学上册《观察土壤》.ppt
- 冀教版五年级上有个孩子叫咪咪乔.ppt
- 冀教Unit 2 Colours and Clothes lesson13 Shirt and Skirt 课件.ppt
- 冀教版四年级上册英语Lesson2 New and Old.ppt
- 冀教八年级下册Unit1 Spring is Coming!L5 Babysitting on a spring day(共25张PPT).ppt
- 冀教版三年级上册语文23歌唱二小放牛郎ppt课件教学课件.ppt
- 冀教版四年级英语上册Unit1_Lesson1_Skirt_and_Trousers.ppt
文档评论(0)