情况说明:
v3s RTC使用备用电池时,时间只保存,不走,每次开始时候还是原先关机的时间。
个人感觉是使用备用电池时候外部32K晶振没使用。
下面贴代码,
dts里面:
ext_osc32k: ext_osc32k_clk {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <32768>;
clock-accuracy = <50000>;
clock-output-names = "ext-osc32k";
};
rtc: rtc@01f00000 {
compatible = "allwinner,sun6i-a31-rtc";
reg = <0x01f00000 0x54>;
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
clock-output-names = "osc32k";
clocks = <&ext_osc32k>;
#clock-cells = <1>;
};
部分启动日志:
[ 0.698307] ohci-platform: OHCI generic platform driver
[ 0.703768] udc-core: couldn't find an available UDC - added [g_cdc] to list of pending drivers
[ 0.712986] sun6i-rtc 1c20400.rtc: rtc core: registered rtc-sun6i as rtc0
[ 0.719819] sun6i-rtc 1c20400.rtc: RTC enabled
[ 0.724802] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 0.733057] usbcore: registered new interface driver usbhid
[ 0.738665] usbhid: USB HID core driver
[ 0.742837] NET: Registered protocol family 17
[ 0.750274] sun6i-rtc 1c20400.rtc: setting system clock to 2018-01-11 18:46:45 UTC (1515696405)
[ 0.759251] vcc3v0: disabling
[ 0.762225] vcc3v3: disabling
[ 0.765187] vcc5v0: disabling
[ 0.800383] random: crng init done
查看rtc驱动代码里,也是有使能外部晶振的。
在driver/rtc-sun6i.c文件里:
部分代码:
/* Switch to the external, more precise, oscillator */
writel(SUN6I_LOSC_CTRL_KEY | SUN6I_LOSC_CTRL_EXT_OSC,
rtc->base + SUN6I_LOSC_CTRL);
/* Yes, I know, this is ugly. */
sun6i_rtc = rtc;
/* Deal with old DTs */
if (!of_get_property(node, "clocks", NULL))
return;
电路图不知道怎么贴,就简单说明下好了 :
接32k晶振,VCC_RTC引脚接备用3.3V电源 正常使用时候接电源芯片的3.3v。
备用电源掉电时候只接VCC_RTC引脚,不知道这个有没关系。
以下由 @哇酷小二 2020-07-21 添加:
----------------------------------------------
问题已解决, 关于v3s关机后,使用后备电池时钟不跑的解决方法:
https://whycan.cn/t_4909.html
离线
在线
emm...
断电时候的时间:
[ 0.750431] sun6i-rtc 1c20400.rtc: setting system clock to 2018-01-12 14:18:35 UTC (1515766715)
等几分钟后启动:
# hwclock -s
# date
Fri Jan 12 14:18:47 UTC 2018
# hwclock -r
Fri Jan 12 14:18:55 2018 0.000000 seconds
表示并时间并没有动过。
离线
date 命令执行后,有没有执行hwclock -w?
有的 执行后掉电的
离线
据我所知,全志V3s的RTC对电容要求很高,很容易不起振。
你最好找个示波器量一下。
恩 好的 等下去看看
rtc电源只提供到VCC_RTC引脚 应该是符合电路要求的吧?
离线
挖坑人 说:晕哥 说:据我所知,全志V3s的RTC对电容要求很高,很容易不起振。
你最好找个示波器量一下。恩 好的 等下去看看
rtc电源只提供到VCC_RTC引脚 应该是符合电路要求的吧?对,98脚供3.3v即可。
估计1v多也可以工作了。
具体看手册。
好的 非常感谢!
离线
我也发现这个问题,zImage使用4.13.y默认配置,RTC掉电就不走了
离线
我的板子, 没贴32.768Khz, 但是备份电池都焊上了,现在情况是:
#hwclock -r --rtc /dev/rtc0
上电时候用hwclock读时间会跑, 关机后再开机,中间这段时间和上面的朋友描述一样,时间没有跑,
下次开机接着跑。
因为没有晶振,时间不跑我能理解,
但是hwclock不是直接读RTC吗?这时候连晶振都没有,他到底读的是谁的时间?
离线
我的板子, 没贴32.768Khz, 但是备份电池都焊上了,现在情况是:
#hwclock -r --rtc /dev/rtc0
上电时候用hwclock读时间会跑, 关机后再开机,中间这段时间和上面的朋友描述一样,时间没有跑,
下次开机接着跑。因为没有晶振,时间不跑我能理解,
但是hwclock不是直接读RTC吗?这时候连晶振都没有,他到底读的是谁的时间?
看了一下驱动和手册,
不管有没有晶振,
驱动都是去读 RTC的相关寄存器 :
RTC_YY_MM_DD_REG
RTC_HH_MM_SS_REG
如果32.768K晶振正常起振,那么这两个寄存器都会实时更新,
如果不起振,那么寄存器就不会更新。
在线
终于解决V3s自带的RTC不准问题,
电阻电容调大又调小,始终解决不了时间不准问题,
淘宝买一片PCF8563, 外挂上去解决这个问题。
dts修改:
&i2c0 {
status = "okay";ns2009: ns2009@48 {
compatible = "nsiway,ns2009";
reg = <0x48>;
};
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
PCF8563驱动加入内核:
CONFIG_RTC_DRV_PCF8563=y
离线
我也遇到这样的问题,断电(电池供电)没有走时。
上电 hwclock -r 时钟是走的
离线
我也遇到这样的问题,断电(电池供电)没有走时。
上电 hwclock -r 时钟是走的
我怀疑主线上的 RTC 驱动还是有问题,
否则V3s的行车记录仪怎么保存时间的?
离线
是硬件没有起振,内置RTC都比较挑剔。后续还是考虑外置了
离线
我已经放弃了,用外内置晶振的RTC,稳稳的,就是价格多了些
离线
https://whycan.cn/files/members/370/QQ20180202112836.jpg
https://whycan.cn/files/members/370/QQ20180202112307.png
终于解决V3s自带的RTC不准问题,
电阻电容调大又调小,始终解决不了时间不准问题,
淘宝买一片PCF8563, 外挂上去解决这个问题。dts修改:
&i2c0 {
status = "okay";ns2009: ns2009@48 {
compatible = "nsiway,ns2009";
reg = <0x48>;
};
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};PCF8563驱动加入内核:
CONFIG_RTC_DRV_PCF8563=y
我通用选择外接pcf8563芯片用作外部rtc,但是我从打印信息中看到,系统使用的依旧是内部RTC?设备节点有2个RTC,分别是sun6i-rtc和rtc-pcf8563,我想问一下需要在设备树在禁止sun6i-rtc?我认为我的v3s现在并没有使用外接的pcf8563-rtc
还有一个问题就是,我在查看pcf8563-rtc时间时hwclock -f /dev/rtc1 提示
rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
hwclock: RTC_RD_TIME: Invalid argument
有人外接时候碰到过吗?这是pcf8563-rtc没有用上?
最近编辑记录 605364021 (2019-07-10 22:38:58)
离线
有没有大佬可以解答一下
离线
在线
离线
[ 0.814189] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
[ 0.814228] rtc-pcf8563 0-0051: hctosys: unable to read the hardware clock
我的也出现这种问题了。
@605364021 请问你的解决了吗?
离线
PCF8563 断电一分钟,然后接上电源, 重启, 发现还是一样的错误。
但是 hwclock -w 运行 OK
reboot 之后:
# dmesg |grep rtc
[ 0.767704] rtc rtc0: invalid alarm value: 1970-1-11 39:0:0
[ 0.768092] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0
[ 0.816290] rtc-pcf8563 0-0051: setting system clock to 1970-01-01 00:25:47 UTC (1547)
#
#
# date
Thu Jan 1 00:27:03 UTC 1970
现在正常了。
https://forums.xilinx.com/t5/Embedded-Linux/RTC-retrieved-date-time-is-not-valid/td-p/266324
可是这是什么原因造成的呢?
This warning message occurs when the VL flag in the RTC's SECONDS register is set. This flag gets set when VDD falls below a certain threshold (like low battery). It stays set until cleared by writing a zero to bit 7 of the SECONDS register (offset 0x02).
离线
1. 驱动或者设备禁用内置RTC 都可以.
2. rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable.
电压不够或者没有放rtc电池。
https://blog.csdn.net/qq_39346729/article/details/80509599
2.
先执行: date -s 2020.07.21-22:59:00
再执行 hwclock -w --rtc /dev/rtc1就可以了.
离线
有意思
离线
离线
收藏,填坑
离线
以下由 @哇酷小二 2020-07-21 添加:
----------------------------------------------
楼主的问题已解决, 关于v3s关机后,使用后备电池时钟不跑的解决方法:
https://whycan.cn/t_4909.html
测试并不能断电走时 而且hwclock -w保存的时候报错 如下:
# hwclock -w
[ 36.460462] sun6i-rtc 1c20400.rtc: rtc is still busy.
hwclock: RTC_SET_TIME: Device or resource busy
不知道大牛有没有解决
离线