记录一下在kernel中使用设备树使能I2C驱动并在/dev目录下显示i2c-0节点的方法。
第一步:menuconfig
在内核源码目录下,我们先进行图形化界面配置,使用如下命令:
make menuconfig
如图,在路径Device Drivers > I2C support下,进行I2C的选项选择。其中第三项:I2C device interface要记得勾选,否则在/dev目录下不会生成I2C节点!

设备树:
一般使用硬件I2C的时候,原厂会在设备树的dtsi文件中加入该节点的信息,但status状态是disabled,所以我们需要在所使用的dts文件中使能该节点。
原厂写好的节点:

用户需要自己添加的信息:

将状态status赋值为okay一般就可以结束了。我这里I2C下挂了一个RTC芯片,所以我添加了RTC的节点。
第三步:编译、下载、测试
在kernel启动log中可以看到有I2C驱动控制器打印的信息

在系统中 ls /dev查看是否存在I2C节点:

可以看到,i2c-0节点存在,此时就可以使用open,write,read应用函数去操作节点啦。
关键注意点:menuconfig选择配置项的时候,一定记得要选择I2C device interface,否则/dev下找不到该节点!
附加记录(linux下gpio模拟i2c)menuconfig:

设备树:

注意使用的gpio有没有其他其他功能被占用,另外要添加到alise节点。
gpios两个引脚的顺序:

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。