上篇文章简要分析了如何编写一个Linux下的I2C设备驱动程序。编写驱动程序毕竟有一定的门槛,需要熟悉内核各种相关的开发规范,有时为了快速的测试一款I2C设备的功能,临时编写驱动程序可能会使得工期比较紧张;并且有时I2C设备十分的简单,为此编写一个单独的驱动程序未免有点“兴师动众”。i2c-dev框架很好的解决了上面的问题,使用该框架可以使我们在用户空间上编写I2C通信程序。i2c-dev在内核中封装了关于I2C通信所需要的所有通信细节,通过ioctl接口将这些功能暴露给用户空间程序调用。用户应用程序使用open/read/write/ioctl系统调用就可实现与I2C设备的通信。基本原理在Linux系统下,每个使能的I2C适配器,在/dev目录下都会创建一个字符设备文件(主设备号89),例如/dev/i2c-0,通过这个设备文件,就可以实现与I2C设备的通信,当然,I2C设备必须首先挂载在该I2C适配器之下。i2c-dev的内核代码可以参考这里。其主要的功能就是创建I2C适配器字符设备,并提供如下的功能:
staticconststructfile_operationsi2cdev_fops={.owner=THIS_MODULE,.llseek=no_llseek,.read=i2cdev_read,.write=i2cdev_write,.unlocked_ioctl=i2cdev_ioctl,.