2010-08-31 65 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