專利名稱:一種嵌入式虛擬usb磁盤(pán)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例主要涉及嵌入式計(jì)算機(jī)技術(shù)應(yīng)用領(lǐng)域,特別是在嵌入式計(jì)算機(jī)硬件環(huán)境下虛擬USB磁盤(pán)系統(tǒng)的實(shí)現(xiàn)方法。
背景技術(shù):
目前,在嵌入式計(jì)算機(jī)應(yīng)用環(huán)境下,經(jīng)常通過(guò)USB磁盤(pán)接口及其通信協(xié)議,方便地實(shí)現(xiàn)嵌入式設(shè)備與嵌入式設(shè)備之間,嵌入式設(shè)備與上位機(jī)間的數(shù)據(jù)交換。但是由于許多嵌入式設(shè)備受到諸如設(shè)備體積、電源功耗及設(shè)備成本等等因數(shù)的制約,其內(nèi)部存儲(chǔ)空間的容量很小。采用公知的嵌入式計(jì)算機(jī)應(yīng)用環(huán)境下USB磁盤(pán)系統(tǒng)的實(shí)現(xiàn)方法,無(wú)法構(gòu)成大容量的USB磁盤(pán)。而應(yīng)用USB磁盤(pán)接口及其通信協(xié)議進(jìn)行較大數(shù)據(jù)量傳輸時(shí),又需要占用較大的USB磁盤(pán)存儲(chǔ)空間。這樣一來(lái),在嵌入式設(shè)備存儲(chǔ)空間有限的情況下,極大地限制了該設(shè)備與上位機(jī)聯(lián)機(jī)時(shí)的數(shù)據(jù)量傳輸量,在需要大量的中轉(zhuǎn)性數(shù)據(jù)通信時(shí)這種限制尤為明顯。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例的目的之一在于提出一種虛擬的USB磁盤(pán)結(jié)構(gòu),在保證與普通USB磁盤(pán)接口及FAT文件系統(tǒng)磁盤(pán)文件格式兼容的前提下,在嵌入式設(shè)備有限的存儲(chǔ)器容量?jī)?nèi),用極少存儲(chǔ)空間,實(shí)現(xiàn)較大容量虛擬USB磁盤(pán)的方法。并且利用USB磁盤(pán)的底層驅(qū)動(dòng)程序里USB中斷服務(wù)子程序?qū)Υ疟P(pán)扇區(qū)讀寫(xiě)的應(yīng)答和等待機(jī)制,達(dá)成數(shù)據(jù)傳輸?shù)耐?。從而使嵌入式設(shè)備與嵌入式設(shè)備之間,嵌入式設(shè)備與上位機(jī)間基于數(shù)據(jù)文件操作的大批量多扇區(qū)的中轉(zhuǎn)性數(shù)據(jù)傳輸成為可能。本發(fā)明實(shí)施例解決其技術(shù)問(wèn)題所采用的技術(shù)方案是在嵌入式設(shè)備的ROM中定義一個(gè)兼容FAT文件系統(tǒng)磁盤(pán)文件格式DBR(DOS BOOTRECORD)操作系統(tǒng)引導(dǎo)記錄區(qū)第一扇區(qū)的映射扇區(qū),用于存放虛擬USB磁盤(pán)的初始導(dǎo)引數(shù)據(jù)及相關(guān)磁盤(pán)格式數(shù)據(jù)。然后在嵌入式設(shè)備的USB磁盤(pán)的底層驅(qū)動(dòng)程序中將對(duì)DBR中第一扇區(qū)的讀操作指向該映射區(qū),將對(duì)DBR中的其他扇區(qū)固定映射為全“0”只讀扇區(qū),即對(duì)所有超出第一扇區(qū)偏移值的DBR區(qū)讀操作返回值均為“0”,對(duì)所有對(duì)DBR區(qū)的寫(xiě)操作均放棄。同時(shí)在嵌入式設(shè)備的RAM中定義4個(gè)長(zhǎng)度均為一個(gè)扇區(qū)的fatl扇區(qū)、fat2扇區(qū)、dir扇區(qū)和DDS(Disk Data Storage)扇區(qū),在嵌入式設(shè)備的USB磁盤(pán)的底層驅(qū)動(dòng)程序中,分別將嵌入式設(shè)備RAM中的fatl扇區(qū)、fat2扇區(qū)和dir扇區(qū),映射為虛擬USB磁盤(pán)上FAT(FileAllocation Table)文件系統(tǒng)文件分配表I (FATl)中的第一扇區(qū)、文件分配表2 (FAT2)中的第一扇區(qū)和根目錄Root Directory中的第一扇區(qū),將FAT表中FATl、FAT2和根目錄RootDirectory中的其他扇區(qū)固定映射成數(shù)值為全“0”的只讀扇區(qū),即對(duì)所有超出第一扇區(qū)偏移值的FAT1、FAT2和Root Directory區(qū)的讀操作返回值均為“0”,對(duì)所有超出第一扇區(qū)偏移值的FATl、FAT2和Root Directory區(qū)的寫(xiě)操作均放棄。將嵌入式設(shè)備RAM中的DDS(Disk Datastorage)扇區(qū)重復(fù)映射為虛擬USB磁盤(pán)的全部DDS(Disk Data Storage)扇區(qū)。、
接著將相關(guān)的虛擬USB磁盤(pán)的初始化數(shù)據(jù)數(shù)據(jù)分別寫(xiě)入到嵌入式設(shè)備的RAM中的fatl扇區(qū)、fat2扇區(qū)和dir扇區(qū)中去,實(shí)現(xiàn)對(duì)虛擬USB磁盤(pán)的格式化。從而構(gòu)成一個(gè)兼容FAT文件系統(tǒng)磁盤(pán)文件格式并且完成了初始化的虛擬USB磁盤(pán)。該磁盤(pán)僅占用了嵌入式設(shè)備中的一個(gè)扇區(qū)長(zhǎng)度單位字節(jié)ROM和四個(gè)扇區(qū)長(zhǎng)度單位字節(jié)RAM存儲(chǔ)空間資源(不包含虛擬USB磁盤(pán)的底層驅(qū)動(dòng)程序所占空間)。而該虛擬USB磁盤(pán)的虛擬容量取決于存放在DBR扇區(qū)中的通常被稱之為BPB(BI0S Parameter Block)磁盤(pán)格式參數(shù)。每次傳輸文件的最大數(shù)據(jù)長(zhǎng)度,則取決于FAT表中第一扇區(qū)所能存放的簇鏈接數(shù)以及BPB中定義的每簇扇區(qū)數(shù),可以遠(yuǎn)遠(yuǎn)大于嵌入式設(shè)備本身的全部存儲(chǔ)空間。在實(shí)際應(yīng)用中,只要在嵌入式設(shè)備的USB接口中斷服務(wù)程序中調(diào)用磁盤(pán)扇區(qū)讀寫(xiě)函數(shù)讀寫(xiě)完一個(gè)DDS (Disk Data Storage)扇區(qū)后,利用USB磁盤(pán)的底層驅(qū)動(dòng)程序里USB中斷服務(wù)子程序?qū)Υ疟P(pán)扇區(qū)讀寫(xiě)的應(yīng)答和等待機(jī)制,及時(shí)建立、轉(zhuǎn)移或處理完該扇區(qū)數(shù)據(jù)再返回,實(shí)現(xiàn)數(shù)據(jù)傳輸中的等待與同步,保證大批量數(shù)據(jù)傳輸?shù)耐瓿伞1景l(fā)明實(shí)施例的有益效果是,占用極少的嵌入式設(shè)備存儲(chǔ)空間,實(shí)現(xiàn)虛擬USB磁盤(pán)的方法。從而使嵌入式設(shè)備與嵌入式設(shè)備之間,嵌入式設(shè)備與上位機(jī)間基于數(shù)據(jù)文件操 作的大數(shù)據(jù)量的中轉(zhuǎn)性數(shù)據(jù)傳輸成為可能。
為了更進(jìn)清楚的說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中描述中所需要使用的附圖做簡(jiǎn)要介紹。圖I示出了現(xiàn)有技術(shù)的FAT文件系統(tǒng)磁盤(pán)存儲(chǔ)空間示意圖。圖2示出了本發(fā)明實(shí)施例的FAT文件系統(tǒng)虛擬磁盤(pán)存儲(chǔ)空間示意圖。
具體實(shí)施例方式在圖I中,現(xiàn)有技術(shù)的FAT文件系統(tǒng)磁盤(pán)存儲(chǔ)空間大體上可分為DBR(D0S BOOTRECORD)操作系統(tǒng)引導(dǎo)記錄區(qū)I、磁盤(pán)數(shù)據(jù)索引和定位的鏈?zhǔn)浇Y(jié)構(gòu)表存放區(qū)FATl2、FAT3、根目錄Root Directory的存放區(qū)4以及磁盤(pán)數(shù)據(jù)存放區(qū)5。這些存儲(chǔ)空間被一一對(duì)應(yīng)分配或映射在設(shè)備內(nèi)部的只讀存儲(chǔ)器ROM、隨機(jī)存儲(chǔ)器RAM或FLASH存儲(chǔ)器等等物理存儲(chǔ)空間ABCD和E上。在圖2中示出了本發(fā)明實(shí)施例的FAT文件系統(tǒng)虛擬磁盤(pán)存儲(chǔ)空間示意圖。在本實(shí)施例中,F(xiàn)AT文件系統(tǒng)虛擬磁盤(pán)存儲(chǔ)空間則分為DBR(DOS BOOT RECORD)操作系統(tǒng)引導(dǎo)記錄第一扇區(qū)I、DBR記錄其它扇區(qū)2、磁盤(pán)數(shù)據(jù)索引和定位的鏈?zhǔn)浇Y(jié)構(gòu)表FATl第一扇區(qū)3、FATl表其它扇區(qū)4、磁盤(pán)數(shù)據(jù)索引和定位的鏈?zhǔn)浇Y(jié)構(gòu)表FAT2第一扇區(qū)5、FAT2表其它扇區(qū)6、根目錄Root Directory的第一扇區(qū)7、根目錄Root Directory其它扇區(qū)8、以及磁盤(pán)數(shù)據(jù)存放區(qū)9。這些存儲(chǔ)空間被分配、映射或復(fù)映射在嵌入式設(shè)備內(nèi)部的只讀存儲(chǔ)器ROM、隨機(jī)存儲(chǔ)器RAM或FLASH存儲(chǔ)器等等物理存儲(chǔ)空間ABCEE和F上。實(shí)施時(shí)首先改變嵌入式設(shè)備的USB磁盤(pán)底層驅(qū)動(dòng)程序中的存儲(chǔ)空間映射關(guān)系,將磁盤(pán)扇區(qū)讀寫(xiě)函數(shù)中針對(duì)DBR(D0S BOOT RECORD)第一扇區(qū)I的讀操作映射為對(duì)嵌入式設(shè)備內(nèi)部只讀存儲(chǔ)器ROM中對(duì)應(yīng)扇區(qū)空間A的讀操作;針對(duì)DBR(DOS BOOT RECORD)其它扇區(qū)2的讀操作映射為對(duì)數(shù)據(jù)值為全“0”的只讀扇區(qū)F的讀操作;并放棄針對(duì)DBR(DOSBOOT RECORD)區(qū)的全部寫(xiě)操作。同時(shí)將磁盤(pán)扇區(qū)讀寫(xiě)函數(shù)中針對(duì)文件分配表FAT1、文件分配表FAT2以及根目錄RootDirectory中第一扇區(qū)35和7的讀寫(xiě)操作映射為對(duì)嵌入式設(shè)備內(nèi)部隨機(jī)存儲(chǔ)器RAM中對(duì)應(yīng)扇區(qū)空間BC和D的讀寫(xiě)操作;針對(duì)文件分配表FATl、文件分配表FAT2以及根目錄Root Directory中其它扇區(qū)46和8的讀操作映射為對(duì)數(shù)據(jù)值為全“0”的只讀扇區(qū)F的讀操作;并放棄針對(duì)文件分配表FAT1、文件分配表FAT2以及根目錄Root Directory中其它扇區(qū)46和8的全部寫(xiě)操作。再將磁盤(pán)扇區(qū)讀寫(xiě)函數(shù)中針對(duì)磁盤(pán)數(shù)據(jù)存放區(qū)DDS (Disk Data Storage)所有扇區(qū)9的讀寫(xiě)操作重復(fù)映射為對(duì)嵌入式設(shè)備內(nèi)部隨機(jī)存儲(chǔ)器RAM中對(duì)應(yīng)扇區(qū)空間E的讀寫(xiě)操作。接著將相關(guān)的虛擬USB磁盤(pán)的初始化數(shù)據(jù)分別寫(xiě)入到嵌入式設(shè)備的RAM中的對(duì)應(yīng)扇區(qū)空間BC和D中去,實(shí)現(xiàn)對(duì)虛擬USB磁盤(pán)的格式化。從而構(gòu)成一個(gè)兼容FAT文件系統(tǒng)磁盤(pán)文件格式的虛擬USB磁盤(pán)。
在實(shí)際應(yīng)用中,只要在嵌入式設(shè)備的USB接口中斷服務(wù)程序中調(diào)用磁盤(pán)扇區(qū)讀寫(xiě)函數(shù)讀寫(xiě)完一個(gè)DDS (Disk Data Storage)扇區(qū)E后,利用USB磁盤(pán)的底層驅(qū)動(dòng)程序里USB中斷服務(wù)子程序?qū)Υ疟P(pán)扇區(qū)讀寫(xiě)的應(yīng)答和等待機(jī)制,及時(shí)建立、轉(zhuǎn)移或處理完該扇區(qū)數(shù)據(jù)再返回,就可以實(shí)現(xiàn)數(shù)據(jù)傳輸中的等待與同步,保證嵌入式設(shè)備與嵌入式設(shè)備之間,嵌入式設(shè)備與上位機(jī)間基于數(shù)據(jù)文件操作的大批量多扇區(qū)的中轉(zhuǎn)性數(shù)據(jù)傳輸成為可能。上述說(shuō)明為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則內(nèi),所作的任何修改、替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種嵌入式計(jì)算機(jī)硬件環(huán)境下虛擬USB磁盤(pán)系統(tǒng),其特征在于包括 將虛擬USB磁盤(pán)系統(tǒng)中DBR(DOS BOOT RE⑶RD)操作系統(tǒng)引導(dǎo)記錄區(qū)的部分扇區(qū)映射到嵌入式系統(tǒng)中的存儲(chǔ)空間上。
2.根據(jù)權(quán)利要求I所述的虛擬USB磁盤(pán)系統(tǒng),其特征在于還包括 將虛擬USB磁盤(pán)系統(tǒng)中FAT (File Allocation Table)文件系統(tǒng)文件分配表FATl、FAT2的部分扇區(qū)映射到嵌入式系統(tǒng)中的存儲(chǔ)空間上。
3.根據(jù)權(quán)利要求I至2所述的虛擬USB磁盤(pán)系統(tǒng),其特征在于還包括 將虛擬USB磁盤(pán)系統(tǒng)中Root Directory根目錄的部分扇區(qū)映射到嵌入式系統(tǒng)中的存儲(chǔ)空間上。
4.根據(jù)權(quán)利要求I至3所述的虛擬USB磁盤(pán)系統(tǒng),其特征在于還包括 將虛擬USB磁盤(pán)系統(tǒng)中DDS (Disk Data Storage)磁盤(pán)數(shù)據(jù)存儲(chǔ)區(qū)全部扇區(qū)重復(fù)映射到嵌入式系統(tǒng)中的一個(gè)或數(shù)個(gè)存儲(chǔ)空間上。
5.根據(jù)權(quán)利要求I至4所述的虛擬USB磁盤(pán)系統(tǒng),其特征在于還包括 將虛擬USB磁盤(pán)系統(tǒng)中包括DBR(DOS BOOT RECORD)操作系統(tǒng)引導(dǎo)記錄區(qū)、FAT (FileAllocation Table)文件系統(tǒng)文件分配表、Root Directory根目錄中所有的未被權(quán)利要求I所描述定義映射關(guān)系的扇區(qū),映射為數(shù)值為全“0”的虛擬只讀扇區(qū)。
全文摘要
本發(fā)明實(shí)施例主要涉及嵌入式計(jì)算機(jī)技術(shù)應(yīng)用領(lǐng)域,公開(kāi)了一種在嵌入式計(jì)算機(jī)硬件環(huán)境下虛擬USB磁盤(pán)系統(tǒng)的實(shí)現(xiàn)方法。本實(shí)施例通過(guò)更改嵌入式設(shè)備的USB磁盤(pán)的底層驅(qū)動(dòng)程序中的磁盤(pán)扇區(qū)讀寫(xiě)的空間映射關(guān)系,將少量的嵌入式設(shè)備存儲(chǔ)空間,映射為與FAT文件系統(tǒng)磁盤(pán)文件格式兼容的大容量虛擬USB磁盤(pán)。并且利用USB磁盤(pán)的底層驅(qū)動(dòng)程序里USB中斷服務(wù)子程序?qū)Υ疟P(pán)扇區(qū)讀寫(xiě)的應(yīng)答和等待機(jī)制,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)耐健亩骨度胧皆O(shè)備與嵌入式設(shè)備之間,嵌入式設(shè)備與上位機(jī)間基于數(shù)據(jù)文件操作的大數(shù)據(jù)量的中轉(zhuǎn)性數(shù)據(jù)傳輸成為可能。
文檔編號(hào)G06F3/06GK102736858SQ201110082750
公開(kāi)日2012年10月17日 申請(qǐng)日期2011年4月1日 優(yōu)先權(quán)日2011年4月1日
發(fā)明者柴可 申請(qǐng)人:柴可