RTC时间同步报错

问题描述

本地时间和RTC未同步,SMC读值

~ ~ # 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 25

日志报错

1970-01-01 08:17:50.749598 bmc_time INFO: rtc_time.lua(66): [bmc_time] pcall set cur time stamp error: value out of range
1970-01-01 08:17:50.749995 bmc_time INFO: rtc_time.lua(108): [bmc_time] update time successfully

CSR对象

~ ~ # mdbctl lsprop Time_Bmc_0101
bmc.kepler.Managers.Ntp
  AlternateServer=""
  CurrentPollingIntervalSeconds=0
  Enabled=false
  ExtraServers=[""]
  MaxPoll=6
  MinPoll=6
  NTPIpVersion="IPv4"
  NTPMode="Static"
  NTPServerCount=3
  PreferServer="ntp1.aliyun.com"
  SyncResult=1
bmc.kepler.Managers.Ntp.Auth
  AuthEnabled=false
  GroupKeyStatus=0
bmc.kepler.Managers.Time
  DSTEnabled=false
  DateTime="1970-01-01T08:19:51+08:00"
  DateTimeLocalOffset="+08:00"
  SyncStatus=false
  TimeZoneConfigurable=true
  TimeZoneName="Asia/Shanghai"
bmc.kepler.Object.Properties
  ClassName="Time"
  ObjectIdentifier=[1,"1","1","0101"]
  ObjectName="Time_Bmc_0101"
  TraceSamplingRate=0
Private
  CpuBrdRtc="Smc_ExpBoardSMC_0101"
  EffOffset=0
  Extra=""
  Id=1
  IsValid=true
  NtpGroupKeyType=0
  Offset=201327872
  RtcSupported=true
  Size=8
  SyncTimeStatus=0
  TimeHoppingThreshold=120
  TimeSynchronizationPolicy=0
  YearOffset=0

~ ~ # mdbctl lsprop Scanner_Rtc_0101
bmc.kepler.Object.Properties
  ClassName="Scanner"
  ObjectIdentifier=[1,"1","1","0101"]
  ObjectName="Scanner_Rtc_0101"
  TraceSamplingRate=0
bmc.kepler.Scanner
  Status=0
  Value=3968801569868351466LL
bmc.kepler.Scanner.Aggregate
  AggregateOffset=0
  AggregateStatus=false
Private
  Chip="Smc_ExpBoardSMC_0101"
  Debounce="None"
  FailureDebounceCount=10
  Mask=0
  NominalValue=0
  Offset=201327872
  Period=6000
  ScanEnabled=1
  Size=8
  SuccessDebounceCount=10
  Type=1

环境信息

  • 软件版本:OpenUBMC2512

这前2个字节代表年份 7*256+234=2026年,在加个100年的偏差,等于实际是2126年,内部是2000-2100才是合理年份,这个报错是符合预期的

YearOffset配0也会有100年的偏差吗

你这个有200年的偏差了,YearOffset得配成200了

YearOffset的作用是在SMC的年份基础上减去YearOffset值吗?

对 减到1900年才是实际环境里面的2000年