当前位置:  技术问答>Web服务器/前端 iis7站长之家

linux 串口中断实现

    来源: 互联网  发布时间:2016-12-02

    本文导语:  我在linux系统下写的串口程序,需要实时的读取串口来的数据,但串口来的数据又是不定时的,想用中断的方式响应,看了一些资料,总觉的还所有些不妥。 首先,select函数,他需要一直在while中检测读文件描述符是...

我在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 等待方式,它是在中断中接收到对端发来
的数据后唤醒并通知应用程序:串口接收到数据 ...

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

    
 
 

您可能感兴趣的文章:

  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • Linux 中用java语言写串口程序,提示找不到串口
  • 高分求助:我笔记本没有串口,在linux下要和一个串口设备连,怎么办?
  • 关于linux串口通信中写串口的问题
  • 在虚拟Linux系统下能进行串口通讯吗?最好给个串口通讯的代码!谢谢!
  • linux下串口发送数据用串口精灵接受不到或为全零
  • 嵌入式linux,串口初始化时,无法设置串口属性
  • linux串口驱动该怎么写
  • linux下如何清空串口的输入输出缓存
  • linux下怎么监控串口?
  • vmware 上 linux 串口问题
  • linux下串口通信的问题
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 在线等待,求助LINUX下串口问题
  • 请教一个linux串口通讯问题?
  • linux 串口打印
  • 请问,那位高手研究过linux下的串口驱动程序?
  • 问一个LINUX下串口的问题
  • 如何在linux上使用串口设备
  • 在linux上怎么编写一个模块来提供某个中断的中断处理程序呢?而且有哪些中断可以自己添加中断处理程序呢?
  • Linux 系统中的中断是不是没有中断优先级
  • 在Linux驱动中如何开中断和关中断?
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • linux内核中的中断向量号是如何与硬件的中断Pin关联的?
  • linux中断处理 如何调用内核的中断操作
  • 关于linux内核中中断处理的问题
  • 关于linux驱动中的中断速度问题
  • 在linux中,中断处理是否作为单独的进程执行?
  • arm+linux下,中断怎么使用呢?
  • linux中r3如何进行中断响应
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下通过crond实现自动执行程序
  • Linux和Unix相对WIN、NETWARE有什么好处?他们之间有什么区别?WIN、NETWARE能实现的功能LINUX和UNIX能实现吗?
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux下如实现与window下的驱动器实现文件共享??
  • Linux内存文件系统(ramdisk)的三种实现方式
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • linux内存文件系统ramfs实现原理
  • 在linux下如何编程实现nslookup命令实现的IP地址和域名互相转换的功能?
  • Linux 共享内存介绍及实现代码
  • 我需要一个模型,在 LINUX C 下。实现线程间的控制,执行,阻塞,再执行。。。。。不知道如何实现。
  • linux下grep命令实现查找多个关键字(与关系和或关系)
  • 我想做linux下的还原备份,实现与还原精灵虚拟还原等一样的功能,应该怎么做?另外现在有实现这种功能的成熟产品是哪一种?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 关于linux c程序实现自动实现telnet的问题
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 请问高手linux中用md5来实现一串字符串的加密,用c++/c实现
  • 在linux实现在任意给定的目录查找文需要的件的程序? 下面的实现思路可不可以呢????
  • 请问:有没有人在Linux下实现过计费网关?
  • 关于XP系统下批处理文件如何实现执行linux下脚本,从而实现版本的自动化编译
  • 如何在linux下实现event事件机制
  • Linux音频, Linux下能否实现 实时语音聊天 ?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3