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, 步骤如下:

  1. 在openwrt_widora目录下执行make kernel_menuconfig, 进入Device Drivers选项,[*]选Real Time Clock条目。

  2. 编辑~/openwrt_widora/package/kernel/linux/modules/other.mk 文件,找到define KernelPackage/rtc-ds1307条,将其中DEPENDS:=@RTC_SUPPORT +kmod-i2c-core 改写成DEPENDS:= +@RTC_SUPPORT +kmod-i2c-core

  3. make menuconfig可以发现此时在kernel modules -> other modules下面出现了kmod-rtc-ds1307模块选项,[*]选中。

  4. 编辑~/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>;
                        };
                };

  1. 编译固体,并将其刷入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]: 

!1534755599467-rtc2.jpg

研究了一下openwrt_widora各个配置文件和相互关系,觉得将缺失配置写入target/linux/generic/config-3.18中才是长久之计.

添加tft驱动也会遇到这个问题 已解决 谢谢 @midas-zhou

@mango 实验,确实如此!把红色部分改回到target/linux/ramips/mt7688/config-3.18 就可以了。
!

@midas-zhou 执行过kernel_menuconfig后,你使用git diff就会发现,由于config-3.18与内核基础的原本的存在微笑冲突,导致有SND相关的两句发生了变化,改回去那两句就好了。
实际编译时,是以config-3.18为准的