TI中文支持网
TI专业的中文技术问题搜集分享网站

am335x linux内核打印 Underflow in clocksource 'timer1' observe

项目当前参考bbb画了一块板子,现在发现该板子上运行QT程序时会出现偶尔的卡顿;一路跟踪下去,发现是 am335x 的dtmier 1有问题。如标题,在内核中打开 CONFIG_DEBUG_TIMEKEEPING 选项后,发现出问题是内核会打印如下信息:

[19407.204305] WARNING: Underflow in clocksource 'timer1' observed, time update ignored.

[19407.204311] Please report this, consider using a different clocksource, if possible.

[19407.204313] Your kernel is probably still fine.

而后我在内核中加了些调试信息,发现在出问题时,timekeeping_get_delta 通过调用 tk_clock_read 得到的 cycle 数有异常,下面是几次出异常时打印的 last 和 now 以及 now – last 得到的 delta 值:

root@am335x-evm:~# [ 8450.894885] WARNING: Underflow in clocksource 'timer1' observed, time update ignored.
[ 8450.894891] Please report this, consider using a different clocksource, if possible.
[ 8450.894893] Your kernel is probably still fine.
[ 8450.894908] underflow_delta:4294826624, underflow_now:957480960, underflow_last:202821084544, underflow_mask:4294967295

[11198.954326] WARNING: Underflow in clocksource 'timer1' observed, time update ignored.
[11198.954331] Please report this, consider using a different clocksource, if possible.
[11198.954333] Your kernel is probably still fine.
[11198.954353] underflow_delta:4294588800, underflow_now:2486173696, underflow_last:268774524544, underflow_mask:4294967295

root@am335x-evm:~# [19407.204305] WARNING: Underflow in clocksource 'timer1' observed, time update ignored.
[19407.204311] Please report this, consider using a different clocksource, if possible.
[19407.204313] Your kernel is probably still fine.
[19407.204332] underflow_delta:4294914123, underflow_now:1916003403, underflow_last:465772524544, underflow_mask:4294967295

[14419.304466] WARNING: Underflow in clocksource 'timer1' observed, time update ignored.
[14419.304471] Please report this, consider using a different clocksource, if possible.
[14419.304473] Your kernel is probably still fine.
[14419.304491] underflow_delta:4294613950, underflow_now:2465202176, underflow_last:346062939202, underflow_mask:4294967295

显然kernel 在 update_wall_time 时前后两次读到timer 1到cycle数是不正常到;这里想请教下各个大侠,可能导致这个现象的原因是啥?

这个问题出现的概率不高跑一个白天可能才出现一两次,但却比较要命。这边做了些尝试,根据datasheet中以下的框图将 timer1 的 input source 由 CLK_M_OSC 换成 CLK_32KHZ, 内核就没有该打印,问题似乎的到解决;但将定时器但时钟源由 24M 降到 32K,这个对系统对性能应该是有较大影响的;特别在以后项目还打算采用RT-LINUX版本来完成一些实时性要求很高的任务。所以这个解决方案不是很可取。

实际上我们也用示波器量过系统的24M晶振,从示波器的测量结果看,系统的外部24M晶振频率很稳定波动很小,是符合我们的使用要求的。所以,现在怀疑是不是配置这一块有问题? 请各位大侠不吝赐教。

yongqing wang:

在BBB上跑有这个问题吗

yongqing wang:

在BBB有这个问题吗

quan liang:

回复 yongqing wang:

BBB上没有这个问题;但我对比了我们板子和bbb在dtimer1 、dtimer2 上的配置,并没有什么区别;

yongqing wang:

回复 quan liang:

是否尝试过直接将BBB的系统烧到你的板子上试试

quan liang:

回复 yongqing wang:

这个倒是个办法,我试试。

赞(0)
未经允许不得转载:TI中文支持网 » am335x linux内核打印 Underflow in clocksource 'timer1' observe
分享到: 更多 (0)