先前在玩GEC2410時,有個想法,就是在linux下進行調試,由於目標板上電或複位時會發送資訊給PC機的串口,這已在windows下實現過,於是想在linux下看看效果,可是當時我在linux下設好串口後,發現一點反應都沒有,當時以為是自己沒有安裝交叉編譯環境,於是昨天晚上把嵌入式 linux下的交叉編譯環境裝好後,心想這下應該可以拉,沒想到我上電目標板,linux下的串口一直沒有反應,鬱悶,怎麼這樣呢,既然不適交叉編譯環境的原因,總得有個原因吧,於是我上網搜,先前我也夠笨的,怎麼就不知道上網查呢,呵呵,原來是我沒有把VMware的串口開啟,呵呵,馬上關機[關虛擬機器下的系統],在VM->Setting......->點擊ADD,把串口加進來,呵呵設定時盡量不要用自動檢測,要選中串口,反正即使你的虛擬系統啟動後可以隨便改的,同時要把串口設為啟動時就串連拉,這樣,linux下的串口在目標板上電或複位後收到和windows下一樣的資料,哈哈,爽!
環境:
宿主機:Windows7 VMware7.1
虛擬機器:Fedora12
VMware的串口:
一個虛擬機器最多可以添加四個虛擬串口,有如下幾個方法配置虛擬串口:
串連一個虛擬串口到宿主機的物理串口。
串連一個虛擬串口到宿主機上的一個檔案。
在兩個虛擬機器之間建立一個直接的串連,或者將虛擬機器的串口與宿主機的應用程式串連。
為虛擬機器添加串口
首先要保證虛擬機器處於關機(power off)狀態,選擇菜單中的VM -> Settings... ,在Hardware標籤頁中點擊Add按鈕,在Add Hardware Wizard對話方塊中選擇Serial Port,點擊next,
然後要選擇Serial port type,共有三種類型:
1.如果你要使用宿主機的物理串口裝置,選擇Use physical serial port on the host,然後點擊next,選擇你要使用的物理串口即可。
2.如果想要將串口資料輸出到一個檔案,選擇 Output to file,然後next,選擇輸出檔案,該檔案是一個txt文字檔。啟動虛擬機器後做個測試,在命令列中執行:
echo "asdf" >> /dev/ttyS0,
然後開啟輸出檔案,即可看到串口輸出的字串asdf。
3.使用named pipe可以實現兩個虛擬機器或虛擬機器與宿主機的應用程式通過串口串連。選擇Output to named pipe,點擊next,進入如下介面:
輸入管道名,對於windows宿主機,管道名格式為 //./pipe/<namedpipe> ,必須以 //./pipe/開頭。
輸出調試資訊到宿主機上的應用程式:
第一個下拉式功能表選擇This end is the server或This end isthe client,在第二個下拉式功能表選擇The other end is an application。
輸出調試資訊到另一個虛擬機器:
第一個下拉式功能表選擇This end is the server,第二個下拉式功能表選擇The other end is an application。
將兩個虛擬機器用串口串連:
在虛擬機器上安裝Fedora12和ubuntu10.04,為兩個虛擬機器添加串口,
Fedora12的串口設定為:
Ubuntu10.04的串口設定為:
這樣設定後Fedora的串口為serial port 1,裝置名稱為ttyS0,ubuntu的串口為serial port 2,裝置名稱為ttyS1。
測試:
在Fedora下執行:
cat < /dev/ttyS0
在ubuntu下執行:
echo hello > /dev/ttyS1
在Fedora裡可以看到收到的字串hello,說明ubuntu發送和Fedora接收正常,可以互換後做同樣的測試。
語 法
statserial[必要參數][裝置]
功 能
statserial 命令:顯示各個接腳的狀態,常用來判斷串口是否正常,Ctrl+C退出
類似命令: stat
相似命令: linux命令
執行許可權: 超級使用者 普通使用者
命令屬性: 網路通訊
參數
必要參數
-n 不迴圈顯示
-d 十進位顯示
-x 十六進位顯示
選擇參數
無
範例
範例1:顯示串口狀態
[root@linux ~]# statserial /dev/tty1
範例2:只顯示一次串口狀態
[root@linux ~]# statserial -n /dev/tty1