Linux下I2C驱动分析(三)

分析了两天的I2C驱动,发现每次解决一个问题的时候都会带来新的问题,当大致读完MMA7660驱动程序的时候发现,作为一个字符设备I2C驱动,并不存在有open,close等接口,而我们知道,在Linux的世界里设备即文件,也就是操作设备就相当于读写文件,而在一个简单的字符设备里总会实现一个file_operation的结构体以实现用户层的调用,那么当我们打开一个I2C设备的时候open在哪里呢?

从框架开始说起,在网上寻找I2C框架的时候,我在很多地方看到一张图

既然大家都喜欢拿图说事,那么我也尝试着拿这个图说事,也许会有偏差和错误,所以还望看到这博客的各位指正。首先我们要知道,我们写的驱动(或者说移植的驱动,其实我目前做的也是移植)到底属于那一层呢?答案是图中的driver驱动层,但为什么呢?硬件实验控制层所说的硬件控制指的是Soc上I2C控制器的控制,而这一部分一般是Soc生产商做好了的,毕竟他们最懂Soc上I2C应该怎么跑,而我们只要把连接在Soc的I2C外设的一些特性告诉硬件控制代码,它就能根据需要让外设工作起来。

回到这张图,很明显可以知道用户程序最开始接触到的是client,也就是之前我说到的设备,其实这个设备是被封装过的,封装之后很合适的挂载在内核虚拟的I2C总线上,并且和同样封装过的i2c_driver进行绑定(具体可以查看昨天提到的这两个结构体

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值