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