1:打开WRTNODE.dts并添加以下代码:
$vim WRTNODE.dts
palmbus@10000000 { ... ... i2c@900 { compatible = "ralink,mt7620n-i2c", "ralink,rt2880-i2c"; reg = <0x900 0x100>; resets = <&rstctrl 16>; reset-names = "i2c"; #address-cells = <1>; #size-cells = <0>; status = "okay"; }; ... ... };
2:下面代码是将i2c引脚释放为gpio,因此要将里i2c从ralink,group里去掉。
原代码:
pinctrl { state_default: pinctrl0 { default { ralink,group = "ephy", "wled", "pa", "i2c", "wdt", "uartf" ,"spi refclk"; ralink,function = "gpio"; }; i2c_pins: i2c { i2c { ralink,group = "i2c"; ralink,function = "i2c"; }; };
}; };
修改之后的代码:
pinctrl { state_default: pinctrl0 { default { ralink,group = "ephy", "wled", "pa", "wdt", "uartf" ,"spi refclk"; ralink,function = "gpio"; }; }; };
3:i2c配置
$make kernel_menuconfig
4:编译:
$make
5:刷新固件
将新固件重新烧写到WRTnode上,在WRTnode上执行以下操作
$cd /dev $ls
可以看到i2c-0
$ls -all i2c-0
WRTnode添加i2c成功。
6:前面我们做i2c配置用的是make kernel_menuconfig,现在我们用make menuconfig来做i2c的配置。
$make menuconfig
$insmod i2c-dev.ko $cd /dev $ls
dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。