Linux下I2C驱动分析(一)

这篇博客介绍了作者在全志A33芯片上进行Android移植时,针对I2C总线通信的学习过程。文章以Freescale的G-sensor MMA7660为实例,探讨了Linux下复杂但易于移植的I2C驱动框架,强调了底层函数实现的重要性。
摘要由CSDN通过智能技术生成

        最近在做一个基于全志A33芯片的android移植时发现嵌入式设备很多都用到了I2C总线通信,比如说摄像头,G-sensor,触摸屏等,为此我觉得很好的理解I2C设备驱动在今后的嵌入式开发中是非常有好处的,而目前我也是处于学习阶段,便将这些学习的过程给记录下来,如果有存在的问题,还希望不吝指正。

        我曾经用51单片机的IO口模拟I2C总线写过驱动,实现24C02存取数据还是非常简单的,100多行代码就能解决,但是Linux中的I2C框架却极为复杂,主要是在Linux下设备驱动都采用了分层的思想,在设备模型的框架下,实现一个驱动,对总线,驱动,设备的描述都将增大整个驱动的代码,然而这样的好处就是很方便的进行移植,当我们想要实现某一个硬件设备的驱动时,只需要做好最底层函数的实现就可以了,下面我以MMA7660(Freescale G-sensor)的驱动为例,分析一下I2C的驱动的挂载和绑定。

        首先是

module_init(mma7660_init);       //模块入口
module_exit(mma7660_exit);       //模块出口
凡是接触过驱动的人都知道,当我们insmod一个驱动ko文件时,驱动的加载从上面第一个宏开始,那么分析驱动也从这里开始,由这个宏可以知道驱动入口是mma7660_init

static int __init mma7660_init(void)                                      //为了简洁已经去掉所有debu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值