Linux系統下的四個串口的識別和使用問題

來源:互聯網
上載者:User

板子有3個獨立的RS232和一個RS232/485複用口。但是在實際測試用,遇到個問題。1口和2口都能正常工作(後來發現也是有問題的,讀感應器資料的時候,讀不完全),但是3口和4口卻出現了很奇怪的現象。

主要表現為:

1.可以輸入輸出

2.輸入輸出速率很慢

3.探索資料在緩衝裡頭,每次大概只能輸出12個字元左右(不確定的長度)。

開始一直沒有找到原來,後來諮詢別的技術人員,估計是中斷問題。

以google發現了下面的文章:原始出處,問題解決了,很感謝高手的指點。可惜還沒來得及去深入。

LINUX預設支援四個串口:COM1(ttyS0),COM2(ttyS1),COM3(ttyS2),COM4(ttyS3)(較新的linux中已不使用cuaX來區分撥入撥出),通常情況下,COM1和COM3共同使用IRQ4,COM2和COM4共同使用IRQ3。

雖然LINUX支援共用中斷技術,但它無法發現實際的物理中斷衝突。在上述情況下,COM3和COM4因為中斷衝突而無法正常使用。本文介紹了如何在Red Hat 8.0環境下使用COM3和COM4。

由於當前開發項目需要同時使用四個串口,而所用的開發用工控機恰好有四個,省去了買多口卡的麻煩,直接編程使用了COM3和COM4。當進行測試時,問題出現了:COM3和COM4收發資料非常的慢,幾個BYTES的資料在115.2K的通訊速率下要一二十秒才能發出或收到,完全不能滿足對應用的要求。

通過查檢資料,確認這是一種典型的中斷衝突故障,使用方法如下:

setserial /dev/ttyS2 irq 0

再使用通訊程式,現在資料轉送就看不到有明顯的延遲了。這是由於將COM3設定為irq0中斷時,裝置實際上並未使用中斷,而是使用了polling技術,從而證明了故障是由於中斷機製造成的,有衝突發生。

主板上COM3和COM4的跳線表明可使用IRQ5和IRQ7,於是設定好跳線並運行

setserial /dev/ttyS2 irq 5

setserial /dev/ttyS2 irq 7

使用通訊程式,發現故障依然,懷疑仍有衝突。查閱資料知,IRQ5和IRQ7通常為並口使用,但當前系統未使用並口啊。進入BIOS發現裡面設定了並口並佔用IRQ7,將該項DISABLE掉。似乎和IRQ5沒多大關係,發現設定中IRQ5和7為"PCI/ISA PnP",改為"Legacy ISA"方式後,重啟,COM1--COM4均可正常使用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.