您的位置:首页 > 其它

UBOOT中的时间处理及延时函数的实现方法

2010-04-10 00:27 429 查看
UBOOT中的时间处理及延时函数的实现方法  前面移植UBOOT的时候饥不择食,没有仔细看延时处理函数,自己用一个非常简单的延时函数糊弄过去了。后来虽然可以运行了,但超时算法全不能用或者会出错。典型的问题就是sleep命令不能正确执行,无论是sleep 0,还是sleep 9999,都是一下子就过。
  今天晚上仔细研究了一下UBOOT的时间处理及超时算法(还是蛮简单的,因为没有中断)。在UBOOT中,有两个全局变量与时间处理密切相关:timestamp和lastdec。在init和reset的过程中,timestamp初始化为零,lastdec初始化为timer装载值(一般32位定时器为全F,即0xFFFFFFFF)。定时器工作在自动装载模式,递减计数。
  为了使问题简单化,假设是第一次取时间,即timestamp为零,lastdec为0xFFFFFFFF,在get_timer函数中,timestamp被赋值为lastdec减去定时器当前计数值(如果计时器溢出,需进行溢出修正,详见UBOOT代码),并返回timestamp。
  在延时函数udelay
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐