I2C驱动总共分为三层

本文介绍了I2C驱动的三层架构:I2C总线适配器驱动层、设备驱动层及I2C核心层。详细解释了各层的功能与实现方式,包括i2c_adapter、i2c_client等关键数据结构及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I2C驱动总共分为三层:I2C总线适配器驱动层,设备驱动层,I2C核心层。


1、总线适配器驱动层是一个平台设备驱动(platform-device-driver,对应的是控制器的驱动,它分为I2C控制器驱动i2c-s3c2410.c文件中)和设备资源(在devs.c文件中声明资源,在mach-smdk2410.c中注册资源),对应一个虚拟总线将它们挂接起来,定义描述具体i2c总线适配器的i2c_adapter数据结构、实现在具体i2c适配器上的i2c总线通信方法,并由i2c_algorithm数据结构进行描述

2、设备驱动层是对于具体设备的一个驱动比如eeprom驱动(在eeprom.c文件中),由I2C总线将驱动与控制器挂接起来;定义描述具体设备的i2c_client和可能的私有数据结构、借助i2c框架的i2c_probe函数实现注册设备的attach_adapter方法、提供设备可能使用的地址范围、以及设备地址检测成功后创建i2c_client数据结构的回调函数。

3、I2C核心层(在i2c-core.ci2c.h中)就类似于一个封装起来的函数库,它提供公用的结构体,提供注册和注销的接口,提供公用或者转接函数,起一个上下层承接的作用。

还有一个i2c-dev.c文件,i2c-dev模块为系统中所有的i2c适配器创建相应的/dev/i2c-x字符设备节点,并注册设备访问方法,从而使得用户进程可以访问该i2c总线上的设备。它包含I2C适配器申请主设备号(内核中已规定#define I2C_MAJOR 89)和创建设备类以及对设备的操作方法file_operations(也就是找到对应的adapterclient,并做相应操作),主设备号的申请放这里,是因为I2C的主设备号相同,当有多个控制器时,不必每次都申请。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值