为啥linux上的时间不准?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥linux上的时间不准?相关的知识,希望对你有一定的参考价值。
天火兄真的是高手,我知道Ubuntu和Windows的时间差异很大,这个是因为对bios时间解读不同造成的,Ubuntu系统使用的是UTC时钟(其实安 装是可以选择的),如果你在安装时选择了UTC的,那么Ubuntu会把BIOS时间当作UTC标准时间然后根据你选的时区来调整系统时间。
但 是Windows把BIOS时间当作系统时间,那怎么办,这样的话Ubuntu与Windows双系统的时间就不同步了。
解决很简单,把UTC 给关了,在终端下(root用户下):sudo gedit /etc/default/rcS
找到“UTC=yes”,把UTC设置成 no (即"UTC=no")
保存即可。 参考技术A 每台机器都可能有时间不准的情况的。windows也一样,你可以在linux下输入时间同步命令来与Internet上的时间服务器同步一下就可以了:
ntpdate pool.ntp.org 参考技术B 一、问题分析
1.转换误差
2.时钟不稳定
3.时钟频率不对
接下来来看一下Linux系统内时间管理的内容
clock source用于为linux内核提供一个时间基线,实际上就是一个时间相关的结构体,如果你用linux的date命令获取当前时间,内核会读取当前的clock source转换并返回合适的时间单位给用户空间。在硬件层,它通常实现为一个由固定时钟频率驱动的计数器(上面的
TimeBase),计数器只能单调地增加,直到溢出为止。系统启动时,内核通过硬件RTC获得当前时间,并设置到计数器内,在这以后,内核通过选定的时钟源更新实时时间信息(墙上
时间),而不再读取RTC的时间。
clock source可以有多个,系统启动时会检查所有clock source然后将精度最好的时钟源设为当前时钟源。每个时钟源的精度由驱动它的时钟频率决定,可以用如下命令查看clock source。更详细的可参考书籍《Linux就该这么学》。
为啥我的stm32 的tim3 1ms中断时间不准
没代码我只能给你列出一些可能:
系统SYSCLK时钟PLL输出最终频率跟你需要的不一致,也就是你系统时钟配置有问题;
tim3的计数器重载值设置得不对,看看是不是算错了;
tim3预分频AHB设置得跟你设想的频率不一致。
仔细看看STM32的时钟树,并利用KEIL的运行时间仿真和寄存器查看功能,看看哪里出问题。
参考技术A 其他的中断会使得tim的定时稍微有点偏差,要是想定时非常准确,把tim的定时中断优先级最高。晶振选择10ppm的以上是关于为啥linux上的时间不准?的主要内容,如果未能解决你的问题,请参考以下文章