技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務(wù)器類 >

Linux操作系統(tǒng)下的四個串口

來源:技術(shù)員聯(lián)盟┆發(fā)布時間:2018-10-29 00:24┆點擊:

  最有有個項目,用到了PC104的板子(PCM-3341),Linux的系統(tǒng)。

  但是在項目中至少要用到3個RS232,看datasheet,夠用。板子有3個獨立的RS232和一個RS232/485復(fù)用口。但是在實際測試用,遇到個問題。1口和2口都能正常工作(后來發(fā)現(xiàn)也是有問題的,讀傳感器數(shù)據(jù)的時候,讀不完全),但是3口和4口卻出現(xiàn)了很奇怪的現(xiàn)象。

  主要表現(xiàn)為:

  1.可以輸入輸出

  2.輸入輸出速率很慢

  3.發(fā)現(xiàn)數(shù)據(jù)在緩存里頭,每次大概只能輸出12個字符左右(不確定的長度)。

  開始一直沒有找到原來,后來咨詢別的技術(shù)人員,估計是中斷問題。

  以google發(fā)現(xiàn)了下面的文章:原始出處,問題解決了,很感謝高手的指點??上н€沒來得及去深入。

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

  雖然LINUX支持共享中斷技術(shù),但它無法發(fā)現(xiàn)實際的物理中斷沖突。在上述情況下,COM3和COM4因為中斷沖突而無法正常使用。本文介紹了如何在Red Hat 8.0環(huán)境下使用COM3和COM4。

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

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

  setserial /dev/ttyS2 irq 0

  再使用通訊程序,現(xiàn)在數(shù)據(jù)傳輸就看不到有明顯的延遲了。這是由于將COM3設(shè)置為irq0中斷時,設(shè)備實際上并未使用中斷,而是使用了polling技術(shù),從而證明了故障是由于中斷機制造成的,有沖突發(fā)生。

  主板上COM3和COM4的跳線表明可使用IRQ5和IRQ7,于是設(shè)置好跳線并運行

  setserial /dev/ttyS2 irq 5

  setserial /dev/ttyS2 irq 7

  使用通訊程序,發(fā)現(xiàn)故障依然,懷疑仍有沖突。查閱資料知,IRQ5和IRQ7通常為并口使用,但當前系統(tǒng)未使用并口啊。進入BIOS發(fā)現(xiàn)里面設(shè)置了并口并占用IRQ7,將該項DISABLE掉。似乎和IRQ5沒多大關(guān)系,發(fā)現(xiàn)設(shè)置中IRQ5和7為"PCI/ISA PnP",改為"Legacy ISA"方式后,重啟,COM1--COM4均可正常使用。