飞凌嵌入式ElfBoard ELF1板卡-开发板适配之I2C-RTC
其他
 
758 人阅读
|
0 人回复
|
2025-02-14 
 
 
 
 
| 
 | 
 
 
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读取系统时间,可以看到时间已经同步。 
 
 |   
 
  
  
  
 
 
 | 
| 
 | 
| 
 | 
| 
 | 
 |