【发布时间】:2016-09-02 10:02:04
【问题描述】:
我有两个设备通过串口相互连接。 一个作为主机运行,另一个作为从机运行。
主设备是一个基于 ARM 的套件,运行 linux。
目前的情况是master发送命令然后轮询com端口直到slave回复。
现在我不想使用轮询。我需要处理器执行其他任务,直到从机回复。
我知道解决方案是使用中断,但找不到更多详细信息。 我找到了一些使用信号的解决方案。它以非阻塞模式读取 tty,然后在数据准备好时发送 io 信号。
那么,串行通信中的中断和信号有什么区别呢? 使用中断时我应该编写设备驱动程序或内核模块吗? 为了不使用轮询,还有其他有效的解决方案吗?
【问题讨论】:
-
“我需要处理器来完成其他任务......”——这是任何高效程序的给定条件,也是嵌入式系统所必需的。 “还有其他有效的解决方案吗...” -- 你从使用 blocking read() 开始,可能是在非规范模式下.让操作系统为您完成调度工作,而不必为异步 I/O 和信号而烦恼。如果您的程序需要,请使用线程。见stackoverflow.com/questions/25996171/…
标签: linux linux-kernel serial-port signals interrupt-handling