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]: 
    
    

    0_1534755599186_rtc2.jpg


  • administrators

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



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



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



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


Log in to reply