摘要: 嵌入式開發(fā)領(lǐng)域經(jīng)常使用串口通信,但串口通信方式占用很多硬件資源,設(shè)備的利用率較低。文章研究了基于Linux VMware虛擬機進行串口通信的Use Physical Serial Port模式、Use Out File模式以及Use Named Pipe模式的功能和特點,給出了基于VMware構(gòu)建串口通信環(huán)境的方法以及具體實現(xiàn)過程。
關(guān)鍵詞: 虛擬化; Linux; VMware; 串口通信
中圖分類號:TP391.9 文獻標志碼:A 文章編號:1006-8228(2012)10-12-02
引言
在嵌入式開發(fā)領(lǐng)域,軟件的開發(fā)、調(diào)試、測試等都需要使用串口進行通信。串口通信是計算機之間、計算機與外部設(shè)備之間最常用的通信方式之一。嵌入式開發(fā)過程中,為進行串口調(diào)試,需要占用多臺計算機資源;而串口連接電纜屬于專用設(shè)備的易損件,經(jīng)常需要更換維修,造成資源浪費。這些因素導致了串口開發(fā)、調(diào)試、測試的成本很高。為了節(jié)約成本,研究基于虛擬機的串口通信具有重大的現(xiàn)實意義。
隨著虛擬技術(shù)的日益廣泛應(yīng)用,計算機虛擬化正迅速改變IT行業(yè)的面貌,并從根本上改變?nèi)藗儗τ嬎銠C系統(tǒng)組網(wǎng)方式以及通信方式[1]。在Linux平臺上引入虛擬技術(shù),通過構(gòu)建虛擬運行環(huán)境,實現(xiàn)真實的跨平臺計算機之間通信的仿真。依據(jù)串口支持能力、虛擬運行效率、軟件兼容性等方面考慮選型,確定使用VMware為虛擬監(jiān)視器。
本文對虛擬技術(shù)進行了綜述,在此基礎(chǔ)上研究了在Linux平臺使用VMware將虛擬計算機通過物理串口與其他計算機或調(diào)試板進行通信,以及將兩臺虛擬計算機通過虛擬串口進行通信。
1 虛擬技術(shù)介紹
根據(jù)波佩克與戈德堡(Popek and Goldberg)虛擬化需求定義,系統(tǒng)虛擬機是指能夠虛擬包括單或多處理器、內(nèi)存、外存及周邊設(shè)備在內(nèi)之全體硬件資源的虛擬機[2]。虛擬監(jiān)視器是一個軟件,用于提供虛擬機的抽象。
虛擬化的工作原理是直接在計算機硬件或主機操作系統(tǒng)上面插入一個精簡的軟件層。該軟件層包含一個以動態(tài)和透明方式分配硬件資源的虛擬機監(jiān)視器(即“虛擬化管理程序”)。多個操作系統(tǒng)可以同時運行在單臺物理機上,彼此之間共享硬件資源。由于是將整臺計算機(包括CPU、內(nèi)存、操作系統(tǒng)和網(wǎng)絡(luò)設(shè)備)封裝起來,因此虛擬機可與所有標準的x86操作系統(tǒng)、應(yīng)用程序和設(shè)備驅(qū)動程序完全兼容[3-4]??梢栽谝慌_物理的計算機上同時安全地運行多個操作系統(tǒng),每個操作系統(tǒng)都可以在需要時訪問其所需資源[5]。
確定使用Linux平臺的VMware后,研究發(fā)現(xiàn)基于Linux平臺VMware虛擬機主要有三種串口通信模式:Use Physical Serial Port模式、Use Out File模式以及Use Named Pipe模式[6]。使用這三種串口通信模式,能夠用VMware完成用戶所需要的串口通信功能。
1.1 Use Physical Serial Port模式
Use Physical Serial Port模式使用宿主計算機的物理串口,通過該模式能夠使用串口連接線將虛擬機與另一臺計算機或調(diào)試板進行連接。Use Physical Serial Port模式連接圖如圖1所示。
2 構(gòu)建串口通信環(huán)境的應(yīng)用
宿主計算機為Linux系統(tǒng),含F(xiàn)edora Linux、Red Hat Enterprise Linux。虛擬機軟件為VMware for Linux。
2.1 Use Physical Serial Port模式串口通信
按照Use Physical Port模式,將虛擬機與外部計算機進行串口通信,虛擬機和外部計算機之間使用串口線進行連接。注意,計算機串口不支持帶電插拔,為避免串口被燒毀,連接和斷開串口線時務(wù)必將兩臺計算機關(guān)閉。
虛擬機安裝了Windows XP系統(tǒng),外部計算機安裝了Windows XP系統(tǒng)。以下給出構(gòu)建環(huán)境的步驟。
⑴ 使用root用戶啟動VMware。以超級用戶啟動VMware才能使用串口,普通用戶無法使用。
(a) 在終端(Terminal)窗口su到root帳號;
(b) 執(zhí)行/usr/bin/vmware。
⑵ 虛擬機添加串口。
(a) 在VMware的虛擬機設(shè)置中依次點擊【Edit virtual machine settings】、【Add…】、【Serial Port】;
(b) 選擇串口通信方式【Use a physical serial port on the host】;
(c) 選擇串口Physical Serial Port為【/dev/ttyS0】,同時選擇Device Status為【Connect at power on】。
⑶ 啟動虛擬機,在虛擬機中使用串口調(diào)試串手等工具設(shè)置串口參數(shù),打開串口。
⑷ 外部計算機為Windows XP系統(tǒng),亦使用串口調(diào)試助手等工具設(shè)置串口參數(shù)。
⑸ 虛擬機與外部計算機設(shè)置相同的串口參數(shù)即可正常通信。
2.2 Use Named Pipe模式串口通信
按照Use Named Pipe模式,將兩臺虛擬計算機之間進行模擬串口通信。兩臺虛擬機操作系統(tǒng)可以是Windows系統(tǒng),也可以是Linux系統(tǒng),也可以是一臺Windows系統(tǒng)一臺Linux系統(tǒng)。在此,我們以相對復雜的一臺Windows系統(tǒng),一臺Linux系統(tǒng)構(gòu)建串口通信環(huán)境,其他環(huán)境可參照此環(huán)境進行構(gòu)建。
虛擬機A裝有Windows XP,虛擬機B裝有Fedora Linux。以下給出構(gòu)建環(huán)境的步驟。
⑴ 虛擬機A添加虛擬串口設(shè)備Serial Port。
(a) 在VMware的虛擬機設(shè)置中依次點擊【Edit virtual machine settings】、【Add…】、【Serial Port】;
(b) 選擇串口通信方式【Output to socket】;
(c) 選擇Socket類型,輸入Socket名稱為【/tmp/isock】,【This end is the server.】,【The other end is an application】,選中【Connect at power on】。注:Linux宿主機Socket名稱一般以【/tmp】開頭。
⑵ 虛擬機B添加虛擬串口設(shè)備Serial Port。
添加方法與虛擬機A基本相同,僅將上面(c)中【This end is the server.】改為【This end is the client.】。
⑶ 虛擬機A(Windows xp)使用串口調(diào)試助手作為串口通信工具,設(shè)置串口參數(shù)并啟動串口。
⑷ 虛擬機B(Fedora)使用minicom為串口通信工具。minicom的使用方法:
(a) 在終端(Terminal)窗口su到root帳號下;
(b) 啟動minicom -s進行參數(shù)設(shè)置,設(shè)置串口號com1、com2、……、波特率、校驗位、數(shù)據(jù)位、停止位等,同時可設(shè)置發(fā)送路徑、接收路徑;保存退出;
(c) 啟動minicom。若外部有數(shù)據(jù)發(fā)送到虛擬串口,啟動minicom后即可接收到數(shù)據(jù);使用Ctrl-A S可發(fā)送文件。
3 結(jié)束語
硬件設(shè)備虛擬化為IT行業(yè)帶來了巨大的變革,通過虛擬化使硬件資源得到高效利用。在嵌入式開發(fā)領(lǐng)域,通過基于Linux平臺使用VMware構(gòu)建虛擬環(huán)境,實現(xiàn)了真實的跨平臺計算機系統(tǒng)之間的通信仿真;依據(jù)該虛擬環(huán)境的三種串口通信模式,構(gòu)建出了三種不同模式下的串口通信環(huán)境,并分別給出了具體的構(gòu)建過程。在實際嵌入式開發(fā)過程中,借助于該虛擬串口通信環(huán)境,為串口調(diào)試提供了非常便捷的手段,達到了節(jié)約成本、提高效率的目的。