再查看下图标记部分
看完原理图,结合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.打印内核信息
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库I2C驱动培训文档(3)在线全文阅读。
相关推荐: