OpenWrt系统下增加RTC(EPSON, RX8010SJ)及驱动详解
发布网友
发布时间:2024-10-03 19:29
我来回答
共1个回答
热心网友
时间:2024-10-28 03:53
RTC简介
RTC,即实时时钟,为电子设备提供精准时间基准。它分为片内RTC和外部RTC两类。内部RTC集成在芯片内部,时间设置和保持在后备区域,系统复位或唤醒后不变。外部RTC为独立IC,通常使用纽扣电池作为备用电源,在系统断电后仍能自动运转并更新时间。本文将详细指导如何在基于MT76x8的OpenWrt系统下增加外部RTC(EPSON, RX8010SJ)及其驱动支持。
EPSON,RX8010SJ
这是一个基于I2C串行接口的系统实时时钟模块,内置32.768kHz晶体振荡器,提供包括秒、分、时、日、月、年在内的时间基准。因其基于I2C,需要系统中添加对I2C的支持。
第一步:添加I2C支持
需在系统中集成I2C驱动,具体步骤如下:
1. 添加模块支持
通过执行`make menuconfig`,在“Kernelmoles”中选择添加`kmod-i2c-core`、`kmod-i2c-algo-bit`、`kmod-i2c-gpio`和`kmod-i2c-mt7628`等模块。
2. 添加内核支持
使用`make kernel_menuconfig`,在“DeviceDrivers”中为I2C设备接口、Ralink I2C控制器和MT7621/MT7628 I2C控制器添加支持。
3. 修改dts文件
打开dts文件,添加I2C外设功能,注意I2C引脚是否被其他功能占用,若需调整。
4. 添加I2C常用工具集
使用`make manuconfig`和`menuconfig`命令,选择添加`i2cget`、`i2cset`、`i2cmp`和`i2cdetect`等工具集。
完成以上步骤后,I2C驱动支持已添加,可在`/dev`目录下看到`i2c-0`节点。可使用代码或指令访问EPSON RX8010SJ芯片,进行设置和时间读取。
查看I2C设备
通过指令访问设备,查看时间寄存器。
然后需要添加EPSON RX8010SJ相关的驱动,以方便通过`hwclock`指令访问时钟芯片。
第二步:添加EPSON RX8010SJ驱动
1. 增加内核模组配置
使用`make kernel_menuconfig`添加内核对RTC模块的支持。
2. 修改dts文件
在dts文件中适配EPSON RX8010SJ,设置I2C从机地址和compatible字段。
3. 编译并下载到目标板
完成驱动集成后,编译并下载至目标设备。
第三步:时间读取和写入
通过`hwclock`指令操作RTC时间。
使用`hwclock`指令时可能遇到错误,原因可能是RTC芯片刚上电时时间非法,通过驱动读取到非法时间。此时需将EPSON RX8010SJ内部寄存器更新为合法值,即更新实时时钟至系统时间。
再次通过`hwclock`指令读取RTC时间,即可成功读取到RTC(EPSON RX8010SJ)时间。
最后,如需使用RTC更新系统时钟,简单执行`hwclock -s`指令,执行后通过`date`指令查看当前系统时间即可。