2010-08-31 37 views
1

目前我们正在使用Fedora Core 3作为我们正在开发的系统。该系统需要通过串行通信。通信的时机对时序至关重要。目前看来,串行驱动程序在将数据从4k fifo推送到16byte硬件uart时出现延迟。Linux串行端口优先级

有没有什么办法强制Linux用更高的优先级来对待这个动作?

回答

2

尝试使用setserial设置low_latency选项。

默认情况下,串行端口针对吞吐量而非延迟进行了优化,我认为这个选项可以让您对其进行更改。

+0

这似乎有一点帮助,但主要与RX有关。欢呼声 – 2010-09-01 22:53:01

1

如果您有严格的实时处理要求,则最好使用基于此构建的分布,例如RTLinux

+0

欢呼,但似乎我们锁定使用fedora核心3. – 2010-09-01 22:52:35

+0

我怀疑CPU的延迟造成它。在大多数系统中,大多数情况下,除非服务器过载或交换,否则对于串行端口,您的响应速度足够快。 – MarkR 2010-09-02 08:20:33

1

考虑让设备供应商在时间无关紧要的情况下将协议更改为不那么笨的协议。

有一个时序关键的串行协议,或者确实需要你在发送下一个消息之前确认一条消息,这真的很愚蠢。

rs232风格的串口真的很慢,而任何使它们变得更糟的东西是一个坏主意。

我写了一个程序来控制一个有愚蠢协议的设备 - 每个数据字节被单独确认(duuh!),下一个数据直到ack到达才被发送 - 这意味着数据传输速率是它应该是它的一小部分。

看看zmodem协议,例如,它不那么愚蠢。

更好的是,让供应商进入90年代并使用USB。

+0

嘿马克 我与你一路在此。但系统是固定的。遗产是一个婊子。 该系统的下一个版本将使用更多最新的技术。 – 2010-09-03 13:26:34