專(zhuān)利名稱(chēng):嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代nand存儲(chǔ)器的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于嵌入式虛擬化領(lǐng)域,具體涉及一種嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代 NAND存儲(chǔ)器的方法。
背景技術(shù):
目前,在手機(jī)設(shè)備中,操作系統(tǒng)內(nèi)核設(shè)置于NAND存儲(chǔ)器(或者是ROM)上。系統(tǒng)啟動(dòng)時(shí)直接從NAND存儲(chǔ)器加載操作系統(tǒng)。然而。現(xiàn)有的NAND存儲(chǔ)器具有兩個(gè)很明顯的缺點(diǎn)1、容量有限手機(jī)NAND存儲(chǔ)器一般只是用來(lái)存放固有的操作系統(tǒng)和短信,電話(huà)之類(lèi)的信息,容量幾乎都在IG以下,而且這不大的容量有很大一部分要用來(lái)存儲(chǔ)嵌入式操作系統(tǒng)系統(tǒng),導(dǎo)致可用的空間就更小了 ;2、壽命有限,更換不易NAND存儲(chǔ)器的操作分為讀、寫(xiě)、擦除3種。擦除操作有一定的次數(shù)限制,快閃存儲(chǔ)器中每一塊擦除的次數(shù)一般在10萬(wàn)到100萬(wàn)之間,如果超過(guò)上限, 數(shù)據(jù)就會(huì)出錯(cuò);此外,NAND存儲(chǔ)器出錯(cuò)之后要想更換非常麻煩。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代NAND存儲(chǔ)器的方法,其解決了 NAND存儲(chǔ)器空間不足的問(wèn)題,使得更換虛擬機(jī)鏡像非常方便,并提高了嵌入式虛擬化的實(shí)用性和使用的方便程度。本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的一種嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代NAND存儲(chǔ)器的方法,包括以下步驟啟動(dòng)虛擬機(jī)管理器,初始化嵌入式虛擬機(jī)的內(nèi)存卡設(shè)備及其文件系統(tǒng),執(zhí)行嵌入式虛擬機(jī)的控制臺(tái)程序,并等待用戶(hù)輸入虛擬機(jī)加載命令,根據(jù)虛擬機(jī)加載命令加載虛擬機(jī)鏡像,并根據(jù)虛擬機(jī)鏡像的頭部中的偏移地址獲取虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址,啟動(dòng)虛擬機(jī)內(nèi)核,在虛擬機(jī)內(nèi)核的NAND存儲(chǔ)器驅(qū)動(dòng)中獲取讀寫(xiě)NAND存儲(chǔ)器的指令,以得到指令的操作類(lèi)型和操作地址,將指令的操作類(lèi)型映射為內(nèi)存卡的操作類(lèi)型,累加虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址和指令的操作地址,以獲取指令在內(nèi)存卡設(shè)備中的操作地址,根據(jù)內(nèi)存卡的操作類(lèi)型和指令在內(nèi)存卡設(shè)備中的操作地址生成對(duì)內(nèi)存卡的操作指令,根據(jù)對(duì)內(nèi)存卡的操作指令操作內(nèi)存卡,獲得操作結(jié)果,并將操作結(jié)果保存在內(nèi)存緩沖區(qū)中,虛擬機(jī)內(nèi)核從內(nèi)存緩沖區(qū)中獲得操作結(jié)果,并根據(jù)操作結(jié)果完成對(duì)NAND存儲(chǔ)器的讀寫(xiě)操作。虛擬機(jī)鏡像的組織方式為前512位為虛擬機(jī)鏡像的頭部,用于記錄NAND存儲(chǔ)器的分區(qū)的相關(guān)信息,每個(gè)分區(qū)的相關(guān)信息的大小為64位。NAND存儲(chǔ)器的分區(qū)的相關(guān)信息包括標(biāo)志位、頁(yè)大小、校驗(yàn)塊大小、最小擦除單位、 分區(qū)大小以及起始地址。分區(qū)的相關(guān)信息具體為第0第-第3位為分區(qū)的標(biāo)識(shí)位,第4第-第7位為分區(qū)每個(gè)頁(yè)的大小,第8第-第11位為分區(qū)每個(gè)頁(yè)的校驗(yàn)塊大小,第12第-第15位為分區(qū)擦除塊的大小,第16第-第23位為分區(qū)的大小,第M第-第31位為分區(qū)在虛擬機(jī)鏡像中的起始位置,第32第-第63位為分區(qū)的名稱(chēng)。本發(fā)明具有以下優(yōu)點(diǎn)(1)節(jié)省了 NAND存儲(chǔ)器上的存儲(chǔ)空間由于嵌入式設(shè)備中內(nèi)存卡的存儲(chǔ)空間大小比NAND存儲(chǔ)器大得多,將NAND存儲(chǔ)器中的數(shù)據(jù)放到內(nèi)存卡中可以大量節(jié)省NAND存儲(chǔ)器空間,使得用戶(hù)可選擇的虛擬機(jī)的數(shù)量大大增加。(2)延長(zhǎng)NAND存儲(chǔ)器壽命NAND存儲(chǔ)器卡的讀寫(xiě)次數(shù)有限,減少對(duì)NAND存儲(chǔ)器的讀寫(xiě)可以增加NAND存儲(chǔ)器卡的使用壽命。(3)方便更換虛擬機(jī)更換虛擬機(jī)時(shí),可以通過(guò)簡(jiǎn)單的復(fù)制命令將虛擬機(jī)鏡像加入內(nèi)存卡中,而不需要通過(guò)刷機(jī)的方式來(lái)修改NAND存儲(chǔ)器。
圖1為本發(fā)明嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代NAND存儲(chǔ)器的方法的流程圖。圖2為虛擬機(jī)鏡像的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。如圖1所示,本發(fā)明方法的具體步驟為(1)啟動(dòng)虛擬機(jī)管理器;(2)初始化嵌入式虛擬機(jī)的內(nèi)存卡設(shè)備及其文件系統(tǒng);(3)執(zhí)行嵌入式虛擬機(jī)的控制臺(tái)程序,并等待用戶(hù)輸入虛擬機(jī)加載命令;(4)根據(jù)虛擬機(jī)加載命令加載虛擬機(jī)鏡像,并根據(jù)虛擬機(jī)鏡像的頭部中的偏移地址獲取虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址;(5)啟動(dòng)虛擬機(jī)內(nèi)核;(6)在虛擬機(jī)內(nèi)核的NAND存儲(chǔ)器驅(qū)動(dòng)中獲取讀寫(xiě)NAND存儲(chǔ)器的指令,以得到指令的操作類(lèi)型和操作地址;(7)將(6)中指令的操作類(lèi)型映射為內(nèi)存卡的操作類(lèi)型;(8)累加(4)中獲取的虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址和(6)中指令的操作地址,以計(jì)算出指令在內(nèi)存卡設(shè)備中的操作地址;(9)根據(jù)(7)中得到的操作類(lèi)型和⑶中得到的操作地址,生成對(duì)內(nèi)存卡的操作指令;(10)根據(jù)對(duì)內(nèi)存卡的操作指令操作內(nèi)存卡,獲得操作結(jié)果,并將操作結(jié)果保存在內(nèi)存緩沖區(qū)中;(11)虛擬機(jī)內(nèi)核從內(nèi)存緩沖區(qū)中獲得操作結(jié)果,并根據(jù)結(jié)果完成對(duì)NAND存儲(chǔ)器的讀寫(xiě)操作。如圖2所示,本發(fā)明方法中虛擬機(jī)鏡像的組織結(jié)構(gòu)如下
前512位為虛擬機(jī)鏡像的頭部,用于記錄NAND存儲(chǔ)器的分區(qū)的相關(guān)信息,包括標(biāo)志位、頁(yè)大小、校驗(yàn)塊大小、最小擦除單位、分區(qū)大小以及起始地址。每個(gè)分區(qū)的相關(guān)信息的大小為64位,具體為第0第-第3位為分區(qū)的標(biāo)識(shí)位;第4第-第7位為分區(qū)每個(gè)頁(yè)的大小;第8第-第11位為分區(qū)每個(gè)頁(yè)的校驗(yàn)塊大?。坏?2第-第15位為分區(qū)擦除塊的大??;第16第-第23位為分區(qū)的大小;第M第-第31位為分區(qū)在鏡像中的起始位置;第32第-第63位為分區(qū)的名稱(chēng)。由上分析可以發(fā)現(xiàn)本發(fā)明方法,在使用嵌入式虛擬機(jī)時(shí),用內(nèi)存卡上的虛擬機(jī)鏡像代替NAND存儲(chǔ)器設(shè)備。使得用戶(hù)節(jié)省了大量NAND存儲(chǔ)器空間,而且還可以很方便的定制和修改原有的虛擬機(jī)。
權(quán)利要求
1.一種嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代NAND存儲(chǔ)器的方法,包括以下步驟(1)啟動(dòng)虛擬機(jī)管理器;(2)初始化所述嵌入式虛擬機(jī)的內(nèi)存卡設(shè)備及其文件系統(tǒng);(3)執(zhí)行所述嵌入式虛擬機(jī)的控制臺(tái)程序,并等待用戶(hù)輸入虛擬機(jī)加載命令;(4)根據(jù)所述虛擬機(jī)加載命令加載虛擬機(jī)鏡像,并根據(jù)所述虛擬機(jī)鏡像的頭部中的偏移地址獲取所述虛擬機(jī)鏡像在所述內(nèi)存卡設(shè)備上的存放地址;(5)啟動(dòng)虛擬機(jī)內(nèi)核;(6)在所述虛擬機(jī)內(nèi)核的NAND存儲(chǔ)器驅(qū)動(dòng)中獲取讀寫(xiě)NAND存儲(chǔ)器的指令,以得到所述指令的操作類(lèi)型和操作地址;(7)將所述指令的操作類(lèi)型映射為所述內(nèi)存卡的操作類(lèi)型;(8)累加所述虛擬機(jī)鏡像在所述內(nèi)存卡設(shè)備上的存放地址和所述指令的操作地址,以獲取所述指令在所述內(nèi)存卡設(shè)備中的操作地址;(9)根據(jù)所述內(nèi)存卡的操作類(lèi)型和所述指令在所述內(nèi)存卡設(shè)備中的操作地址生成對(duì)所述內(nèi)存卡的操作指令;(10)根據(jù)對(duì)所述內(nèi)存卡的操作指令操作所述內(nèi)存卡,獲得操作結(jié)果,并將所述操作結(jié)果保存在內(nèi)存緩沖區(qū)中;(11)所述虛擬機(jī)內(nèi)核從所述內(nèi)存緩沖區(qū)中獲得所述操作結(jié)果,并根據(jù)所述操作結(jié)果完成對(duì)所述NAND存儲(chǔ)器的讀寫(xiě)操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述虛擬機(jī)鏡像的組織方式為前512位為所述虛擬機(jī)鏡像的頭部,用于記錄所述NAND存儲(chǔ)器的分區(qū)的相關(guān)信息;每個(gè)分區(qū)的相關(guān)信息的大小為64位。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于所述NAND存儲(chǔ)器的分區(qū)的相關(guān)信息包括標(biāo)志位、頁(yè)大小、校驗(yàn)塊大小、最小擦除單位、分區(qū)大小以及起始地址。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于所述分區(qū)的相關(guān)信息具體為第0第-第3位為所述分區(qū)的標(biāo)識(shí)位;第4第-第7位為所述分區(qū)每個(gè)頁(yè)的大??;第8第-第11位為所述分區(qū)每個(gè)頁(yè)的校驗(yàn)塊大??;第12第-第15位為所述分區(qū)擦除塊的大??;第16第-第23位為所述分區(qū)的大?。坏贛第-第31位為所述分區(qū)在所述虛擬機(jī)鏡像中的起始位置;第32第-第63位為所述分區(qū)的名稱(chēng)。
全文摘要
本發(fā)明公開(kāi)了一種嵌入式系統(tǒng)中用虛擬機(jī)鏡像替代NAND存儲(chǔ)器的方法,包括啟動(dòng)虛擬機(jī)管理器,初始化嵌入式虛擬機(jī)的內(nèi)存卡設(shè)備及其文件系統(tǒng),執(zhí)行嵌入式虛擬機(jī)的控制臺(tái)程序,等待用戶(hù)輸入虛擬機(jī)加載命令,根據(jù)虛擬機(jī)加載命令加載虛擬機(jī)鏡像,并根據(jù)虛擬機(jī)鏡像的頭部中的偏移地址獲取虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址,啟動(dòng)虛擬機(jī)內(nèi)核,在虛擬機(jī)內(nèi)核的NAND存儲(chǔ)器驅(qū)動(dòng)中獲取讀寫(xiě)NAND存儲(chǔ)器的指令,以得到指令的操作類(lèi)型和操作地址,將指令的操作類(lèi)型映射為內(nèi)存卡的操作類(lèi)型,累加虛擬機(jī)鏡像在內(nèi)存卡設(shè)備上的存放地址和指令的操作地址,以獲取指令在內(nèi)存卡設(shè)備中的操作地址,根據(jù)內(nèi)存卡的操作類(lèi)型和指令在內(nèi)存卡設(shè)備中的操作地址生成對(duì)內(nèi)存卡的操作指令。
文檔編號(hào)G06F9/455GK102521013SQ201110391490
公開(kāi)日2012年6月27日 申請(qǐng)日期2011年11月30日 優(yōu)先權(quán)日2011年11月30日
發(fā)明者伍箴水, 李海峰, 王強(qiáng), 羅晶, 邵志遠(yuǎn), 金海 申請(qǐng)人:華中科技大學(xué)