chinadandan 发表于 2015-11-12 17:18

关于时钟请教……

最近看uboot的源码,发现下面的函数

__attribute__((nomips16)) ulong get_timer(ulong base)
{
return mips_count_get() - base;
}
看到这里返回mips的conut。然后很奇怪,这个一个count是多少呢。然后我们经常说的滴答,那么一个滴答是多久呢?这个和cpu的主频又有什么关系呢?又何时间是什么关系呢?求大神指导……:roll:

chinadandan 发表于 2015-11-13 18:09

木有人吗,求大神指导

chinadandan 发表于 2015-11-16 11:17

:$竟然木有人吗

chinadandan 发表于 2015-11-18 14:40

人呢{:yxh125:}

amarant 发表于 2015-11-18 16:49

不是没有人,是你问问题的方式不太对。

你都没有把 mips_count_get() 函数展开,难道要别人为了回复你的帖子专门去看看源代码吗

我从这个函数名去猜,它应该就是读取 mips 的 count 寄存器。 mips 架构提供一对寄存器做 timer 接口,即 count 和 compare。
count 寄存器的值可能和 cpu 频率相关,也可能不相关,看具体 cpu 的实现。这些细节可以阅读 mips 手册卷三。

你们经常说的滴答可能说的是 linux 中的 tick,这个就是每隔一段时间的一个时钟计数。在一定时间内更新系统信息。在 NO_HZ 的配置下,又有一些区别。

chenyu105 发表于 2015-11-19 11:04

嗯 per cpu的count寄存器,一般32位,也有专门的时钟源寄存器counter可能是全局的64位

wangyifei2012 发表于 2015-11-19 14:11

runtest北京

chinadandan 发表于 2015-11-20 11:17

amarant 发表于 2015-11-18 16:49 static/image/common/back.gif
不是没有人,是你问问题的方式不太对。

你都没有把 mips_count_get() 函数展开,难道要别人为了回复你的 ...

不好意思,第一次发帖子,不太熟悉。
__attribute__((nomips16)) static u32 mips_count_get(void)
{
        u32 count;

        asm volatile ("mfc0 %0, $9" : "=r" (count) :);
        return count;
}


就是取了寄存器9的值。这样

chinadandan 发表于 2015-11-23 17:12

请顶起来{:yxh36:}

chinadandan 发表于 2015-11-26 10:56

{:yxh34:} 表示木有人吗,anyONE?
页: [1] 2
查看完整版本: 关于时钟请教……