开发板适配之I2C-RTC

rx8010时钟芯片挂载在I2C1总线上,并且集成在主控板上。

硬件原理

IOMUX配置

rx8010时钟芯片挂载在I2C1总线上,I2C1数据IIC1_SDA和时钟IIC1_SCL,分别对应的PAD NAME为,UART4_TX_DATA、UART4_RX_DATA。

在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它们的宏定义,分别如下:

复制代码
MX6UL_PAD_UART4_TX_DATA__I2C1_SCL

MX6UL_PAD_UART4_RX_DATA__I2C1_SDA

然后打开设备树文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,我们看到原来的设备树文件已经添加了pinctrl_i2c1子节点,而且选择的引脚与UART4_TX_DATA、UART4_RX_DATA一致,所以此处无需修改,

效果如下:

添加设备节点

查看arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,添加如下内容:

复制代码
       rx8010:rtc@32{

                compatible = "epson,rx8010";

                reg = <0x32>;

        };

添加后效果如下:

添加 rx8010 驱动

一、将++++ELF 1开发板资料包++++ ++++\02-Linux 源代码\++++ ++++02-Linux 源代码\02-1 驱动源码\++++ ++++13++++ ++++_++++ ++++rx8010++++ ++++\++++ ++++rtc-rx8010++++ ++++.c++++ 拷贝到内核源码的drivers/rtc/路径下:

二、修改Kconfig:

复制代码
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi drivers/rtc/Kconfig

添加以下内容:

复制代码
config RTC_DRV_RX8010

        tristate "Epson RX-8010SA/NB"

        help

          If you say yes here you get support for the Epson

          RX-8025SA/NB RTC chips.



          This driver can also be built as a module. If so, the module

          will be called rtc-rx8010.

添加后效果如下:

三、修改Makefile:

复制代码
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ vi drivers/rtc/Makefile

添加以下内容:

复制代码
obj-$(CONFIG_RTC_DRV_RX8010)    += rtc-rx8010.o

添加后效果如下:

四、将rx8010驱动编译进内核:

使用make menuconfig打开图形化配置界面:

复制代码
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ make menuconfig

找到以下位置,我们可以在这里选择Y编译进内核,或者M编译成模块,或者N选择不编译。选择编译进内核:

复制代码
Device Drivers

-> Real Time Clock

五、替换配置文件

通过make menuconfig修改的内容写入到了.config文件,当使用make imx6ull_elf1_defconfig配置内核源码时,.config文件会被覆盖,因此,需要替换原有的imx6ull_elf1_defconfig。

复制代码
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ cp .config arch/arm/configs/imx6ul\l_elf1_defconfig

编译测试

编译内核和设备树并拷贝到开发板:

复制代码
elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ ./build.sh

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/zImage   root\@172.16.0.175:/run/media/mmcblk1p1/

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf\1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

进行sync操作后重启开发板:

使用以下命令进行测试,设置系统当前时间:

复制代码
root@ELF1:~# date 072216162021.00                   //设置软件时间

Thu Jul 22 16:16:00 CST 2021

读取RTC芯片时间:

复制代码
root@ELF1:~# hwclock -r                                    //显示硬件时间

Mon Mar 15 10:52:17 2021  0.000000 seconds

设置系统时间到RTC芯片时间,再读取RTC芯片时间:

复制代码
root@ELF1:~# hwclock -wu                   //将软件时间同步到硬件时间

root@ELF1:~# hwclock -r                              //显示硬件时间

Thu Jul 22 08:16:43 2021  0.000000 seconds

然后给板子断电再上电,进入系统后使用命令date读取系统时间,可以看到时间已经同步。

相关推荐
拉拉尼亚2 天前
WebRTC 完全指南:原理、教程与应用场景
前端·typescript·实时音视频
王家视频教程图书馆5 天前
另外还有一个小问题,就是两个部手机进行测试的时候,进行外部 RTC 通话的时候。我使用 QQ 音乐播放背景音乐,但是背景音乐没有加上。有冲突
实时音视频
海水冷却9 天前
2026年实时音视频服务计费模式指南
实时音视频
番茄灭世神11 天前
PN学堂GD32教程第8篇——RTC
实时音视频
runner365.git11 天前
RTC实现VoiceAgent(二)
大模型·webrtc·实时音视频·voiceagent
xuxie9911 天前
N18 RTC
单片机·嵌入式硬件·实时音视频
runner365.git12 天前
RTC会议实时翻译系统
实时音视频
runner365.git12 天前
如何使用RTCPilot配置一个集群RTC服务
webrtc·实时音视频·音视频开发
深念Y13 天前
从WebSocket到WebRTC,豆包级实时语音交互背后的技术演进
websocket·网络协议·实时互动·webrtc·语音识别·实时音视频
海水冷却16 天前
2026 主流 RTC SDK 选型参考,7 大维度横向对比
实时音视频·rtc