RTC时间同步报错问题分析
更新时间: 2026/05/30
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:OpenUBMC 25.12;
- 涉及功能:RTC,i2c,web;
- 触发条件:CSR配置RTC时间后出包升级,开启NTP功能,web页面查看BMC时间与RTC时间一致性。
- 业务表现:预期本地时间和RTC同步;实际本地时间和RTC未同步。
问题复现步骤
当前载板上一组i2c连接了RTC芯片,代码配置后出包升级,发现BMC侧时间和RTC时间不一致。
关键日志信息
busctl命令查询时间:
shell
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_ExpBoardSMC_0101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 201327872 8
ay 8 234 7 4 12 0 4 14 25app.log日志报错:
属性信息查询如下: 从属性结果可知,显示的时间为“1970-01-01 08:19:51”,但是实际计算的时间应该为“2126-4-12 4:14:25”;
定位过程
- 确认NTP是否开启,不开启的话,BMC不同步RTC时间,确认结果NTP服务开启;
- 根据busctl命令查询结果分析,实际的年份为返回的前2个字节7*256+234=2026年,在加个100年的偏差,再减去YearOffset适配的值0,等于实际是2126年,但是内部是2000-2100才是合理年份,也就是说关键日志属性信息截图中的YearOffset配置的值0不对,应该改为200;
问题原因
YearOffset适配的值0不对,应该为200.
解决方案
YearOffset适配的值改为200.