当前位置: 首页 > news >正文

linux多线程驱动中调用udelay()对整个系统造成的影响(by liukun321咕唧咕唧)...

以前没考虑过这个问题,而且之前可能运气比较好,虽然用了udelay但也没出什么奇怪的问题,今天在

CSDN上看到了一篇关于此问题帖子,觉得很受用,再此做简要的记录和分析:

      驱动开的是内核线程 跟普通进程一样是可以调度的,而udelay是靠死循环实现的延迟,当你的内核线

程没有占用cpu时,很可能超过1ms都不会执行你的程序,100us是小于进程可能的最小时间片的 (HZ=

1000时,1ms才产生一个时钟中断,假设时间片为1个jiffes,1ms才可能发生进程切换,轮到你的内核线

程),所以这是靠不住的,会受到其他阻塞进程的影响。对于时序要求比较严格的硬件,产生的问题就是

硬件无法工作。
      所以我们需要使用内核高精度定时器 ,一般的内核定时器都不能达到us级,这种时间级别的操作,应

该都有装用的硬件控制器来做。

转载于:https://www.cnblogs.com/Ph-one/p/4678333.html

相关文章:

  • udelay、mdelay、ndelay、msleep使用比较说明
  • A8下超级终端调试问题
  • Linux多线程编程(不限Linux)转
  • Linux 线程优先级
  • 男儿当自强
  • JNI编程(一) —— 编写一个最简单的JNI程序
  • JNI编程(二) —— 让C++和Java相互调用(1)
  • JNI编程(二) —— 让C++和Java相互调用(2)
  • char*,const char*和string的相互转换
  • 请问什么是UTF字符串?
  • jni数据问题
  • sprintf
  • 锦上
  • eMMC(KLM8G2FE3B)
  • jni调试3(线程调试env变量问题)
  • 【刷算法】求1+2+3+...+n
  • Angular6错误 Service: No provider for Renderer2
  • echarts的各种常用效果展示
  • ES6系列(二)变量的解构赋值
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • jQuery(一)
  • ubuntu 下nginx安装 并支持https协议
  • Vue学习第二天
  • webpack入门学习手记(二)
  • windows下mongoDB的环境配置
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 巧用 TypeScript (一)
  • 学习笔记TF060:图像语音结合,看图说话
  • 移动端解决方案学习记录
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • "无招胜有招"nbsp;史上最全的互…
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #每日一题合集#牛客JZ23-JZ33
  • (3)nginx 配置(nginx.conf)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (剑指Offer)面试题34:丑数
  • (十)T检验-第一部分
  • (四)c52学习之旅-流水LED灯
  • (一) storm的集群安装与配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)为C# Windows服务添加安装程序
  • .net core控制台应用程序初识
  • .NET Project Open Day(2011.11.13)
  • .net 获取url的方法
  • .net6+aspose.words导出word并转pdf
  • .NET下ASPX编程的几个小问题
  • .NET序列化 serializable,反序列化
  • .Net中间语言BeforeFieldInit
  • @angular/cli项目构建--Dynamic.Form
  • @Valid和@NotNull字段校验使用
  • [《百万宝贝》观后]To be or not to be?
  • [C# 网络编程系列]专题六:UDP编程
  • [C语言]编译和链接