OpenWrt 学习笔记【7】配置RTC驱动及应用

目的 基于OpenWrt实现RTC实时时钟
背景 硬件设计中将GPIO1,GPIO2作为I2C接口使用,挂了RTC外设,并且该GPIO口被JTAG占用。因此需要先将GPIO1,2引脚设置为GPIO口,通过i2c-gpio组件模拟I2C总线实现RTC驱动。
步骤1 I2C驱动

  1. https://openwrt.org/docs/guide-user/hardware/turnoff.jtag.to.gpio
    参考官网提供的How to turnoff JTAG to free GPIO方法,碰到问题了,
    https://forum.openwrt.org/t/dev-mem-problem-when-turn-off-jtag-to-free-gpio/43441
    还是理解不够深入,这种注释掉一个宏的方式不可取。
  2. 调用该脚本并看到打印后,即将引脚配置为GPIO功能;
  3. Make menuconfig:
    Kernel modules —> I2C support —>
    OpenWrt 学习笔记【7】配置RTC驱动及应用
    文章图片
  4. Make kernel_menuconfig
    Device Drivers —> I2C support —>
    OpenWrt 学习笔记【7】配置RTC驱动及应用
    文章图片

    OpenWrt 学习笔记【7】配置RTC驱动及应用
    文章图片
步骤2 RTC驱动 【OpenWrt 学习笔记【7】配置RTC驱动及应用】万能的openwrt已经帮我们做好了所有,能做的就是enable打开它的选项
  1. Make kernel_menuconfig增加内核对RTC模块的支持
    –>Device Drivers
    –>Real Time Clock
    +Set the RTC time based on NTP synchronization
    +/sys/class/rtc/rtcN (sysfs)
    +/proc/driver/rtc (procfs for rtcN)
    +/dev/rtcN (character devices)
    +Philips PCF8563/Epson RTC8564
    +tips:
    -Set system time from RTC on startup and resume
    不启用此功能,为了避免以下报错:
    [ 2.960000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
  2. Make menuconfig增加i2c设备支持
    –>kernel modules
    –>I2C support
    +kmod-i2c-core
    +algo-bit,i2c-gpio;
    +kmod-i2c-gpio-custom
    并且添加测试工具
    –>Utilities
    +dmesg 查看内核日志
    +hwclock 时钟管理
    +i2c-tools i2c工具集,检测、读取i2c设备数据
  3. 执行脚本
    insmod i2c-gpio-custom bus0=0,1,2
    echo pcf8563 0x51 > /sys/class/i2c-dev/i2c-0/device/new_device
  4. 系统运行后,在dev目录存在文件gpiochip0 gpiochip1 i2c-0

    推荐阅读