sql 时钟变慢慢跟时间本身有什么关系

博客访问: 313017
博文数量: 75
博客积分: 667
博客等级: 上士
技术积分: 1296
注册时间:
石头,奔跑,直到化为一粒沙,何况一沙一世界
分类: LINUX 15:39:43
关于系统时钟慢的解决方法,芯片是r8610,内核是linux-3.0.4.下面是自己的解决过程,记录下来,希望对也做这一块的同学有所帮助,错误之处,在所难免,欢迎指出啊。2月前移植的linux-3.0.4又有问题啦,系统时钟比硬件时间慢,而且慢的很多。今天又听到消息啦,系统时钟慢。于是我那一台设备,接串口,验证。首先date设置系统时钟,然后hwclock -w同步。然后计时。经过验证,结论如下:大概每30分钟慢236s,也就是说每7.6s就会慢1s,12.7%。我靠,慢的也太厉害啦。首先,我怀疑添加的驱动有问题,把驱动,一些应用都关了。只跑系统。继续测试,涛声依旧啊。基本一样。linux系统时间和硬件时间是有一些偏差,由于内核定时器,锁机制的应用,是可能产生一些差距,但是这12.7%确实有点高啊。先google查找,看看有没有预见同样情况的,一查不要紧,这问题很多啊,看样linux系统的时间确实和硬件时间有一定差距不是个案啊。解决方法一般有下面两种:1 &定时同步,也就是每隔一定时间,进行一次hwclock -s2 &用buxybox提供的adjtimex来调时间第一种方案,首先肯定的是我这里是可以借鉴的,但是每分钟慢7或者8秒,这个同步周期是不得很短啊。尽管设备对时间要求不是非常严格,但是也不能每分钟有7秒的差距啊。再说每10秒同步一次也不合适啊。第二种方案,编译完busybox后,用这个命令调时间的话,-t和-f参数是有范围的。我设置参数达到极限值,确实有所改观,但是只能达到每30分钟慢72秒,这也不小啊。然后我看了看,别人用这两种方法来调试系统时间,一般是差距不很大的情况。我感觉应该是我的系统是有问题的,即使通过同步做的表面上看起来时间差不多,但是这个时间差距这么大会不会有其它潜在的风险呢?本着负责的态度来重新看待这个问题,不能只停留在解决的层面,要找到原有才是硬道理啊。首先,给芯片提供商打个电话,确定一下。芯片厂商一个FAE接我的电话,说这个芯片支持从网上下载的标准内核,任何都不用修改,我再三确定,对方很负责任的告诉你,没有任何问题,他们都这么用。我问他们有没有验证过,对方也是很负责任的告诉我在他们的板子上根本就没有这问题,肯定没有这问题。停了对方这么肯定的回答,我想到三个方面:1 &问题肯定有2 &可能是我的内核编译选项有不合理的地方3 &我们的硬件和厂商的提供的板子有区别第一步,查看内核选项,只要和时间,定时器,RTC,hwclick,HZ有关的选项我都仔细的看了看。应该没有错误的地方。然后抱着不太相信自己,相信FAE的态度把一些选项修改,再测试。还是那样。问题没有解决。第二步,把厂商提供的板子的pdf版原理图拿来看看,和我们的板子很大部分都一样。尤其时钟部分肯定一样。没有进展,实在没有办法,只能看原理图+datasheet啦。我们采用的这颗cpu是r8610,和pc486完全兼容的。看系统tick这一块,这破datasheet说的也太含糊啦,关键细节地方都没有提及,估计由于和486兼容,让参考相关486芯片呢吧。r8610的系统时钟是有82c54提供的,82c54确实是pc也采用的定时芯片,一般情况用timer0方式3产生固定838ns周期方波来实现。默认采用14.31818m的外部时钟来提供,根据写到芯片计数器里的初值来计算有多少个838ns的时间间隔来产生irq0,而这个irq0产生的频率就是linux系统里的HZ。例如,在我的系统里HZ设置为250,那么1秒内irq0就要产生250次中断。这个值也就是我们查看/proc/interrupt所显示的第一行的内容。在linux-3.0.4内核目录下的include/linux目录下的timerx.h这个文件里有这么一个定义:#define PIT_TICK_RATE 1193182ul这个就是系统默认使用的定时芯片的采用的计数时钟,在linux-3.0.4内核目录下的arch/x86/include/asm/timex.h文件有这样的定义:#define&CLOCK_TICK_RATE
PIT_TICK_RATE在linux-3.0.4内核目录下的include/linux目录下的jiffies.h文件里有这么一个宏:#define LATCH ((CLOCK_TICK_RATE + HZ/2)/HZ,而这个值就是要写入定时器的初始值。我根据我的环境计算了一下,(/2)/250 = ,这个值写入82c54,这个值也就是说82c54需要经过这么多个838ns的周期才产生一次irq0中断。两次中断之间的时间间隔是:8(ns)= .这个值应该就是HZ的倒数。即×250应该等于1.而实际计算结果是,基本相等,说明在这个芯片上的linux系统定时器和硬件定时器产生联系的地方就是这里。上面的计算是理想状态,也就是说如果硬件按照上面的计算过程来运行的话,系统时间也是会有时间差距的,但是很小,以为我们实际计算结果是,每秒还慢8734ns,但是那已经很小了。我首先考虑到的就是我的定时器时钟可能不是1193182。于是,继续研读r8610 datasheet,看其中关于clock source的选择,可惜,没有提到。于是继续google,打不开啦,被和谐啦,baidu,别用啦,更本找不到啊。等会。抽烟,喝杯茶。30分钟以后,google 查到下面,对我有十分巨大的提示啊:8254 工作时钟的来历最初在对个人电脑设计时,出于成本考虑,主板上采用了当时广泛应用于电视机且价格最便宜的一个 14.31818MHz 振荡器,该振荡器的频率远高于系统其他器件所需要的频率。所以设计师采用 3 分频后得到 4.77MHz 驱动中央处理器 8088 ;采用 4 分频后得到 3.58MHz 用于驱动彩色图形适配器;最后将系统各种频率的基频 1.1931816 MHz (各种频率的最大公约数,即 12 分频) 作为系统可编程定时器芯片的输入时钟。为了保持兼容性,可编程定时器 8254 就一直采用这个频率的时钟作为输入。也就是说,这就是14.32的关系,是12分频啊。在r8610 datasheet上没有用到外部的14.31818,而是内部的12.5m啊。并且在一个并不起眼的地方发现有下面一句话:NOTE: the following clock is 14.318MHZ/12(external) or 12.5MHZ/12(internal)我的个妈呀,不容易啊,终于找到了啊,我要找的就是这一句啊。严重鄙视自己对datasheet的粗心阅读。也就是说在r8610这颗cpu里面,82c54采用的clk是12.5M/12 = 1041667.在修改以前,大概计算一下: = 0.126983 = 12.7%。我靠,太正了,啥也别说了,都是眼泪。赶紧的,注释,修改,测试。时间ok啦。以上就是我调试系统时间慢的过程,总结:1 &如果时间慢的很多,可以从硬件入手看看时钟设置是否正确2 &阅读datasheet一定要仔细,一字不落的阅读3 &不要盲目相信FAE希望以上内容对大家有所帮助
阅读(5288) | 评论(5) | 转发(3) |
给主人留下些什么吧!~~
大哥&能说明白点不&编译&注释了哪里啊?我也碰到这问题啦。。。。
PTC Creo Elements/Pro 5.0 M070 Working for Win32-ISO 1DVD(最新多语言正式版包括简、繁体中文)
PTC Creo Elements/Pro 5.0 M070 Working for Win64-ISO 1DVD
PTC Creo Elements View (ex Product View) v10 F000 build 93 Pro Multilanguage Win32 1CD
PTC Creo Elements View (ex Product View) v10 F000 build 93 Pro Multilanguage Win64 1CD
PTC Pro/E WildFire+Pro/Mechancia 4.0 M110 Working for Win32-ISO 1DVD(最新多语言正式版包括简、繁体中文)
PTC Pro/E Wil
shiyigudong: 个人感觉描述的确实也不太清晰啊.....充分证明了总结归纳的重要性。
个人感觉描述的确实也不太清晰啊
虽然看得有点稀里糊涂,但是还是要赞一下。——我脱离底层硬件太多年了啊,亏得我还是电工出身,鄙视自己一下!
请登录后评论。相对论 时间间隔大 为什么 时钟变慢_百度知道
相对论 时间间隔大 为什么 时钟变慢
我有更好的答案
你的题意表明矛盾,时间间隔大,跟时钟变慢没有关系,
采纳率:95%
举个例子,地面的人测量运动的车上的两个事件之间的时间间隔,地面上测量到的数值比运动的车上测量的数值大,例如地面的人说:“车上的人挥手2次之间间隔10秒”。车上的人却说:“我挥手2次的时间间隔是5秒”。所以地面的人认为车上的时钟比较慢,明明地面上的钟显示的是10秒,但是车上的人却说是5秒。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于时间简史:时间为什么要和钟表联系_百度知道
关于时间简史:时间为什么要和钟表联系
“1962年,人们利用一对安装在水塔顶上和底下的非常准确的钟,验证了这个预言(在上面的某个人看来,下面发生的每一件事都显得需要更长的时间),发现底下的那只更接近地球的钟走得较慢,这和广义相对论正好相符。”摘自时间简史。
时间是抽象的(至少在我们...
1,高度不会影响时间进程,不同高度是影响时钟到地心的距离,从而影响线速度。速度越快,时间进程就越慢。2时钟只是时间进程的表现形式,由于准确,所以有代表性。联想到双生子佯谬,你可以把兄弟之一放在水塔顶,另一个在水塔底。然后一段时间后,看谁更老。但关键是你得看的出来。所以时钟显然比兄弟变老更直接。时间相对就是空间受物质影响,会出现时间进程不统一的现象,于是时间出现可比性,即相对性。双生子佯谬就是时间相对的一中猜想例子。
你说速度越快,时间进程就越慢,但书上说接近地球的钟走得慢。越接近地球线速度越慢,所以这矛盾啊
是这样的,两种方法使时间进程变慢,一是速度极大,二是在一个较大的重力场附近。你说的接近地球走的变慢是因为原因二————重力场。你说的后半句是根据环绕模型推出的结论V2/r=GM/r2化简得到V=GM/r,但灯塔顶部的线速度应用V=wR,w对于地球是定值,R是物体到地心的距离,所以越高则速度越大。
采纳率:60%
为您推荐:
其他类似问题
您可能关注的内容
时间简史的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。时钟变慢能表示时间变慢?_百度知道
时钟变慢能表示时间变慢?
高中物理课本就有这个例子!课本就用火车上的时钟和火车外人手上的时钟进行对比 可是时钟只是表示时间的一种形式而已 只是让别人更容易知道时间的存在 可是谁能知道在告诉运动中的时间状态是正确的呢?要有自己的看法!别拿什么相对论里面的出来
我有更好的答案
时间状态跟运动或者不运动没关系,(其实这个还是的涉及相对论,当运动速度在光速以下的时候运动与否并不会影响时间,当运动速度超光速了就难说了),你说的对啊手表那些只是帮助我们记录时间与时刻的工具,工具坏了并不会就影响时间的向前!所以时间的状态应该是永远不会变的!
采纳率:75%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 快时钟域到慢时钟域 的文章

 

随机推荐