buf

BE something YOU love and understand
posts - 94, comments - 35, trackbacks - 0, articles - 2
   :: 首页 :: 新随笔 :: 联系 ::  :: 管理

修正U-Boot中ARM S3C44B0延时功能实现

Posted on 2008-11-13 21:47 buf 阅读(606) 评论(0)  编辑 收藏 引用 所属分类: Embedded
基于dave/B2的版本在S3C44B0上移植U-Boot的人可能已经发现了这个问题,即延时功能的实现和U-Boot的核心代码配合的不是很好,反映出来的情况就是比如设定超时为5秒,不过1秒不到就报超时了。原因在于U-Boot要求get_timer_masked()函数返回的时间戳是以ms为单位的,而s3c44b0的实现则不是。

我的修改将timer1的输入时钟Fin配置为8KHz,timestamp依然记录TCNTO1的变化量,get_timer_masked()的返回值为(timestamp>>3),这样就修正到1ms左右。

这里提供一个patch。我的MCLK配置为60MHz,如果你想使用不同的MCLK或Fin,需要重新计算TCFG0。

建议为Fin保持为pow(2,n)KHz, 这样(timestamp>>n)就可以得到ms单位的时间戳了。

只有注册用户登录后才能发表评论。