想给Widora_NEO外挂一个RTC模块,查看rtc-ds1307.c驱动文件,发现其兼容支持ds_1307/1337/1339/1340/1388/3231,m41t00,mcp7941x和rx_8025等芯片,正好手头有一片ds3231,将其连接到widora_neo的i2c接口上。参考这篇网文http://lib.csdn.net/article/embeddeddevelopment/26882进行设置, 基于openwrt_widora, 步骤如下:
-
在openwrt_widora目录下执行make kernel_menuconfig, 进入Device Drivers选项,[*]选Real Time Clock条目。
-
编辑~/openwrt_widora/package/kernel/linux/modules/other.mk 文件,找到define KernelPackage/rtc-ds1307条,将其中DEPENDS:=@RTC_SUPPORT +kmod-i2c-core 改写成DEPENDS:= +@RTC_SUPPORT +kmod-i2c-core
-
make menuconfig可以发现此时在kernel modules -> other modules下面出现了kmod-rtc-ds1307模块选项,[*]选中。
-
编辑~/openwrt_widora/target/linux/ramips/dts/WIDORA32128.dts 文件,在i2c@900节点中加入rtc子节点. 0x68为RTC模块的I2C地址。
i2c@900 {
#address-cells=<1>;
#size-cells=<0>;
status = "okay";
rtc@68{
compatible="dallas,ds3231";
reg=<0x68>;
};
};
- 编译固体,并将其刷入Widora_NEO.
ls /dev 可以看到生成了rtc0设备。
执行hwclock -r 显示RTC模块的时间。
root@Widora:~# hwclock -r
Sat Jan 1 00:00:12 2000 0.000000 seconds
执行hwclock -w 可用系统时间来矫正RTC模块的时间
root@Widora:~# hwclock -w
root@Widora:~# hwclock -r
Mon Aug 20 14:36:39 2018 0.000000 seconds
6.问题:
可能是执行了make kernel_menuconfig的原因,每次编译的时候都会2次出现如下选项要求手动输入,不知道如何取消掉
* Restart config...
*
*
* ALSA for SoC audio support
*
ALSA for SoC audio support (SND_SOC) [M/n/?] m
SoC Audio for the Atmel System-on-Chip (SND_ATMEL_SOC) [N/m/?] n
Synopsys I2S Device Driver (SND_DESIGNWARE_I2S) [N/m/?] n
SoC Audio (I2S protocol) for Ralink MT7620 SoC (SND_MT7620_SOC_I2S) [N/m/?] n
SoC Audio support for Ralink WM8960 (SND_MT7620_SOC_WM8960) [N/m/?] n
SoC Audio for MT76XX APSoC Machine (SND_MT76XX_SOC) [M/n/?] m
Selected SoC type
> 1. MT7620 (SND_MT76XX_SOC_MT7620) (NEW)
2. MT7628 (SND_MT76XX_SOC_MT7628) (NEW)
choice[1-2]:
!