紧接上一篇博文的I2C主要数据结构的介绍,现在就让我们真正地进入I2C驱动的代码里面,领略一下这个稍微复杂点点的驱动。由于代码已经有一定长度,再也不能像之前那样整段copy,然后直接分析了。为了鄙人以后能够更好地翻阅自己的笔记,也为了比我更菜的小菜鸟考虑(应该没有的,呵呵),这次还是采取按照代码逻辑顺序,讲到哪,代码就贴到哪~ go go go~~~
看到i2c-dev.c 600多行的驱动代码,对于一般初学者来说还是够呛的,不过没关系,咱们谨记看驱动程序,第一要务找到入口和出口!__init 和 __exit 代码如下:
i2c_dev_init :
这个初始函数主要做了三件事。
1.res = register_chrdev(I2C_MAJOR, "i2c", &i2cdev_fops);
显然,这里注册一个字符设备,并且链接到用户空间的操作函数所在的结构体i2cdev_fops。