Widora_NEO: 挂载I2C接口RTC时钟模块
-
想给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]:
-
-
@midas-zhou 执行过kernel_menuconfig后,你使用git diff就会发现,由于config-3.18与内核基础的原本的存在微笑冲突,导致有SND相关的两句发生了变化,改回去那两句就好了。
实际编译时,是以config-3.18为准的 -
@mango 实验,确实如此!把红色部分改回到target/linux/ramips/mt7688/config-3.18 就可以了。
-
添加tft驱动也会遇到这个问题 已解决 谢谢 @midas-zhou
-
研究了一下openwrt_widora各个配置文件和相互关系,觉得将缺失配置写入target/linux/generic/config-3.18中才是长久之计.