pho*_*xis 5 x86 assembly real-time-clock
我通过端口 0x70 和 0x71 直接读取/写入 RTC。根据手册,工作日字节将保存星期几,Sunday=1,值范围从 1 到 7。当我读取今天得到的字节 4 时,即星期三。而当我阅读 RTC 信息时,hwclock -r日期是星期四,这是正确的。
将日期设置hwclock为其他日期并使用我的代码读取它不会反映工作日字节的变化。
此问题在所有系统中都存在。可能是什么问题?
来自OSDev Wiki(已添加重点):
RTC 芯片能够跟踪当前星期几。它所做的只是在午夜增加其“工作日”寄存器,并在达到 7 时将其重置为零。不幸的是,无法保证该寄存器被任何事物正确设置(包括当用户使用 BIOS 配置更改时间和日期时)屏幕)。它完全不可靠,不应使用。
确定当前星期几的正确方法是根据日期计算出来。
我相信这既回答了您最初的问题,也回答了为什么手动更改 RTC 日期hwclock不会显示工作日偏移量的更改 ( 0x07)。如果只是午夜的翻转柜台,那就可以解释很多了。
至于在不使用系统时间函数(例如 )的情况下根据日期计算星期几strptime,请查看此 StackOverflow 线程:C Program to find day of week given date