记录一下在kernel中使用设备树使能I2C驱动并在/dev目录下显示i2c-0节点的方法。
第一步:menuconfig
在内核源码目录下,我们先进行图形化界面配置,使用如下命令:
make menuconfig
如图,在路径Device Drivers > I2C support下,进行I2C的选项选择。其中第三项:I2C device interface要记得勾选,否则在/dev目录下不会生成I2C节点!
![1706952508367143.png 1706952508367143.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706952508367143.png)
设备树:
一般使用硬件I2C的时候,原厂会在设备树的dtsi文件中加入该节点的信息,但status状态是disabled,所以我们需要在所使用的dts文件中使能该节点。
原厂写好的节点:
![1706952639282084.png image.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706952639282084.png)
用户需要自己添加的信息:
![1706952670240503.png image.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706952670240503.png)
将状态status赋值为okay一般就可以结束了。我这里I2C下挂了一个RTC芯片,所以我添加了RTC的节点。
第三步:编译、下载、测试
在kernel启动log中可以看到有I2C驱动控制器打印的信息
![](https://img-blog.csdnimg.cn/143efa7453f540fd94692b79daafb495.png)
在系统中 ls /dev查看是否存在I2C节点:
![1706952864704097.png 1706952864704097.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706952864704097.png)
可以看到,i2c-0节点存在,此时就可以使用open,write,read应用函数去操作节点啦。
关键注意点:menuconfig选择配置项的时候,一定记得要选择I2C device interface,否则/dev下找不到该节点!
附加记录(linux下gpio模拟i2c)menuconfig:
![1706952942912121.png 1706952942912121.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706952942912121.png)
设备树:
![1706953053748808.png image.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706953053748808.png)
注意使用的gpio有没有其他其他功能被占用,另外要添加到alise节点。
gpios两个引脚的顺序:
![1706953117150863.png 1706953117150863.png](http://uphotos.eepw.com.cn/eleaction01/pics/1706953117150863.png)
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。