我在linux系统下写的串口程序,需要实时的读取串口来的数据,但串口来的数据又是不定时的,想用中断的方式响应,看了一些资料,总觉的还所有些不妥。

首先,select函数,他需要一直在while中检测读文件描述符是否有变化,但串口来了数据会改变文件描述符吗?(即使我的串口一直处在open状态中)另外,即使能检测到文件描述符有了变化,那程序也都一直在while中,CPU将不能再做其他的事情。

其次,signal函数,串口来了数据,系统会自动广播SIGIO信号吗?即使能捕捉的这个信号,程序进入中断服务子程序中执行,那下一个串口数据又如何响应,难道在中断子程序的结尾再调用 signal函数吗?那CPU又将陷入这个等待串口数据的程序中,而不能做其他的事情了,而且SIGIO信号怎么能保证就是串口来的呢?

最后,tasklet,这个中断机制如何实现,他应该是在串口硬中断服务程序中定义中断的下班部分的入口,但这个硬中断服务程序又在什么地方?需要修改内核吗?

上只是我个人的理解,如有不正确的,请过来人指教。我现在希望串口数据能像以前用单片机一样,真正实现中断响应,只有当串口来数据时,CPU或者内核才会去执行串口读相关动作,串口没有数据时,CPU或者内核是完全不会理会串口的,不知哪位高人可以指点一下,如何来实现?

|

兄弟,0 分贴没人关注的...

|

可以起一个线程,用select函数,其实这个函数很好用,你看看书,unix系统编程、unix网络编程上都有详细介绍。

|

首先,select函数,他需要一直在while中检测读文件描述符是否有变化,但串口来了数据会改变文件描述符吗?(即使我的串口一直处在open状态中)另外,即使能检测到文件描述符有了变化,那程序也都一直在while中,CPU将不能再做其他的事情。

select 的函数不需要每个cpu的时间片都去查询文件描述符是否发生过变化,

while(1)

{

sleep(200);

select();//这样就不会造成cpu的一直占用了。

}

|

http://www.faqs.org/docs/Linux-HOWTO/Serial-Programming-HOWTO.html

|

linux 下的标准串口,在核心的驱动程序中是通过中断方式处理的。

你如果做的是应用层的程序,那么可以采用 select 方式监测“读文件描述符”。

select 也并非你说的那样一直 while 等待方式,它是在中断中接收到对端发来

的数据后唤醒并通知应用程序:串口接收到数据 ...

如果你要像单片机方式,那么就需要实现一个自己的串口驱动运行在核心 ...

linux uart中断程序,linux 串口中断实现相关推荐

  1. 51单片机外部中断实验 设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管

    设置中断优先级寄存器,当有外部中断0请求中断时,中断程序执行发光二极管程序,在此过程中,外部中断1也有中断请求,外部中断0的中断程序将被中断去执行外部中断1的中断程序(数码管加1显示程序). #inc ...

  2. linux块设备驱动中断程序,linux设备驱动归纳总结(六):1.中断的实现

    linux设备驱动归纳总结(六):1.中断的实现 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  3. linux连接到程序,Linux下C程序的链接过程

    今天看到一个很有意思的小程序,它让我对Linux下C程序的编译链接有了一个全新的认识! 这个程序的就是写一个简单的输出"hello World!": 要求:1.不使用C运行库,写一 ...

  4. 蓝桥杯单片机比赛学习:7、中断系统之串口中断的基本原理

    这一节我们讲一下蓝桥杯单片机比赛中断中的最后一个模块--串口.中断的其他模块在我的个人主页(4条消息) Do My Best的博客_CSDN博客-蓝桥杯单片机比赛学习领域博主有兴趣的可以去学习. 通信 ...

  5. 中断程序_ABB机器人中断程序详解(安川FANUC)

    ABB机器人中断程序详解 1.新建一个中断程序 test001,类型中断 TRAP hanmianshadiaoliao StopMove; SetDO DO04, 0; !Stop; StartMo ...

  6. linux 查找某个程序,Linux查找特定程序whereis实例详解

    Linux 查找特定程序 whereis whereis 命令主要用于查找程序文件,并提供这个文件的二进制可执行文件.源代码文件和使用手册存放位置. 1.查找命令程序 例如,查找 touch 命令 [ ...

  7. linux亮度调节程序,linux调节屏幕亮度

    新建三个文本文件并给予执行权限: up.sh if [ ! -w /sys/class/backlight/intel_backlight/brightness ];then echo "p ...

  8. Linux uart寄存器读写,Linux下读写UART串口的代码

    Linux下读写UART串口的代码,从IBM Developer network上拿来的东西,操作比較的复杂,就直接跳过了,好在代码能用,记录一下- 两个实用的函数- /** *@brief 设置串口 ...

  9. 嵌入式linux如何下载程序,Linux平台的下载程序-嵌入式系统-与非网

    有许多网络文件下载工具可以在Windows平台下很好地工作,如NetAnts."网际快车".TelePro等,还有像WebZip那样功能强大的离线浏览器.这些工具使我们可以在Win ...

最新文章

  1. Juce源代码分析(一)Juce的优势
  2. 间接通过new 来申请一个二维的堆内存数组
  3. 【Python】监控视频中运动目标检测的代码实现及效果展示
  4. wxWidgets:wxDataViewEvent类用法
  5. Linux 调优方案, 修改最大连接数(ulimit命令)
  6. 你以为AlphaGo只是下围棋厉害?不,它还能用来优化金融交易策略参数
  7. 外联接、自联接与联合
  8. 静态工厂方法代替构造器实例_静态工厂方法与传统构造方法
  9. mysql [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘
  10. JavaScript冒泡排序算法(1)
  11. span 居中_H5元素的水平垂直居中布局总结
  12. odbc删除oracle驱动,恢复ODBC驱动程序(ODBC driver)
  13. [C#] 代码混淆和加壳
  14. 我的世界java雪村种子_我的世界:5个珍藏级开局种子,第4个大家都在找,最后1个最富有...
  15. 爬虫项目:大麦网分析
  16. 红蜻蜓抓图软件测试简历,红蜻蜓抓图精灵
  17. 2015阿里巴巴北京年会——马云“北伐”讲话
  18. MacBook+eGPU编译安装pytorch、tensorflow(OSX10.13.3,python3.6,cuda9.1,cudnn7)(未完成)
  19. 1278:【例9.22】复制书稿(book)
  20. ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn‘t match value count at row 1

热门文章

  1. js 页面载入时的执行顺序
  2. 创业与老子的顺其自然
  3. leetcode 241 python
  4. SQL必知必会-检索数据
  5. vue可编辑div_vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
  6. XEngine:深度学习模型推理优化
  7. 如何将知识引入机器学习模型提升泛化能力?
  8. 论文解读丨空洞卷积框架搜索
  9. 什么是数字孪生,它的应用价值在哪里?
  10. 【华为云技术分享】深入浅出Sqoop之迁移过程源码分析