我正在Linux上通过串口实现一种协议。该协议基于请求-响应模式,因此吞吐量受发送数据包并获得响应所需的时间限制。这些设备大多是基于ARM架构且运行Linux >=3.0。我在试图将往返时间降至10ms以下(115200波特率,8数据位,无校验,每个消息7字节)时遇到了麻烦。
哪种IO接口提供的延迟最低:select、poll、epoll还是使用ioctl手动轮询?阻塞或非阻塞IO会影响延迟吗?
我尝试使用setserial设置low_latency标志,但似乎没有效果。
是否有其他方法可以尝试降低延迟?由于我控制所有设备,甚至可能对内核进行修补,但最好不要。
----编辑----
串行控制器使用的是16550A。
哪种IO接口提供的延迟最低:select、poll、epoll还是使用ioctl手动轮询?阻塞或非阻塞IO会影响延迟吗?
我尝试使用setserial设置low_latency标志,但似乎没有效果。
是否有其他方法可以尝试降低延迟?由于我控制所有设备,甚至可能对内核进行修补,但最好不要。
----编辑----
串行控制器使用的是16550A。