專利名稱:一種基于文件分配表的數(shù)據(jù)傳輸裝置和傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明屬于在計(jì)算機(jī)與外圍設(shè)備之間文件傳輸技術(shù)領(lǐng)域,尤其是一種基于文件分配表文件系統(tǒng)的數(shù)據(jù)傳輸裝置和傳輸方法,通過實(shí)現(xiàn)簡單定制的文件分配表(FAT)文件系統(tǒng)來獲取從其它設(shè)備傳輸過來的數(shù)據(jù)資料,基于通用串行總線架構(gòu)(USB)技術(shù)、大容量存儲(chǔ)技術(shù)(Mass Storage)協(xié)議和FAT文件系統(tǒng),實(shí)現(xiàn)任意設(shè)備間的單個(gè)文件傳輸。
背景技術(shù):
在現(xiàn)有技術(shù)中,兩個(gè)設(shè)備之間的數(shù)據(jù)通訊或文件傳輸通常是通過通用串行總線USB進(jìn)行的。請參閱圖1,圖1所示為一個(gè)標(biāo)準(zhǔn)的USB文件傳輸設(shè)備構(gòu)成與文件傳送示意圖,兩個(gè)設(shè)備通過USB技術(shù)進(jìn)行數(shù)據(jù)通信。由主端設(shè)備控制從端設(shè)備,發(fā)送命令請求及數(shù)據(jù),再由從端設(shè)備返回處理后的數(shù)據(jù)及狀態(tài)給主端設(shè)備。
在現(xiàn)實(shí)情況中,絕大部分用戶使用視窗(Windows)操作系統(tǒng),當(dāng)一個(gè)符合USB的大數(shù)據(jù)量存儲(chǔ)(Mass Storage)設(shè)備如U盤、移動(dòng)硬盤等插入計(jì)算機(jī)的USB連接器上時(shí),Windows系統(tǒng)就會(huì)自動(dòng)檢測到該設(shè)備,并以文件分配表系統(tǒng)FAT或視窗系列操作系統(tǒng)比如Windows NT、Windows2000、WindowsXP操作系統(tǒng)的專有文件系統(tǒng)NTFS對該設(shè)備存儲(chǔ)器的數(shù)據(jù)結(jié)構(gòu)進(jìn)行格式化,如果已存在FAT或NTFS文件系統(tǒng)就可以對其進(jìn)行文件級操作。
此時(shí)主端設(shè)備以Mass Storage協(xié)議規(guī)定的讀寫扇區(qū)指令向從端設(shè)備發(fā)送,從端設(shè)備解釋這些指令后,再向設(shè)備內(nèi)的存儲(chǔ)器發(fā)出實(shí)際的操作指令。MassStorage協(xié)議是一種基于USB協(xié)議之上對小型計(jì)算機(jī)系統(tǒng)接口SCSI協(xié)議進(jìn)行封裝的USB磁盤操作協(xié)議集,實(shí)際上,從端設(shè)備存儲(chǔ)器中的數(shù)據(jù)是由主端設(shè)備的文件系統(tǒng)管理的。
一般存儲(chǔ)設(shè)備無需內(nèi)置文件系統(tǒng)對其內(nèi)部的存儲(chǔ)器中的數(shù)據(jù)進(jìn)行管理,但仍有需要用該協(xié)議傳送設(shè)備所需數(shù)據(jù)的其它設(shè)備,如MP3播放器、手機(jī)等,這時(shí)就需要再從端設(shè)備中內(nèi)置文件系統(tǒng)來管理存儲(chǔ)器內(nèi)的數(shù)據(jù),以便讀寫所需的數(shù)據(jù)。
在圖2中,現(xiàn)有技術(shù)中一般的文件系統(tǒng)僅僅對存儲(chǔ)器內(nèi)的數(shù)據(jù)及其結(jié)構(gòu)進(jìn)行管理,通過下層設(shè)備驅(qū)動(dòng)程序模塊來讀寫具體的物理設(shè)備?,F(xiàn)有技術(shù)通過存儲(chǔ)設(shè)備驅(qū)動(dòng)程序?qū)Υ鎯?chǔ)器進(jìn)行扇區(qū)的讀寫操作,其中包括對參數(shù)塊數(shù)據(jù)結(jié)構(gòu)的解析和管理工作、文件分配表的管理工作及根目錄/子目錄列表的管理工作,其技術(shù)內(nèi)容為首先通過解釋參數(shù)塊數(shù)據(jù),獲得文件分配表、根目錄列表、數(shù)據(jù)區(qū)的位于存儲(chǔ)器的起始位置和容量即結(jié)束位置,以及文件系統(tǒng)的相關(guān)屬性,然后,通過文件分配表與根目錄/子目錄列表來獲得位于數(shù)據(jù)區(qū)的各個(gè)目錄及文件名稱,以及文件的內(nèi)容,通過根目錄列表獲得各項(xiàng)子目錄和文件的名稱及其所在數(shù)據(jù)區(qū)的起始位置,根據(jù)起始位置可以讀取子目錄或文件的第一個(gè)扇區(qū)的數(shù)據(jù)內(nèi)容,通過文件分配表可以獲得該文件的后續(xù)全部位于數(shù)據(jù)區(qū)的扇區(qū)號即地址及其數(shù)據(jù)內(nèi)容。圖2是一個(gè)文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)和關(guān)系的圖表示意圖,右邊為數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器上的塊結(jié)構(gòu),右圖是該結(jié)構(gòu)內(nèi)部之間的關(guān)系,這些數(shù)據(jù)是存儲(chǔ)于從端設(shè)備的。
圖3顯示了一個(gè)現(xiàn)有技術(shù)文件系統(tǒng)傳輸流程。首先通過參數(shù)解釋模塊對位于存儲(chǔ)器中的參數(shù)塊結(jié)構(gòu)進(jìn)行解釋以獲取其它區(qū)域的起始位置和結(jié)束位置的地址;然后,通過文件分配表管理模塊和文件項(xiàng)管理模塊查找并獲得所需文件的起始位置;最后,通過文件分配表管理模塊與數(shù)據(jù)程序模塊來獲得文件的全部內(nèi)容的位置并將數(shù)據(jù)讀取到存儲(chǔ)器指定的位置。
現(xiàn)有技術(shù)中的這種文件傳輸方法存在以下不足之處1、不利于開發(fā)人員開發(fā),開發(fā)的時(shí)間較長;2、成本較高;3、使用不方便,特別不便于大數(shù)據(jù)量設(shè)備的文件傳輸。現(xiàn)有技術(shù)一般采用串口(Serial Port)、并口(Parallel Port)或通用數(shù)據(jù)總線(USB)傳送數(shù)據(jù),其中串口和并口傳輸速度較慢,并且需要用戶使用開發(fā)人員特殊編制的程序,這增加了用戶使用的難度和開發(fā)人員工作量;現(xiàn)有的USB傳輸有采用大容量存儲(chǔ)(Mass Storage)和自己定制的協(xié)議兩種方式,其中自己定制協(xié)議同樣需要用戶使用開發(fā)人員特殊編制的程序,也增加了用戶使用的難度和開發(fā)人員工作量;現(xiàn)有采用Mass Storage協(xié)議的數(shù)據(jù)傳輸方法需要實(shí)現(xiàn)完整的FAT文件系統(tǒng),也增加開發(fā)人員的開發(fā)難度、工作量。
發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)的不足之處,本發(fā)明的目的在于提供一種基于文件分配表文件系統(tǒng)的數(shù)據(jù)傳輸裝置和傳輸方法,通過簡化的文件分配表(FAT)文件系統(tǒng)來獲取其它設(shè)備傳來的文件數(shù)據(jù),基于通用串行總線架構(gòu)(USB)技術(shù)、大容量存儲(chǔ)技術(shù)(Mass Storage)協(xié)議和FAT文件系統(tǒng),實(shí)現(xiàn)任意設(shè)備間的單個(gè)文件傳輸。
本發(fā)明的另一個(gè)目的在于提供一種基于文件分配表文件系統(tǒng)的數(shù)據(jù)傳輸裝置和傳輸方法,縮短開發(fā)時(shí)間,降低生產(chǎn)成本,使使用更加方便。
為完成上述發(fā)明目的,本發(fā)明采取的總體技術(shù)方案為一種基于文件分配表的數(shù)據(jù)傳輸裝置,至少包括以下部分?jǐn)?shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊,連接寫入數(shù)據(jù)計(jì)數(shù)模塊,用于在從端設(shè)備的存儲(chǔ)器中創(chuàng)建參數(shù)塊及設(shè)置部分?jǐn)?shù)據(jù)參數(shù)、文件分配表、根目錄列表和數(shù)據(jù)區(qū)的起始地址寫入數(shù)據(jù)計(jì)數(shù)模塊,分別連接數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊和數(shù)據(jù)讀寫模塊,用于對寫入的數(shù)據(jù)進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果存儲(chǔ)到存儲(chǔ)器的寫入統(tǒng)計(jì)變量表中;數(shù)據(jù)讀寫模塊,用于根據(jù)由數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊指定的數(shù)據(jù)區(qū)起始位置和由數(shù)據(jù)計(jì)數(shù)模塊指定的最大位置讀取數(shù)據(jù)區(qū)的數(shù)據(jù)。
一種基于文件分配的數(shù)據(jù)傳傳輸方法,包括以下步驟
步驟1、當(dāng)從端設(shè)備在與主端設(shè)備連接時(shí),從端設(shè)備的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊在其存儲(chǔ)器中創(chuàng)建參數(shù)塊的部分?jǐn)?shù)據(jù)結(jié)構(gòu),并規(guī)定所有創(chuàng)建數(shù)據(jù)區(qū)的起始位置和結(jié)束位置地址;步驟2、從端設(shè)備的寫入數(shù)據(jù)計(jì)數(shù)模塊記錄最大的寫入扇區(qū)的編號;步驟3、當(dāng)主端設(shè)備與從端設(shè)備斷開時(shí),數(shù)據(jù)讀寫模塊根據(jù)數(shù)據(jù)區(qū)的起始位置與所記錄的寫入統(tǒng)計(jì)變量來確定其讀數(shù)據(jù)的地址范圍;步驟4、讀數(shù)據(jù)。
所述步驟1中的數(shù)據(jù)結(jié)構(gòu)參數(shù)塊數(shù)據(jù)結(jié)構(gòu)包括每個(gè)扇區(qū)的容量、每個(gè)簇的容量、保留扇區(qū)的數(shù)量、FAT表數(shù)量、目錄項(xiàng)的數(shù)量、FAT表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量、文件系統(tǒng)類型、簽名。
所述步驟1中的創(chuàng)建參數(shù)塊的數(shù)據(jù)結(jié)構(gòu)進(jìn)一步包括以下步驟步驟11、對從端存儲(chǔ)器的總?cè)萘?、扇區(qū)容量、簇容量等基本信息進(jìn)行定義;步驟12、根據(jù)文件分配表文件系統(tǒng)標(biāo)準(zhǔn)初始化參數(shù)塊的數(shù)據(jù)結(jié)構(gòu),根據(jù)基本信息定義,設(shè)置扇區(qū)大小、每個(gè)簇的扇區(qū)容量、分揀分配表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量,設(shè)定其余數(shù)據(jù)項(xiàng);步驟13、創(chuàng)建文件分配表;步驟14、創(chuàng)建根目錄項(xiàng),對數(shù)據(jù)區(qū)全部數(shù)據(jù)全部初始化。
所述步驟1中的數(shù)據(jù)區(qū)的起始位置為扇區(qū)號,扇區(qū)號=保留扇區(qū)+文件分配表長度+目錄項(xiàng)數(shù)量×32+扇區(qū)大小。
所述步驟2進(jìn)一步包括以下步驟步驟21、寫入數(shù)據(jù)計(jì)數(shù)模塊監(jiān)視每次寫入的扇區(qū)號,并將其作為程序的一個(gè)變量記入內(nèi)存;步驟22、如果該變量已經(jīng)存于內(nèi)存,首先判斷當(dāng)前操作的扇區(qū)號是否大于存于內(nèi)存變量的數(shù)值,如果大于,則將該數(shù)值替換內(nèi)存變量的數(shù)值作為最大寫入位置即扇區(qū)號,否則重復(fù)步驟21。
本發(fā)明的方法具有明顯的優(yōu)點(diǎn)和積極效果,本發(fā)明不需要由與其連接的主端設(shè)備中的程序去創(chuàng)建文件系統(tǒng),而是由設(shè)備本身的內(nèi)部程序創(chuàng)建,僅僅需要數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊、寫入數(shù)據(jù)計(jì)數(shù)模塊和數(shù)據(jù)讀寫模塊三個(gè)簡化的基本功能模塊,通過簡化原文件系統(tǒng)的不必要功能如分配表的管理、格式化的程序,文件和目錄項(xiàng)的數(shù)據(jù)結(jié)構(gòu)管理等,并將原設(shè)備驅(qū)動(dòng)程序模塊中的USB Mass Storage協(xié)議棧內(nèi)置到文件系統(tǒng)層中,適用于與大多數(shù)支持USB技術(shù)和FAT文件系統(tǒng)的計(jì)算機(jī)進(jìn)行單個(gè)文件傳輸,適用廣泛、使用方便、容易開發(fā)及執(zhí)行代碼占用存儲(chǔ)器空間較少,可以使設(shè)備的單個(gè)文件傳送更方便,最終用戶通常無需安裝任何驅(qū)動(dòng)程序、應(yīng)用程序和作任何設(shè)置工作便可以快速地向設(shè)備傳送所需數(shù)據(jù),以節(jié)約開發(fā)時(shí)間和存儲(chǔ)器成本,無須編寫任何驅(qū)動(dòng)和應(yīng)用程序以及無需內(nèi)置功能全面的文件系統(tǒng)。因此具有開發(fā)時(shí)間短、成本低,使用方便等優(yōu)點(diǎn)。
圖1為一個(gè)標(biāo)準(zhǔn)的USB文件傳輸設(shè)備構(gòu)成與文件傳輸示意圖;圖2為現(xiàn)有技術(shù)文件傳輸模塊示意圖;圖3為現(xiàn)有技術(shù)文件傳輸流程圖;圖4為本發(fā)明的模塊構(gòu)成圖;圖5為本發(fā)明的主流程圖;圖6為本發(fā)明的文件數(shù)據(jù)區(qū)起始地址創(chuàng)建示意圖。
具體實(shí)施例方式
下面結(jié)合說明書附圖來說明本發(fā)明的具體實(shí)施方式
。
請參閱圖4,本發(fā)明的文件系統(tǒng)采用三個(gè)模塊實(shí)現(xiàn),其中數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊連接寫入數(shù)據(jù)計(jì)數(shù)模塊,用于在從端設(shè)備的存儲(chǔ)器中創(chuàng)建參數(shù)塊,創(chuàng)建文件分配表、根目錄列表和數(shù)據(jù)區(qū)的起始地址,數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊也就是初始化模塊,現(xiàn)有技術(shù)參數(shù)塊的數(shù)據(jù)結(jié)構(gòu)見表1。
本發(fā)明的參數(shù)塊數(shù)據(jù)結(jié)構(gòu)主要包括每個(gè)扇區(qū)的容量、每個(gè)簇的容量、保留扇區(qū)的數(shù)量、FAT表數(shù)量、目錄項(xiàng)的數(shù)量、FAT表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量、文件系統(tǒng)類型、簽名。
表1參數(shù)塊數(shù)據(jù)結(jié)構(gòu)表 參數(shù)塊數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建方法如下初始化數(shù)據(jù)結(jié)構(gòu),對從端存儲(chǔ)器的基本信息包括總?cè)萘?、扇區(qū)容量、簇容量等進(jìn)行定義;
創(chuàng)建參數(shù)塊,根據(jù)FAT文件系統(tǒng)的標(biāo)準(zhǔn)初始化參數(shù)塊的數(shù)據(jù)結(jié)構(gòu),根據(jù)基本信息定義,設(shè)置扇區(qū)大小、每個(gè)簇的扇區(qū)容量、FAT表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量,設(shè)定其余數(shù)據(jù)項(xiàng);創(chuàng)建文件分配表(FAT);創(chuàng)建根目錄項(xiàng),該區(qū)全部數(shù)據(jù)全部置0x0。
寫入數(shù)據(jù)計(jì)數(shù)模塊分別連接數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊和數(shù)據(jù)讀寫模塊,用于對寫入的數(shù)據(jù)進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果存儲(chǔ)到存儲(chǔ)器的寫入統(tǒng)計(jì)變量表中,數(shù)據(jù)讀寫模塊,用于根據(jù)起始位置和最大位置讀取數(shù)據(jù)區(qū)的數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊,省略了現(xiàn)有技術(shù)的一些數(shù)據(jù)結(jié)構(gòu)的字段。請參閱表2發(fā)明技術(shù)與現(xiàn)有技術(shù)對比表,寫入數(shù)據(jù)計(jì)數(shù)和數(shù)據(jù)讀取模塊與現(xiàn)有技術(shù)工作方式有明顯不同,首先,現(xiàn)有技術(shù)讀取文件數(shù)據(jù)的方法是對目錄項(xiàng)進(jìn)行查找,找到文件數(shù)據(jù)位于數(shù)據(jù)區(qū)的第一個(gè)起始位置,然后根據(jù)起始位置,通過FAT表查詢其后續(xù)數(shù)據(jù)所在數(shù)據(jù)區(qū)的多個(gè)位置,最后根據(jù)FAT表查詢出來的多個(gè)位置挨個(gè)將文件數(shù)據(jù)讀出。本發(fā)明無需解釋目錄項(xiàng)和FAT表的數(shù)據(jù)結(jié)構(gòu),根據(jù)數(shù)據(jù)創(chuàng)建模塊來確定文件數(shù)據(jù)的起始位置,根據(jù)數(shù)據(jù)計(jì)數(shù)模塊來確定文件數(shù)據(jù)的最后位置,即可通過數(shù)據(jù)區(qū)讀取該文件數(shù)據(jù)。本發(fā)明無須解釋目錄項(xiàng)和FAT表的工作,主要是對項(xiàng)數(shù)據(jù)結(jié)構(gòu)進(jìn)行查找、遍歷和一系列的判斷操作。
數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊的創(chuàng)造性在于首先該模塊的參數(shù)塊數(shù)據(jù)結(jié)構(gòu)部分,可以在從端設(shè)備的設(shè)計(jì)中固化在存儲(chǔ)器上,而無需對該模塊進(jìn)行創(chuàng)建和初始化;其次,該模塊根據(jù)固化在存儲(chǔ)器上的參數(shù)塊的字段FAT表所占的扇區(qū)數(shù)量、保留扇區(qū)的數(shù)量、FAT表數(shù)量來創(chuàng)建FAT表和目錄項(xiàng)。
表2發(fā)明技術(shù)與現(xiàn)有技術(shù)對比表
當(dāng)主端通過大數(shù)據(jù)存儲(chǔ)(Mass Storage)協(xié)議向從端設(shè)備寫入數(shù)據(jù)時(shí),數(shù)據(jù)讀寫模塊啟動(dòng),寫入數(shù)據(jù)計(jì)數(shù)模塊監(jiān)視每次寫入的扇區(qū)號碼,并將其作為程序的一個(gè)變量記入內(nèi)存中的寫入統(tǒng)計(jì)變量表,如果該變量已經(jīng)存于內(nèi)存,首先判斷當(dāng)前操作的扇區(qū)號碼的數(shù)值是否大于存于內(nèi)存變量的數(shù)值,如果大于,則將該數(shù)值替換內(nèi)存變量的數(shù)值作為最大寫入位置即扇區(qū)號。當(dāng)USB連接斷開時(shí),數(shù)據(jù)讀寫模塊通過存于內(nèi)存中的兩個(gè)變量即起始位置和最大寫入位置讀取傳入的數(shù)據(jù)。當(dāng)用戶將從設(shè)備至主設(shè)備之間的連接斷開,包括拔下USB接口/連線,主設(shè)備關(guān)機(jī)/休眠/重新啟動(dòng)時(shí),從端設(shè)備可以通過數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊的起始位置和寫入統(tǒng)計(jì)表中的值作為最終位置進(jìn)行讀取數(shù)據(jù)操作。
請參閱圖5、本發(fā)明的主流程圖,首先,當(dāng)從端設(shè)備與主端設(shè)備連接時(shí),從端設(shè)備的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊在其存儲(chǔ)器中創(chuàng)建一個(gè)標(biāo)準(zhǔn)的文件分配表數(shù)據(jù)結(jié)構(gòu),并規(guī)定所有創(chuàng)建數(shù)據(jù)區(qū)的起始位置和結(jié)束位置地址,這由數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊創(chuàng)建,創(chuàng)建的內(nèi)容包括文件分配表、根目錄列表和數(shù)據(jù)區(qū)的起始位置地址。
數(shù)據(jù)區(qū)的起始位置計(jì)算公式為扇區(qū)號=保留扇區(qū)+文件分配表長度+目錄項(xiàng)數(shù)量×32/扇區(qū)大小即startPosttion=reserve_sect+fats×fat_length+dir_entries×32÷sector_size,其中,startPosttion為數(shù)據(jù)區(qū)的起始位置,即扇區(qū)號reserve_sect為保留扇區(qū)t,fat_length為文件分配表長度,dir_entries為目錄項(xiàng)數(shù)量,sector_size為扇區(qū)大小。
請參閱圖6,圖6為本發(fā)明的文件數(shù)據(jù)區(qū)位置地址創(chuàng)建示意圖,這是一個(gè)由本發(fā)明的方法所創(chuàng)建的位于存儲(chǔ)器中的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實(shí)例,0至4扇區(qū)用于存放描述文件系統(tǒng)的相關(guān)數(shù)據(jù)區(qū),由參數(shù)塊指定5號扇區(qū)為數(shù)據(jù)區(qū)的起始位置;根據(jù)FAT文件系統(tǒng)的寫操作慣例,寫入以連續(xù)扇區(qū)寫入為優(yōu)先選擇,因此其最后一次寫入的19扇區(qū)位置與起始位置之間的數(shù)據(jù)是一個(gè)文件的數(shù)據(jù),19扇區(qū)也是最大的扇區(qū)編號。因此5至19扇區(qū)為第一個(gè)寫入文件的所有扇區(qū)。分配表、根目錄這些描述信息處于數(shù)據(jù)之前,在0-4扇區(qū),它們用來描述數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)僅存儲(chǔ)文件數(shù)據(jù)。
然后,從端設(shè)備的寫入計(jì)數(shù)模塊記錄最大的寫入扇區(qū)的編號,并將編號存儲(chǔ)到寫計(jì)數(shù)變量表中。
當(dāng)主端設(shè)備與從端設(shè)備斷開時(shí),本次數(shù)據(jù)傳輸結(jié)束,數(shù)據(jù)讀寫模塊根據(jù)數(shù)據(jù)區(qū)的起始位置與所記錄的寫入統(tǒng)計(jì)變量來確定其讀取數(shù)據(jù)的地址范圍。
最后,讀文件數(shù)據(jù)。斷開后,數(shù)據(jù)讀寫模塊僅作讀數(shù)據(jù)功能。
本發(fā)明的文件系統(tǒng)是一種基于通用數(shù)據(jù)總線USB的簡易文件傳輸技術(shù),該技術(shù)適用于大多數(shù)支持USB技術(shù)和FAT文件系統(tǒng)的計(jì)算機(jī)進(jìn)行單個(gè)文件傳輸。單個(gè)文件傳輸往往用于設(shè)備中的特定需求,如設(shè)備內(nèi)固件即軟件/驅(qū)動(dòng)更新或其它單個(gè)文件的數(shù)據(jù)傳輸。本發(fā)明方法較其它方法的優(yōu)點(diǎn)為適用廣泛、應(yīng)用方便、開發(fā)容易,以及執(zhí)行代碼占用存儲(chǔ)器空間較少。本發(fā)明可以使設(shè)備的單個(gè)文件傳送更方便,最終用戶通常無需安裝任何驅(qū)動(dòng)程序、應(yīng)用程序和作任何設(shè)置工作便可以快速地向設(shè)備傳送所需數(shù)據(jù)。本發(fā)明可以節(jié)約開發(fā)時(shí)間,無須編寫任何驅(qū)動(dòng)和應(yīng)用程序以及無需內(nèi)置功能全面的文件系統(tǒng),該技術(shù)的開發(fā)量低于現(xiàn)有方法。該技術(shù)同樣可以節(jié)省生產(chǎn)成本,當(dāng)設(shè)備的存儲(chǔ)空間,包括非易失性存儲(chǔ)器和易失性存儲(chǔ)器是其關(guān)鍵成本時(shí),由于該技術(shù)的程序代碼量較前現(xiàn)有方法少很多,故可以減少生產(chǎn)成本。本發(fā)明通過預(yù)先創(chuàng)建主端設(shè)備可識(shí)別的數(shù)據(jù)結(jié)構(gòu),來控制主端設(shè)備寫入存儲(chǔ)器數(shù)據(jù)的起始位置,通過對主端寫入數(shù)據(jù)指令中的扇區(qū)編號進(jìn)行對比取得寫入扇區(qū)編號的最大值,確定為結(jié)束位置,即可認(rèn)為起始位置與結(jié)束位置之間的數(shù)據(jù)為一個(gè)文件寫入的數(shù)據(jù)。該方法無需解釋文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),即可獲得第一個(gè)寫入的文件數(shù)據(jù)。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種基于文件分配表的數(shù)據(jù)傳輸裝置,其特征在于,該裝置至少包括以下部分?jǐn)?shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊,連接寫入數(shù)據(jù)計(jì)數(shù)模塊,用于在從端設(shè)備的存儲(chǔ)器中創(chuàng)建參數(shù)塊及設(shè)置部分?jǐn)?shù)據(jù)參數(shù)、文件分配表、根目錄列表和數(shù)據(jù)區(qū)的起始地址;寫入數(shù)據(jù)計(jì)數(shù)模塊,分別連接數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊和數(shù)據(jù)讀寫模塊,用于對寫入的數(shù)據(jù)進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果存儲(chǔ)到存儲(chǔ)器的寫入統(tǒng)計(jì)變量表中;數(shù)據(jù)讀寫模塊,用于根據(jù)由數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊指定的數(shù)據(jù)區(qū)起始位置和由數(shù)據(jù)計(jì)數(shù)模塊指定的最大位置讀取數(shù)據(jù)區(qū)的數(shù)據(jù)。
2.一種基于文件分配的數(shù)據(jù)傳輸方法,其特征在于,該方法包括以下步驟步驟1、當(dāng)從端設(shè)備在與主端設(shè)備連接時(shí),從端設(shè)備的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊在其存儲(chǔ)器中創(chuàng)建參數(shù)塊的部分?jǐn)?shù)據(jù)結(jié)構(gòu),并規(guī)定所有創(chuàng)建數(shù)據(jù)區(qū)的起始位置和結(jié)束位置地址;步驟2、從端設(shè)備的寫入數(shù)據(jù)計(jì)數(shù)模塊記錄最大的寫入扇區(qū)的編號;步驟3、當(dāng)主端設(shè)備與從端設(shè)備斷開時(shí),數(shù)據(jù)讀寫模塊根據(jù)數(shù)據(jù)區(qū)的起始位置與所記錄的寫入統(tǒng)計(jì)變量來確定其讀數(shù)據(jù)的地址范圍;步驟4、讀數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的基于文件分配的數(shù)據(jù)傳傳輸方法,其特征在于,所述步驟1中的數(shù)據(jù)結(jié)構(gòu)參數(shù)塊數(shù)據(jù)結(jié)構(gòu)包括每個(gè)扇區(qū)的容量、每個(gè)簇的容量、保留扇區(qū)的數(shù)量、文件分配表數(shù)量、目錄項(xiàng)的數(shù)量、文件分配表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量、文件系統(tǒng)類型、簽名。
4.根據(jù)權(quán)利要求2所述的基于文件分配的數(shù)據(jù)傳傳輸方法,其特征在于,所述步驟1中的創(chuàng)建參數(shù)塊的數(shù)據(jù)結(jié)構(gòu)進(jìn)一步包括以下步驟步驟11、對從端存儲(chǔ)器的總?cè)萘?、扇區(qū)容量、簇容量等基本信息進(jìn)行定義;步驟12、根據(jù)文件分配表文件系統(tǒng)標(biāo)準(zhǔn)初始化參數(shù)塊的數(shù)據(jù)結(jié)構(gòu),根據(jù)基本信息定義,設(shè)置扇區(qū)大小、每個(gè)簇的扇區(qū)容量、分揀分配表所占的扇區(qū)數(shù)量、文件系統(tǒng)管理的總扇區(qū)數(shù)量,設(shè)定其余數(shù)據(jù)項(xiàng);步驟13、創(chuàng)建文件分配表;步驟14、創(chuàng)建根目錄項(xiàng),對數(shù)據(jù)區(qū)全部數(shù)據(jù)全部置初始化。
5.根據(jù)權(quán)利要求2所述的基于文件分配的數(shù)據(jù)傳傳輸方法,其特征在于,所述步驟1中的數(shù)據(jù)區(qū)的起始位置為扇區(qū)號,扇區(qū)號=保留扇區(qū)+文件分配表長度+目錄項(xiàng)數(shù)量×32/扇區(qū)大小。
6.根據(jù)權(quán)利要求2所述的基于文件分配的數(shù)據(jù)傳傳輸方法,其特征在于,所述步驟2進(jìn)一步包括以下步驟步驟21、寫入數(shù)據(jù)計(jì)數(shù)模塊監(jiān)視每次寫入的扇區(qū)號,并將其作為程序的一個(gè)變量記入內(nèi)存;步驟22、如果該變量已經(jīng)存于內(nèi)存,首先判斷當(dāng)前操作的扇區(qū)號是否大于存于內(nèi)存變量的數(shù)值,如果大于,則將該數(shù)值替換內(nèi)存變量的數(shù)值作為最大寫入位置即扇區(qū)號,否則重復(fù)步驟21。
全文摘要
本發(fā)明是一種基于文件分配表的數(shù)據(jù)傳輸裝置和傳輸方法。包括數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊、寫入數(shù)據(jù)計(jì)數(shù)模塊、數(shù)據(jù)讀寫模塊。當(dāng)從端設(shè)備在與主端設(shè)備連接時(shí),從端設(shè)備的數(shù)據(jù)結(jié)構(gòu)創(chuàng)建模塊在其存儲(chǔ)器中創(chuàng)建參數(shù)塊的部分?jǐn)?shù)據(jù)結(jié)構(gòu),并規(guī)定所有創(chuàng)建數(shù)據(jù)區(qū)的起始位置和結(jié)束位置地址;從端設(shè)備的寫入數(shù)據(jù)計(jì)數(shù)模塊記錄最大的寫入扇區(qū)的編號;當(dāng)主端設(shè)備與從端設(shè)備斷開時(shí),數(shù)據(jù)讀寫模塊根據(jù)數(shù)據(jù)區(qū)的起始位置與所記錄的寫入統(tǒng)計(jì)變量來確定其讀數(shù)據(jù)的地址范圍;讀數(shù)據(jù)。本發(fā)明的文件系統(tǒng)由設(shè)備本身的內(nèi)部程序創(chuàng)建,用戶無需安裝任何驅(qū)動(dòng)程序,設(shè)備單個(gè)文件傳送更方便,適用廣泛、使用方便、容易開發(fā),執(zhí)行代碼占用存儲(chǔ)器空間較少。
文檔編號G06F12/00GK1731376SQ20051008989
公開日2006年2月8日 申請日期2005年8月10日 優(yōu)先權(quán)日2005年8月10日
發(fā)明者譚帥, 周政軍, 趙原 申請人:北京中星微電子有限公司