[转]uboot中的延迟处理
来源:互联网 发布:阿里云mysql备份 编辑:程序博客网 时间:2024/05/22 04:48
u-boot很多地方用到了延时操作,主要是cpu下面的interrupts.c文件中的udelay和get_timer函数get_timer_masked函数以及表示当前时间的全局变量timestamp和上一次访问定时器的时间lastdec实现的。
1 实现延时要用到一个定时器,u-boot采用查询定时器TC的方法得到当前的时间点,所以需要根据定时器原理实现READ_TIMER宏,从代码get_timer_maskd代码风格上判断大部分定时器都应该是TC递减的,但LPC2468的定时器是TC增加的;
2 根据u-boot的最小时间粒度1us算出CFG_HZ参数,保证TC增1小于1us且1us为TC值的整数倍。参考5
3 u-boot默认延时时间不会超过TC复位周期的2倍大小,所以根据lastdec和now的TC值大小判断出TC是否循环过一次,来得到timestamp,并更新lastdec,见get_timer_masked;
4 get_timer的用法是先ts = gettimer(0)得到当前的timestamp,并以此为基点,然后循环判断要求的等待条件是否满足,循环内则比较gettimer(ts)与要求的延时量的大小,如超时则退出程序;
5 udelay的最小粒度是1us,可以根据其最小粒度选择合适的CFG_HZ参数是其满足1us延时增加TC的这个整数倍。同时根据最大值是32bit,以及定时器TC的数据宽度为16位还是32位估算出定时器最大延迟时间
http://blog.chinaunix.net/uid-12163495-id-1988720.html
- [转]uboot中的延迟处理
- 中断处理中的延迟调度和内核抢占
- UBOOT中的时间处理及延时函数的实现方法
- UBOOT中的时间处理及延时函数的实现方法
- 数字信号处理群延迟
- 一个延迟处理事例
- angularjs $watch 延迟处理
- Handler延迟消息处理
- 小程序---延迟处理
- Hibernate中的延迟加载
- 多媒体会议系统中的延迟
- AIR中的延迟呈现
- Hibernate中的延迟加载
- linux中的延迟函数
- KlayGE中的延迟渲染
- linux中的延迟函数
- 学习“内核中的延迟”
- js中的延迟加载
- 程序启用文本输入
- C++ - Read / Write std::map to a file
- How to use Django with uWSGI
- oracle中nvarchar和varchar类型转换
- 未预编译文件“/default.aspx”,因此不能请求该文件
- [转]uboot中的延迟处理
- SAN的基础之存储设备
- 【OL最爱的简单瘦腰瑜伽——猫伸展式】
- Makefile里的sed指令
- GetPageSize和GetPageScroll:获取页面大小、窗口大小和滚动条位置
- c++文本输入、输出(1)
- 修改app.config
- 数组与内存
- orcad创建网表时有如下ERROR的解决方法