Linux 下 Serial Port 對接並建立IP連線

文章標題很長,總結三個字就叫做 ppp (Point-to-Point Protocol)。

因為工作上會用 FPGA 產生一個 Serial port,所以要驗証其穩定性,不上 IP 的話,其實沒有什麼方便的工具可以快速完成。如能透過 Serial Port 傳送 IP 封包,就可以利用 IPerf 做長時間的單向或雙向測試,快速又可靠。

另外一個用途是要讓2台電腦直接對連。大家可能會想說用網路線不就好了,但 Ethernet 用雙絞線其實只能支援到 100 公尺,若使用 RS422  則可以到達 1200 公尺 (100Kbits/s),在工業或軍事上,有其方便性。

 

本文除了會提供連線指令,並會說明如何以 VMWare 來摸擬此操作。

 

不廢話的二行指令

針對已經瞭解 Linux 或有現成裝置的人,就先提供指令給大家參考,直接建立連線。

端點1和端點2指令主要的不同,就是 IP 設定要反轉過來,否則會拒絕連線。當成功連線時,就會產生一組 ppp0 的網路介面,並設定為如上的 IP,此時就可以與對方連線了。

端點1

端點2

透過 VMWare 模擬 Serial Port 對接

要使用 VMWare 模擬 Serial Port,並將兩台虛擬機的 Serial Port 連接起來,需要各別新增一個 Serial Port,並設定相同使用的 named pipe,一主一副即可。

虛擬機1

虛擬機2

透過配置2台虛模機,使用2個相同的 named pipe,一台為 server,一台為 client ,開機後即可讓兩台的 Serial Port 相連。在 VMWare 中,Serial Port 1對到 Linux 的 /dev/ttyS0,而 Serial Port 2對到 /dev/ttyS1。開機後,要驗証是否有設定成功,可以下面命令驗証。

先執行 vm2 指令,再執行 vm1,應該就可在 vm2 看 hello 的字串印出。由於是使用軟體模擬,所以 baudrate 不匹配也可以通連,在實機上還是要設定的,設定 baudrate 為115200指令如下

此時再執行開頭的 pppd 指令,就可將2台建立連線了。

當使用 iperf 測試時,速度會超過 115200,這在實機上也不會發生。

結語

在 Serial Port 上運行 IP 說實話也在很久以前玩過了,但從來沒有實用過,想不到會在這次的工作機會裡面用到。知識的累積往往無法一下子看到成果,但當有一天有需要時,食譜中的每一道材料都有,自然就可以把問題結決掉了。

參考連結

  1. Using PPP across a null modem (direct serial) connection
  2. Add a Virtual Serial Port to a Virtual Machine

 

 

 

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 7 + 1 =