linux时间树,【Linux】RTC时钟功能调试

一、硬件及系统信息

首先先说明硬件及系统的信息

- 核心板:周立功 A3352

- 时钟芯片:PHILIPS PCF8563

- Linux: 4.9(使用设备树(DTS)配置)

二、设备树及内核驱动配置

前一篇调试PHY芯片的文章中有提到,设备树的相关介绍文档在Documentation/devicetree 路径下,可以直接搜索PCF8563查看相关说明

搜索到的文档说明如下

可以看出RTC时钟芯片也是通过I2C来与核心板进行通讯的。

查看引脚信息并在设备树中配置RTC。周立功的评估板使用的是EPSON的RTC8025时钟芯片,我们的底板引脚没有变化,因此直接修改I2C中的配置就行了。

设备树相关配置如下。

查看dev/目录,可以看到有rtc0和rtc1

rtc0是3352内置rtc,而rtc1就是我们的pcf8563,可以使用如下指令指定rtc设备

但是报如下错误

按照字面意思,就是电压不够,无法使用

后面检查开机时的内核启动日志,也有这些输出信息

于是对电路进行了检测,也尝试了重新焊接晶振之类的,但是没有什么用。

终于,在对rtc1尝试使用写入命令后

居然生效了,而且关机后重新再使用 -f 参数指定rtc1后,还可以正常读取时间。

原来外部的rtc芯片需要先写入一次才能进行读取,否则报错电压过低日期不可靠。

但是这个错误的误导性太强,导致一开始完全没有找对方向,最后还是通过告科学找到问题所在。

现在启动日志也正常了

目前剩余的问题就是,如何屏蔽掉rtc0,或者将我们的外部rtc芯片配置为rtc0,这样就可以正常使用了。因为后面有一句setting system clock to 2000-01-01 00:00:01 UTC (946684801),很明显还是使用的内部时钟。

把DTS翻烂了都没有找到哪里可以设置,快要绝望的时候,突然想到如果在内核中把自带的rtc关掉就行了。

结果一进入到menu config,原来在这里面可以直接设置使用哪一个rtc,之前都没看到。

按Y进入输入框,改成rtc1就行了。

05102914d658b24030dc1b8fe6ee19d0.png

当然,如果要关掉板载rtc,也可以直接把TI OMAP Real Time Clock关掉。

f0ac8c09123b63d36e9d08da86fa6f95.png

如果这样改的话,上面的rtc1也要换回rtc0。

最后,由于程序中配置时使用的命令是rtc0,因此最好的解决方案还是关闭板载的内置RTC。如果修改为rtc1,那我们的命令需要每次加上对rtc1的指定。

Comments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值