“第五课--MicroWRT I2C 使用”的版本间的差异
(寄存器地址在mt7620a.dtsi中已经定义,dts中只需启用即可.) |
(→在kernel 中添加I2C 驱动) |
||
| 第12行: | 第12行: | ||
palmbus@10000000 { | 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>; | ||
| + | pinctrl-names = "default"; | ||
| + | pinctrl-0 = <&i2c_pins>; | ||
| + | status = "okay"; | ||
| + | }; | ||
... ... | ... ... | ||
}; | }; | ||
| 第26行: | 第34行: | ||
ralink,function = "gpio"; | ralink,function = "gpio"; | ||
}; | }; | ||
| − | + | }; | |
| − | + | i2c_pins: i2c { | |
| + | i2c { | ||
| + | ralink,group = "i2c"; | ||
| + | ralink,function = "i2c"; | ||
| + | }; | ||
| + | }; | ||
| + | }; | ||
3.在kernel里配置I2C | 3.在kernel里配置I2C | ||
2015年5月31日 (日) 07:35的版本
|
本片教程主要介绍如何添加I2C驱动,在linux系统中,I2C设备的驱动从硬件上可以通过两种方式来实现,一是通过2个GPIO口来模拟I2C总线, 这也是GPIO引脚复用的结果。另外一种是通过I2C控制器来操作I2C设备。这两种驱动的方式也不尽相同。第一种方式的特点是,应用层程序员 要熟悉相关的硬件,在用户层程序中封装I2C消息结构,并完成时序的控制。第二中方式可以充分利用linux i2c子系统的功能,用户不需要知道太多 的硬件信息,通过API来完成对设备的访问。本教程主要介绍第一种方式,来添加I2C驱动。并且分别介绍在kernel和openwrt中配置,添加I2C驱动。 在kernel 中添加I2C 驱动1.本教程中使用MZK-750DHP.dts,打开文件并添加如下代码。 $vim MZK-750DHP.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>;
pinctrl-names = "default";
pinctrl-0 = <&i2c_pins>;
status = "okay";
};
... ...
};
2.下面代码是将i2c引脚释放为gpio,因此要将里i2c从ralink,group里去掉。 修改之后的代码如下: pinctrl {
state_default: pinctrl0 {
gpio {
ralink,group = "spi refclk", "rgmii1","wled";
ralink,function = "gpio";
};
};
i2c_pins: i2c {
i2c {
ralink,group = "i2c";
ralink,function = "i2c";
};
};
};
3.在kernel里配置I2C $make kernel_menuconfig 文件:I2c-1.jpg I2C Configuration 文件:I2c-2.jpg I2C Configuration 文件:I2c-3.jpg I2C Configuration 文件:I2c-4.jpg I2C Configuration 4:编译: $make 5:刷新固件 将新固件重新烧写到microWRT上,在microWRT上执行以下操作 $cd /dev $ls 可以看到i2c-0 文件:I2c-5.jpg I2C Configuration $ls -all i2c-0 文件:I2c-6.jpg I2C Configuration 添加i2c 驱动成功。 在openWRT里添加I2C1. 在trunk 目录下运行如下命令 $make menuconfig 文件:I2c-7.jpg I2C Configuration 文件:I2c-8.jpg I2C Configuration 文件:I2c-9.jpg I2C Configuration 编译完成后,会生成i2c-dev.ko,用如下命令加载驱动并查看。 $insmod i2c-dev.ko $cd /dev $ls 文件:I2c-10.jpg I2C Configuration dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。 它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
|