專利名稱:一種在Linux虛擬機中設(shè)置顯示模式的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬機技術(shù)領(lǐng)域,特別是涉及一種在Li皿x虛擬機中設(shè)置顯示模式的 方法及裝置。
背景技術(shù):
在基于Li皿x操作系統(tǒng)的嵌入式開發(fā)過程中,由于開發(fā)的目標(biāo)設(shè)備資源有限,因 此在目標(biāo)設(shè)備上建立完整的開發(fā)環(huán)境與調(diào)試環(huán)境都比較困難。目前一般在PC (Personal Computer,個人計算機)環(huán)境中通過兩臺計算機交叉編譯的方法建立針對目標(biāo)設(shè)備的開發(fā) 環(huán)境,這樣一方面可以充分利用PC環(huán)境強大的計算能力,另一方面也以可充分利用PC環(huán)境 中豐富的調(diào)試工具進行應(yīng)用程序的調(diào)試。 虛擬機技術(shù),是一種通過軟件方式模擬具有完整功能的計算機系統(tǒng)的技術(shù),在宿 主機的操作系統(tǒng)中運行虛擬機管理器(Virtual Machine Manager, V匪),可以模擬出一臺 或多臺虛擬的計算機,參見圖l所示。這些虛擬機可以像真正的計算機一樣進行工作,例如 可以安裝操作系統(tǒng)、應(yīng)用程序、訪問網(wǎng)絡(luò)資源等等。虛擬機技術(shù)為程序開發(fā)人員提供了便 利開發(fā)人員可以在宿主機使用虛擬機管理器虛擬出一臺計算機,然后將宿主機中的源程 序完全共享給虛擬機,在虛擬機中安裝開發(fā)所需的操作系統(tǒng)并與開發(fā)平臺級聯(lián)。這樣,僅需 一臺計算機,就可以完成原本需要兩臺計算機才能完成的交叉開發(fā)工作。
在嵌入式產(chǎn)品開發(fā)中,UI (User Interface,用戶界面)程序的開發(fā)往往占有一定 的比重,由于嵌入式產(chǎn)品中沒有獨立的顯示設(shè)備,因此UI程序的開發(fā)需要借助開發(fā)環(huán)境中 的顯示設(shè)備來完成。Li皿x操作系統(tǒng)中的幀緩沖設(shè)備(framebuffer),為圖形硬件提供了操 作接口,允許應(yīng)用軟件在圖形模式下直接對圖形硬件進行讀寫等操作,可以為UI程序的開 發(fā)提供繪制和顯示環(huán)境。根據(jù)開發(fā)需要,幀緩沖設(shè)備可以設(shè)置為不同的分辨率與顏色深度。
在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題在Linux虛擬 機環(huán)境下,幀緩沖設(shè)備最高能夠使用的顯示模式為分辨率1024*768、顏色深度24位。而在 實際的開發(fā)過程中,有些UI程序需要將幀緩沖設(shè)備設(shè)置為更高的分辨率和顏色深度(例如 在高清電視上運行的UI程序,需要將幀緩沖設(shè)備設(shè)置為分辨率1360*768,顏色深度為32位 真彩色的顯示模式),由于無法為虛擬機的幀緩沖設(shè)備設(shè)置提供這種顯示模式,因此對于這 類UI程序的開發(fā),目前仍然只能使用兩臺計算機來完成。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種在Li皿x虛擬機中設(shè)置顯示模式的方法及裝置,可 以為Li皿x虛擬機的幀緩沖設(shè)備提供更多的顯示模式,技術(shù)方案如下
—種在虛擬機中設(shè)置顯示模式的方法,包括
對虛擬機的幀緩沖描述塊進行初始化; 獲取所述虛擬機中虛擬顯卡的顯存信息;所述虛擬顯卡的顯存信息包括虛擬顯 卡顯存空間的地址和虛擬顯卡的顯存大小;
4
根據(jù)所獲取的虛擬顯卡的顯存信息,將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的 內(nèi)存空間; 將虛擬顯卡顯存空間在虛擬機內(nèi)核內(nèi)存空間的映射地址保存至所述幀緩沖描述 塊中; 根據(jù)所述幀緩沖描述塊中所保存的信息,通過虛擬顯卡寄存器的輸入/輸出讀寫 指令設(shè)置虛擬顯卡的顯示模式。 —種在虛擬機中設(shè)置顯示模式的裝置,包括 初始化單元,用于對虛擬機的幀緩沖描述塊進行初始化; 虛擬顯卡信息獲取單元,用于獲取所述虛擬機中虛擬顯卡的顯存信息;所述虛擬 顯卡的顯存信息包括虛擬顯卡顯存空間的地址和虛擬顯卡的顯存大??;
映射單元,用于根據(jù)所述虛擬顯卡信息獲取單元所獲取的虛擬顯卡的顯存信息, 將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間; 保存單元,用于所述映射單元獲得的存虛擬顯卡顯存空間在虛擬機內(nèi)核內(nèi)存空間 的映射地址,保存至所述初始化單元獲得的幀緩沖描述塊中; 顯示模式設(shè)置單元,用于根據(jù)所述保存單元在幀緩沖描述塊中所保存的信息,通 過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式。 以上技術(shù)方案,可以為Li皿x虛擬機中的幀緩沖設(shè)備提供更多的顯示模式。與現(xiàn) 有技術(shù)相比,對于需要更高的分辨率和顏色深度的開發(fā)工作,也可以在虛擬機中實現(xiàn),這樣 就可以使用一臺計算機完成高分辨率和高顏色深度的嵌入式UI程序開發(fā),有效節(jié)約了開 發(fā)成本,并且提高了開發(fā)人員的工作效率。
圖1為現(xiàn)有的虛擬機系統(tǒng)架構(gòu)示意圖; 圖2為本發(fā)明實施例所應(yīng)用的開發(fā)環(huán)境架構(gòu)示意圖; 圖3為實現(xiàn)本發(fā)明方法具體實施例的流程圖; 圖4為本發(fā)明實施例在虛擬機中設(shè)置顯示模式的裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例初始化單元的結(jié)構(gòu)示意圖; 圖6為本發(fā)明實施例在虛擬機中設(shè)置顯示模式的裝置的另一種結(jié)構(gòu)示意圖。
具體實施例方式
首先對本發(fā)明實施例所應(yīng)用的開發(fā)環(huán)境架構(gòu)進行說明,參見圖2所示。在宿主機 上安裝第一操作系統(tǒng),然后在第一操作系統(tǒng)中安裝虛擬機管理器,并在虛擬機管理器所虛 擬出的計算機中安裝開發(fā)所需的第二操作系統(tǒng)。在第一操作系統(tǒng)中將源程序完全共享,以 便于虛擬機訪問;在虛擬機的第二操作系統(tǒng)下對第一操作系統(tǒng)共享的源程序目錄進行掛 接,并使用虛擬的第二操作系統(tǒng)聯(lián)接開發(fā)平臺。 宿主機是實際的硬件系統(tǒng),因此上述第一操作系統(tǒng)可以對真實的物理顯卡等實際 硬件資源進行管理與使用。而虛擬機可以通過虛擬機管理器訪問物理顯卡,并為第二操作 系統(tǒng)提供虛擬顯卡(Virtual Display Card),這個虛擬顯卡對于虛擬機而言,相當(dāng)于真實 的圖形硬件,幀緩沖設(shè)備可以對其進行讀寫操作。
下面結(jié)合附圖,對本發(fā)明的實施方案進行詳細(xì)描述,在本實施例中,將上述在虛擬 機中安裝的第二操作系統(tǒng)具體化為Linux操作系統(tǒng)。 圖3所示為本發(fā)明的設(shè)置顯示模式的方法流程圖,包括以下步驟
S101,對虛擬機中的虛擬顯卡進行初始化。 在本實施例中,虛擬機中安裝的是Li皿x操作系統(tǒng)。虛擬機啟動后,通過調(diào)用 Li皿x設(shè)備驅(qū)動框架函數(shù),對虛擬機中的虛擬顯卡進行初始化。初始化時要通過虛擬顯卡的 寄存器來配置虛擬顯卡的總線地址,配置完成后,虛擬機的CPU就可以訪問該設(shè)備的各項 資源。 S102,初始化幀緩沖描述塊。 緩沖幀描述塊是在Li皿x操作系統(tǒng)中,用于保存緩沖幀設(shè)備相關(guān)信息的區(qū)域,在 使用幀緩沖設(shè)備的過程中,需要讀取這部分信息丄i皿x首先會為幀緩沖描述塊分配內(nèi)存空 間,確認(rèn)在緩沖幀描述塊中需要保存哪些相關(guān)信息,并進一步為這些相關(guān)信息分配存儲所 用的子空間。 S103,獲取宿主機中真實物理顯卡的顯示模式信息。 通過讀取虛擬顯卡的寄存器,獲取宿主機中真實物理顯卡的信息,主要包括物理
顯卡的能夠支持的顯示模式。 S104,獲取虛擬顯卡的顯存信息。 通過讀寫虛擬顯卡的寄存器,獲取虛擬顯卡信息,主要包括虛擬顯卡顯存空間的 地址,虛擬顯卡的顯存大小等信息。 S105,將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間。 根據(jù)S104中所獲取到的虛擬顯卡信息,將虛擬顯卡的顯存空間映射到虛擬機內(nèi) 核的內(nèi)存空間。所述虛擬機內(nèi)核的內(nèi)存空間,是運行在虛擬機中的應(yīng)用程序可以直接訪問 的內(nèi)存空間。而這些應(yīng)用程序無法直接訪問虛擬顯卡的顯存空間,映射完成之后,應(yīng)用程序 就可以通過直接讀寫內(nèi)核的此塊內(nèi)存空間,間接地實現(xiàn)對虛擬顯卡顯存內(nèi)容的讀寫。
S106,在幀緩沖描述塊中保存虛擬顯卡顯存空間在內(nèi)核內(nèi)存空間的映射地址。
如S102所述,緩沖幀描述塊是用于保存緩沖幀設(shè)備相關(guān)信息的區(qū)域。這里,除了 保存S105中所獲得的映射地址之外,還可以保存前面所獲取的虛擬顯卡顯存空間的地址、 虛擬顯卡顯存空間的大小等信息。 S107,根據(jù)幀緩沖描述塊中所保存的信息通過虛擬顯卡寄存器的輸入/輸出讀寫 指令設(shè)置虛擬顯卡的顯示模式。 通過輸入/輸出讀寫指令,分別設(shè)置虛擬顯卡的分辨率、顏色深度。 需要說明的是,為虛擬顯卡所設(shè)置的顯示模式,應(yīng)該是S103中所獲取真實物理顯
卡所支持的顯示模式。如果這里設(shè)置的顯示模式不是物理顯卡所能支持的顯示模式,那么
將會返回錯誤信息。 如果所需要設(shè)置的是固定的顯示模式,例如,針對高清電視UI程序的開發(fā),需要 設(shè)置高清電視的顯示模式分辨率1360*768、顏色深度32位。如果能夠確定物理顯卡可以 支持這種模式,那么也可以省略前面的步驟S103。 至此,顯示模式設(shè)置已經(jīng)完成,虛擬機可以通過向宿主機發(fā)送相應(yīng)信息,通知宿主 機已完成虛擬機中虛擬顯卡的寄存器設(shè)置。這樣,在虛擬機中就可以通過讀寫處于高清顯示模式下的虛擬顯卡的寄存器,獲取幀緩沖描述塊中所保存的信息,并根據(jù)幀緩沖描述塊 中的信息設(shè)置正確的像素操作函數(shù),應(yīng)用程序通過像素操作函數(shù)即可對處于高清分辨率模 式下的虛擬顯卡進行像素的填充、讀寫等操作。 本發(fā)明實施例所提供的方法,可以突破現(xiàn)有的Li皿x虛擬機幀緩沖設(shè)備不支持高 分辨率及高色深的限制,令幀緩沖設(shè)備支持更多的顯示模式。與現(xiàn)有技術(shù)相比,對于需要支 持更高的分辨率和顏色深度的開發(fā)工作,也可以在虛擬機中實現(xiàn),這樣就可以使用一臺計 算機完成高分辨率和高顏色深度的嵌入式UI程序開發(fā),有效節(jié)約了開發(fā)成本,并且提高了 開發(fā)人員的工作效率。 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序 在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括R0M、 RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。 相應(yīng)于上面的方法實施例,本發(fā)明實施例還提供一種在虛擬機中設(shè)置顯示模式的 裝置,參見圖4所示,包括 初始化單元410,用于對虛擬機的幀緩沖描述塊進行初始化; 虛擬顯卡信息獲取單元420,用于獲取所述虛擬機中虛擬顯卡的顯存信息;所述 虛擬顯卡的顯存信息包括虛擬顯卡顯存空間的地址和虛擬顯卡的顯存大?。?
映射單元430,用于根據(jù)所述虛擬顯卡信息獲取單元420所獲取的虛擬顯卡的顯 存信息,將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間; 保存單元440,用于將所述映射單元430獲得的存虛擬顯卡顯存空間在虛擬機內(nèi)
核內(nèi)存空間的映射地址,保存至所述初始化單元410獲得的幀緩沖描述塊中; 顯示模式設(shè)置單元450,用于根據(jù)所述保存單元在幀緩沖描述塊中所保存的信息,
通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式。 參見圖5所示,所述初始化單元410,可以包括 幀緩沖描述塊內(nèi)存分配子單元411,用于為所述幀緩沖描述塊分配內(nèi)存空間;
子空間分配子單元412,用于在所述分配幀緩沖描述塊內(nèi)存分配子單元411分配
的內(nèi)存空間中,為所述緩沖幀描述塊中需要保存的信息分配子空間。
參見圖6所示,該裝置還可以包括 物理顯卡信息獲取單元460,用于獲取所述虛擬機所在宿主機中的真實物理顯卡 所支持的顯示模式。 如果所述裝置包括物理顯卡信息獲取單元460,那么所述顯示模式設(shè)置單元450, 具體可以包括驗證子單元451、設(shè)置子單元452和提示子單元453 ; 所述驗證子單元451,所述驗證子單元,用于驗證所設(shè)置的顯示模式是否為所述物 理顯卡信息獲取單元460所獲取的虛擬機所在宿主機中的真實物理顯卡所支持的顯示模 式; 如果是,則所述設(shè)置子單元452通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置 虛擬顯卡的顯示模式; 如果否,則所述提示子單元453提示錯誤信息。 對于裝置實施例而言,由于其基本相應(yīng)于方法實施例,所以描述得比較簡單,相關(guān)
7之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所 述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可 以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。 可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普 通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。 以上所述僅是本發(fā)明的具體實施方式
,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng) 視為本發(fā)明的保護范圍。
權(quán)利要求
一種在虛擬機中設(shè)置顯示模式的方法,其特征在于,包括對虛擬機的幀緩沖描述塊進行初始化;獲取所述虛擬機中虛擬顯卡的顯存信息;所述虛擬顯卡的顯存信息包括虛擬顯卡顯存空間的地址和虛擬顯卡的顯存大??;根據(jù)所獲取的虛擬顯卡的顯存信息,將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間;將虛擬顯卡顯存空間在虛擬機內(nèi)核內(nèi)存空間的映射地址保存至所述幀緩沖描述塊中;根據(jù)所述幀緩沖描述塊中所保存的信息,通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述對虛擬機的幀緩沖描述塊進行初始 化,包括為所述幀緩沖描述塊分配內(nèi)存空間;在所分配的內(nèi)存空間中,為所述緩沖幀描述塊中需要保存的信息分配子空間。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取虛擬機中虛擬顯卡的顯存信息, 具體實現(xiàn)為通過讀寫虛擬顯卡的寄存器,獲取虛擬顯卡信息。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過虛擬顯卡寄存器的輸入/輸出讀 寫指令設(shè)置虛擬顯卡的顯示模式之前,還包括獲取所述虛擬機所在宿主機中的真實物理顯卡所支持的顯示模式。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述通過虛擬顯卡寄存器的輸入/輸出讀 寫指令設(shè)置虛擬顯卡的顯示模式,包括驗證所設(shè)置的顯示模式是否為所述虛擬機所在宿主機中的真實物理顯卡所支持的顯 示模式;如果是,則通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式; 如果否,則提示錯誤信息。
6. —種在虛擬機中設(shè)置顯示模式的裝置,其特征在于,包括 初始化單元,用于對虛擬機的幀緩沖描述塊進行初始化;虛擬顯卡信息獲取單元,用于獲取所述虛擬機中虛擬顯卡的顯存信息;所述虛擬顯卡 的顯存信息包括虛擬顯卡顯存空間的地址和虛擬顯卡的顯存大小;映射單元,用于根據(jù)所述虛擬顯卡信息獲取單元所獲取的虛擬顯卡的顯存信息,將虛 擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間;保存單元,用于將所述映射單元獲得的存虛擬顯卡顯存空間在虛擬機內(nèi)核內(nèi)存空間的 映射地址,保存至所述初始化單元獲得的幀緩沖描述塊中;顯示模式設(shè)置單元,用于根據(jù)所述保存單元在幀緩沖描述塊中所保存的信息,通過虛 擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述初始化單元,包括 幀緩沖描述塊內(nèi)存分配子單元,用于為所述幀緩沖描述塊分配內(nèi)存空間; 子空間分配子單元,用于在所述分配幀緩沖描述塊內(nèi)存分配子單元分配的內(nèi)存空間中,為所述緩沖幀描述塊中需要保存的信息分配子空間。
8. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,該裝置還包括物理顯卡信息獲取單元,用于獲取所述虛擬機所在宿主機中的真實物理顯卡所支持的 顯示模式。
9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述顯示模式設(shè)置單元,包括驗證子單 元、設(shè)置子單元和提示子單元;所述驗證子單元,用于驗證所設(shè)置的顯示模式是否為所述物理顯卡信息獲取單元所獲 取的虛擬機所在宿主機中的真實物理顯卡所支持的顯示模式;如果是,則所述設(shè)置子單元通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡 的顯示模式;如果否,則所述提示子單元提示錯誤信息。
全文摘要
本發(fā)明公開了一種在Linux虛擬機中設(shè)置顯示模式的方法及裝置。所述方法包括對虛擬機的幀緩沖描述塊進行初始化;獲取所述虛擬機中虛擬顯卡的顯存信息;所述虛擬顯卡的顯存信息包括虛擬顯卡顯存空間的地址和虛擬顯卡的顯存大??;根據(jù)所獲取的虛擬顯卡的顯存信息,將虛擬顯卡的顯存空間映射到虛擬機內(nèi)核的內(nèi)存空間;將虛擬顯卡顯存空間在虛擬機內(nèi)核內(nèi)存空間的映射地址保存至所述幀緩沖描述塊中;根據(jù)所述幀緩沖描述塊中所保存的信息,通過虛擬顯卡寄存器的輸入/輸出讀寫指令設(shè)置虛擬顯卡的顯示模式。應(yīng)用本發(fā)明技術(shù)方案,可以令Linux虛擬機中的幀緩沖設(shè)備支持更多的顯示模式。
文檔編號G06F9/455GK101739289SQ20081022652
公開日2010年6月16日 申請日期2008年11月13日 優(yōu)先權(quán)日2008年11月13日
發(fā)明者周衛(wèi)國, 魏治宇 申請人:閃聯(lián)信息技術(shù)工程中心有限公司