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
今天晚上仔细研究了一下UBOOT的时间处理及超时算法(还是蛮简单的,因为没有中断)。在UBOOT中,有两个全局变量与时间处理密切相关:timestamp和lastdec。在init和reset的过程中,timestamp初始化为零,lastdec初始化为timer装载值(一般32位定时器为全F,即0xFFFFFFFF)。定时器工作在自动装载模式,递减计数。
为了使问题简单化,假设是第一次取时间,即timestamp为零,lastdec为0xFFFFFFFF,在get_timer函数中,timestamp被赋值为lastdec减去定时器当前计数值(如果计时器溢出,需进行溢出修正,详见UBOOT代码),并返回timestamp。
在延时函数udelay
相关文章推荐
- UBOOT中的时间处理及延时函数的实现方法
- C或C++调用Windows系统函数 实现延时 或 获取当前时间的处理
- Java实现限定方法执行时间-java 1.5以上的Future类可以执行超时处理
- (用指针方法处理)有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写一个函数实现上述功能,在主函数中输入n个整数,并输出调整后的n个数
- PHP date函数常用时间处理方法
- 在ES5与ES6环境下处理函数默认参数的实现方法
- c语言对时间的处理函数和计时的实现
- Python3中常用的处理时间和实现定时任务的方法的介绍
- spring boot通过Interceptor和HandlerMethodReturnValueHandler实现统一处理为controller返回对象统计处理时间
- c语言对时间的处理函数和计时的实现
- delphi实现延时的方法,很多人首先就想到用timer控件,这里我们不用timer控delphi直接用settimer函数实现延时的方法
- springboot json时间格式化处理的方法
- PHP date函数常用时间处理方法
- 23、STM32 上系统精确延时与获取 micro 时间函数的实现(FreeRTOS 中也能移植)
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
- c语言对时间的处理函数和计时的实现
- SpringMVC或SpringBoot请求时间参数报错处理方法
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- 一种实现Win32消息处理处理函数的新方法 - 基于Thunk实现的类成员消息处理函数
- c语言对时间的处理函数和计时的实现