linux多线程驱动中调用udelay()对系统的影响
2012-07-16 17:20
176 查看
以前没考虑过这个问题,而且之前可能运气比较好,虽然用了udelay但也没出什么奇怪的问题,今天在
CSDN上看到了liukun321咕唧咕唧的帖子,觉得很受用,再此做简要的记录和分析:
驱动建立线程的是内核线程 跟普通进程一样都是可以调度的,然而udelay是靠死循环来实现的延迟,当你的内核线程没有占用cpu时,很可能超过1ms都不会执行你的程序,100us是小于进程可能的最小时间片的 (HZ=
1000时,1ms才产生一个时钟中断,假设时间片为1个jiffes,1ms才可能发生进程切换,轮到你的内核线程),所以这是靠不住的,会受到其他阻塞进程的影响。对于时序要求比较严格的硬件,产生的问题就是硬件无法工作。
所以我们需要使用内核高精度定时器 ,一般的内核定时器都不能达到us级,这种时间级别的操作,应该都有装用的硬件控制器来做。
CSDN上看到了liukun321咕唧咕唧的帖子,觉得很受用,再此做简要的记录和分析:
驱动建立线程的是内核线程 跟普通进程一样都是可以调度的,然而udelay是靠死循环来实现的延迟,当你的内核线程没有占用cpu时,很可能超过1ms都不会执行你的程序,100us是小于进程可能的最小时间片的 (HZ=
1000时,1ms才产生一个时钟中断,假设时间片为1个jiffes,1ms才可能发生进程切换,轮到你的内核线程),所以这是靠不住的,会受到其他阻塞进程的影响。对于时序要求比较严格的硬件,产生的问题就是硬件无法工作。
所以我们需要使用内核高精度定时器 ,一般的内核定时器都不能达到us级,这种时间级别的操作,应该都有装用的硬件控制器来做。
相关文章推荐
- linux多线程驱动中调用udelay对整个系统造成的影响
- linux多线程驱动中调用udelay()对整个系统造成的影响(by liukun321咕唧咕唧)
- linux多线程驱动中调用udelay()对整个系统造成的影响(by liukun321咕唧咕唧)
- Linux设备驱动--系统调用
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- 嵌入式Linux驱动学习之路(九)Linux系统调用、驱动程序框架
- linux驱动开发要知道的那些知识(三)------container_of,定时器 及系统调用
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- Linux下文件的堵塞与非堵塞对部分系统调用的影响
- linux驱动开发-经典的系统调用BUG
- Linux下文件的阻塞与非阻塞对部分系统调用的影响
- 内核驱动开发第五天linux系统调用
- linux驱动系统调用ioctl()的cmd参数详解【字段划分图】
- linux驱动开发-系统调用
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux系统调用的实现机制分析
- Linux下文件的阻塞与非阻塞对部分系统调用的影响
- linux 系统调用总结
- ARM linux系统调用的实现原理
- Linux 下系统调用的三种方法
- s3c2440开发板Linux系统下eeprom驱动制作以及读写程序