I2C驱动培训文档(3)

2025-08-02

再查看下图标记部分

看完原理图,结合iomux工具,再参考数据手册,配置把U5复用为i2c2_scl功能

参考博客:

http://blog.csdn.net/loongembedded/article/details/9986961

三、驱动

基本知识

在 Linux内核源代码中的 drivers 目录下包含一个 i2c 目录,而在 i2c 目录下又包含如下文件和文件夹。 (1)i2c-core.c。

这个文件实现了 I2C 核心的功能以及/proc/bus/i2c*接口。 (2)i2c-dev.c

实现了 I2C 适配器设备文件的功能,每一个 I2C 适配器都被分配一个设备。通过适配器访问设备时的主设备号都为89,次设备号为0~255。应用程序通过“i2c-%d” (i2c-0, i2c-1,?, i2c-10,?)文件名并使用文件操作接口 open()、write()、read()、ioctl()和 close()等来访问这个设备。 i2c-dev.c 并没有针对特定的设备而设计,只是提供了通用的 read()、write()和 ioctl()等接口,应用层可以借用这些接口访问挂接在适配器上的 I2C 设备的存储空间或寄存器,并控制 I2C 设备的工作方式。 (3)busses 文件夹。

这个文件中包含了一些 I2C 总线的驱动,如针对 S3C2410、S3C2440 和 imx等处理器的 I2C 控制器驱动为 i2c-imx.c。 (4)algos 文件夹。

实现了一些 I2C 总线适配器的 algorithm。

内核中的 i2c.h 这个头文件对 i2c_driver、i2c_client、i2c_adapter 和 i2c_algorithm 这 4

个数据结构进行了定义。理解这 4 个结构体的作用十分关键。

下面介绍下它们之间主要的关系和作用

1、i2c_adapter 与i2c_algorithm,i2c_adapter 对应于物理上的一个适配器,而i2c_algorithm对应一套通信方法。

一个I2C适配器需要i2c_algorithm中提供的通信函数来控制适配器上产生特定的访问周期。缺少i2c_algorithm 的i2c_adapter 什么也做不了,因此i2c_adapter 中包含其使用的i2c_algorithm的指针。

i2c_algorithm 中的关键函数master_xfer()用于产生I2C 访问周期需要的信号,以i2c_msg(即I2C消息)为单位。i2c_msg结构体也非常关键。

2、i2c_driver 与i2c_client,i2c_driver 对应一套驱动方法,是纯粹的用于辅助作用的数据结构,它不对应于任何的物理实体。i2c_client对应于真实的物理设备,每个I2C设备都需要一个i2c_client来描述。i2c_client一般被包含在I2C字符设备的私有信息结构体中。

3、i2c_adpater 与i2c_client,i2c_adpater 与i2c_client 的关系与I2C 硬件体系中适配器和设备的关系一致,即i2c_client 依附于i2c_adpater。

思考问题1:I2c总线设备和i2c总线上可挂载的i2c设备是在

Board-mx6q-sarbed的init board中初始化的,那么Board-mx6q-sarbed中init board是从什么时候开始执行的呢?

我们知道内核启动的过程大致为以下几步:

1.检查CPU和机器类型

2.进行堆栈、MMU等其他程序运行关键的东西进行初始化 3.打印内核信息


I2C驱动培训文档(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:[JSP]网上书店

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219