国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種fat文件系統(tǒng)差錯處理方法及其裝置的制作方法

      文檔序號:6651362閱讀:270來源:國知局
      專利名稱:一種fat文件系統(tǒng)差錯處理方法及其裝置的制作方法
      技術領域
      本發(fā)明涉及計算機原理領域,具體涉及FAT文件系統(tǒng)中的差錯處理方法以及使用這種方法的裝置。
      背景技術
      硬盤上的數(shù)據按照其不同的特點和作用大致可分為5部分MBR區(qū)、DBR區(qū)、FAT區(qū)、DIR區(qū)和DATA區(qū)。
      MBR主引導記錄區(qū)(Main Boot Record),通常位于整個硬盤的0磁道0柱面1扇區(qū)。
      主引導記錄包含了硬盤的一系列參數(shù)和一段引導程序。其中的硬盤引導程序的主要作用是檢查分區(qū)表是否正確并且在系統(tǒng)硬件完成自檢以后引導具有激活標志的分區(qū)上的操作系統(tǒng),并將控制權交給啟動程序。MBR是由分區(qū)程序(如Fdisk.com)所產生的,它不依賴任何操作系統(tǒng)。
      DBR操作系統(tǒng)引導記錄區(qū)(Dos Boot Record),它通常位于硬盤的0磁道1柱面1扇區(qū),是操作系統(tǒng)可以直接訪問的第一個扇區(qū),它包括一個引導程序和一個被稱為BPB(Bios Parameter Block)的本分區(qū)參數(shù)記錄表。引導程序的主要任務是當MBR將系統(tǒng)控制權交給它時,判斷本分區(qū)跟目錄前兩個文件是不是操作系統(tǒng)的引導文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把其讀入內存,并把控制權交給該文件。BPB參數(shù)塊記錄著本分區(qū)的起始扇區(qū)、結束扇區(qū)、文件存儲格式、硬盤介質描述符、根目錄大小、FAT個數(shù),分配單元的大小等重要參數(shù)。
      FAT文件分配表(File Allocation Table)位于DBR之后,從0磁道1柱面33扇區(qū)開始。
      文件分配表一式兩份,當一個磁盤被格式化后,它位于邏輯0扇區(qū)(即引導扇區(qū))后面的幾個扇區(qū)中,占據扇區(qū)的多少由磁盤類型和大小而定。文件分配表是用來表示磁盤空間的分配信息。它不表示引導區(qū)、文件目錄的信息,也不真正存儲文件內容。
      由于一個文件的數(shù)據并不一定完整的存放在磁盤的一個連續(xù)的區(qū)域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。硬盤上的文件常常要進行創(chuàng)建、刪除、增長、縮短等操作。這樣操作做的越多,盤上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盤上保存著段與段之間的連接信息(即FAT),操作系統(tǒng)在讀取文件時,總是能夠準確地找到各段的位置并正確讀出。
      為了實現(xiàn)文件的鏈式存儲,硬盤上必須準確地記錄哪些簇已經被文件占用,還必須為每個已經占用的簇指明存儲后繼內容的下一個簇的簇號,對一個文件的最后一簇,則要指明本簇無后繼簇。這些都是由FAT(文件分配表)來保存的,表中有很多表項(entry),每項記錄一個簇的信息。
      由于FAT(文件分配表)對于文件管理的重要性,所以它有一個備份,即在原FAT的后面再建一個同樣的FAT,通常分別稱為FAT1和FAT2。
      DIR根目錄區(qū)(Directory),緊接著第二FAT表(即備份的FAT表)之后,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統(tǒng)根據DIR中的起始單元,結合FAT表就可以知道文件在硬盤中的具體位置和大小了。
      數(shù)據區(qū)是真正意義上的數(shù)據存儲的地方,位于DIR區(qū)之后,占據硬盤上的絕大部分數(shù)據空間本文將主要關注FAT文件系統(tǒng)中,文件分配表(FAT)的問題。由于FAT表記錄了磁盤數(shù)據文件的存儲鏈表,對于數(shù)據的讀取而言是極其重要的,以至于Microsoft為其開發(fā)的FAT文件系統(tǒng)中的FAT表創(chuàng)建了一份備份,就是FAT2。FAT2與FAT1的內容通常是即時同步的,也就是說如果通過正常的系統(tǒng)讀寫對FAT1做了更改,那么FAT2也同樣被更新。如果從這個角度來看,系統(tǒng)的這個功能在數(shù)據恢復時是個天災。
      當磁盤遇到錯誤發(fā)生或者受到病毒的破壞時,可以對FAT操作進行文件恢復。比較理想的情況是,知道FAT1被損壞,并且FAT2完好,這時可以用FAT2覆蓋FAT1,從而達到修復的結果。但是,很多情況下,并不是這樣的情況。由于2個FAT的內容通常是即時同步的,因此,經常2個表都是被破壞的。現(xiàn)有技術中這樣2個文件分配表的設計,雖然在一定程度上帶來了方便,但是依然存在隱患,尤其是在差錯處理的時候。

      發(fā)明內容
      本發(fā)明的目的是要克服目前現(xiàn)有技術的缺陷,提出一種安全的、簡單、能有效的進行磁盤差錯處理的方法,使得因非法中斷而遭到損壞文件分配表能恢復到正常狀態(tài)。
      本發(fā)明提出一種FAT文件系統(tǒng)差錯處理方法,其中文件系統(tǒng)內有多個文件分配表,當對文件進行寫操作時,對多個文件分配表進行更新;當這些表出現(xiàn)不一致時,用其中的一個或多個表對不一致的表進行覆蓋操作。
      上述的FAT文件系統(tǒng)差錯處理方法,一種優(yōu)選的方案是文件分配表的個數(shù)為3個。
      上述的FAT文件系統(tǒng)差錯處理方法,一種優(yōu)選的方案是多個文件分配表是依次寫入的。
      上述的FAT文件系統(tǒng)差錯處理方法,一種優(yōu)選的方案是當多個文件分配表出現(xiàn)不一致時,以非法中斷的時刻的時間點判斷非法中斷時系統(tǒng)正在修改哪一個FAT表,用其它一個或多個表對不一致的表進行覆蓋操作。
      上述的FAT文件系統(tǒng)差錯處理方法,一種優(yōu)選的方案是多個文件分配表是連續(xù)存放的。
      上述的FAT文件系統(tǒng)差錯處理方法,一種優(yōu)選的方案是文件分配表設置在DBR之后。
      本發(fā)明還提出一種裝置,該裝置使用了本發(fā)明提出的FAT文件系統(tǒng)差錯處理方法,該裝置包括CPU和存儲器,其中,儲器內包括一個FAT文件系統(tǒng),這個文件系統(tǒng)內有多個文件分配表;當對文件進行寫操作時,對多個文件分配表進行更新;當這些表出現(xiàn)不一致時,用其中的一個或多個表對不一致的表進行覆蓋操作。
      上述的裝置,一種優(yōu)選的方案是還包括USB模塊,用于將該裝置與計算機相連。
      上述的裝置,一種優(yōu)選的方案是裝置的CPU、存儲器之間的通信采用DMA方式進行數(shù)據傳輸。
      使用本發(fā)明的FAT文件系統(tǒng)差錯處理方法及其裝置,由于具有多個文件分配表,因此在系統(tǒng)出現(xiàn)差錯時,可以快速判斷出現(xiàn)差錯的情況,有效的把系統(tǒng)從錯誤中恢復過來。


      圖1為本發(fā)明的文件系統(tǒng)結構示意圖;圖2為本發(fā)明的文件系統(tǒng)運行的流程圖;圖3為本發(fā)明的實施例的模塊圖。
      具體實施例方式
      本發(fā)明提出的FAT文件系統(tǒng)差錯處理方法,以及使用這種方式的裝置,結合附圖和實施例說明如下。以下實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關技術領域的普通技術人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應由各項權利要求限定。
      參照圖3,本實施例中,整個FAT文件系統(tǒng)放置在一片音頻處理芯片中,這個音頻處理芯片包括CPU和存儲器部分,其中CPU和存儲器之間的數(shù)據傳輸采用現(xiàn)有技術中常用的DMA(直接存儲器存取)傳輸方式。具體在說,在這片音頻芯片的存儲器中設置了一個FAT文件系統(tǒng)。由于這個FAT文件系統(tǒng),因此通過它可以完成對外部存儲介質的管理,例如通過它讀取外部的SD、MMC、NandFlash記憶卡中的數(shù)據。這種通過一個文件系統(tǒng)進行對外部存儲介質的管理屬于現(xiàn)有技術,類似于在通用計算機上通過操作系統(tǒng)完成對USB存儲器的管理一樣,在此不作贅述。
      在這個MCU(微程序控制器)系統(tǒng)1中,數(shù)據的通信方式采用DMA方式。本裝置采用現(xiàn)有技術中常用的音頻處理模塊,支持midi、mp3、wave多種格式的音樂播放功能,也支持midi+wave、midi+mp3的播放。這些音樂數(shù)據會通過音頻混音模塊,然后輸出到EQ(智能)模塊、3D模塊,然后輸出到揚聲器2。
      這個MCU系統(tǒng)中還包括USB模塊,這個音頻處理芯片可以通過該模塊與通用計算機(PC)之間進行數(shù)據傳輸。
      對于存儲在存儲器中的文件系統(tǒng)而言,這個文件系統(tǒng)的結構示意圖如圖1所示。該FAT文件系統(tǒng)包括保留區(qū)、FAT區(qū)、根目錄區(qū)、文件和目錄數(shù)據區(qū)。其中,保留區(qū)采用和現(xiàn)有技術一樣的方案,具有MBR、DBR等系統(tǒng)參數(shù),F(xiàn)AT區(qū)的設置使用了本發(fā)明提出的差錯處理方法,即在這個FAT文件系統(tǒng)中,在DBR之后總共有設置3個文件分配表(FAT),而且這些FAT是依次更新的。
      該文件系統(tǒng)還定義一些函數(shù)接口,用于讀、寫這些FAT表,以及查找、定位、刪除相關的簇等。例如unsigned char f_getfatsector(unsigned long sector)這個函數(shù)完成從磁盤中讀取FAT表的工作,通常在設備上電后,系統(tǒng)會自動執(zhí)行這個函數(shù),然后,unsigned char f_writefatsector(void)這個函數(shù)用于檢查FAT表是否一致,并把相應的FAT表寫入磁盤。設備上電后系統(tǒng)會在讀取FAT表后執(zhí)行這個函數(shù),確認系統(tǒng)的狀況。
      根據本發(fā)明,以包含3個FAT表的系統(tǒng)為例,當出現(xiàn)異常情況而造成文件系統(tǒng)損壞,其中的FAT表被損壞,由于FAT表是依次寫入的,也就是說其中一個FAT表修改完之后再相應的依次復制另外2個FAT表,所以當發(fā)生非法中斷時有3種情況,出現(xiàn)異常狀況的FAT表只會是3個表中的一個,因為中斷只發(fā)生在一個時間點里。因此,只要判斷具體是哪種情況,即到底哪個FAT表發(fā)生錯誤,就有可能把系統(tǒng)從錯誤中恢復過來。由于只有3種可能的錯誤情況,3種情況分別對應了3中恢復操作(1)發(fā)生非法中斷時系統(tǒng)正在更新FAT表0。這種情況下,表1和表2相同,恢復操作是用其中一個覆蓋表0。
      (2)發(fā)生非法中斷時系統(tǒng)正在更新FAT表1。這種情況下,三個表互不相同,恢復操作是用表0覆蓋表1和表2。
      (3)發(fā)生非法中斷時系統(tǒng)正在更新FAT表2。這種情況下,表0和表1相同,恢復操作是用其中一個表覆蓋表2。
      本實施例的工作流程如圖2所示。當設備上電完成自檢后,F(xiàn)AT文件系統(tǒng)的工作流程是系統(tǒng)提供一個初始化接口unsigned char fn_initvolume(unsignedlong bgn_sector,unsigned long end_sector),這個接口中的兩個參數(shù)分別表示FAT文件系統(tǒng)所管理的磁盤空間的起始、終止block(塊)數(shù)。系統(tǒng)會從起始block(bgn_sector)開始讀取數(shù)據解析。
      通常而言,F(xiàn)AT文件系統(tǒng)的BPB參數(shù)是它會讀取的第一個block,這個數(shù)據部分里面存放了系統(tǒng)所有必須的參數(shù)信息。在有些情況下,系統(tǒng)所讀取的第一個block并非BPB,而是一個MBR分區(qū)表,對于這樣的情況,F(xiàn)AT系統(tǒng)會解析該分區(qū)表,找到FAT文件系統(tǒng)所處的第一個block的位置,然后同樣執(zhí)行BPB塊的解析。
      BPB塊解析完畢后,F(xiàn)AT文件系統(tǒng)即可得到所需的所有系統(tǒng)參數(shù),例如FAT表的大小、數(shù)目、位置,根目錄的位置等等。
      然后進行FAT表的校驗工作。根據本發(fā)明,系統(tǒng)先檢測3個文件分配表的情況,即采用上述2個函數(shù)unsigned char f_getfatsector(unsigned long sector)和unsigned char f_writefatsector(void)。如果沒有出現(xiàn)異常,即3個表是一致的,進行正常的后續(xù)步驟;如果遇到差錯,采用上述的方法判斷差錯具體出現(xiàn)在哪個表,然后執(zhí)行恢復操作。
      然后進行FAT文件系統(tǒng)的常規(guī)處理操作。
      可見,采用本發(fā)明提出的FAT文件系統(tǒng)差錯處理方法,由于文件系統(tǒng)存在3個FAT表,因此遇到差錯處理時,對于3個表就存在3種同異情況,系統(tǒng)可以很容易的根據不同的情況判斷出哪個表是正確的,從而有效的把系統(tǒng)從錯誤中恢復過來。避免了現(xiàn)有技術中,因為只有2個FAT表而無法判斷到底哪個表出現(xiàn)了錯誤,也就無法判斷正確的情況,造成系統(tǒng)崩潰等問題。
      類似的,對于采用更多的FAT表的情況,例如4個表,則出現(xiàn)差錯時4個表會呈現(xiàn)4種情況,系統(tǒng)可以從4種情況中容易的判斷出正確的情況,進行恢復操作。采用數(shù)量更多的FAT表的方案,與本實施例中采用3個FAT表的方案,是雷同的。
      這種采用了本發(fā)明提出的FAT文件系統(tǒng)差錯處理方法的FAT文件系統(tǒng),本領域的技術人員都可以把它應用到其他場合中,例如應用到通用計算機或其他嵌入式開發(fā)中。本實施例僅用于支持本發(fā)明,本發(fā)明的保護范圍應該由權利要求書限定。
      權利要求
      1.一種FAT文件系統(tǒng)差錯處理方法,其特征在于文件系統(tǒng)內有多個文件分配表,當對文件進行寫操作時,對多個文件分配表進行更新;當這些表出現(xiàn)不一致時,用其中的一個或多個表對不一致的表進行覆蓋操作。
      2.如權利要求1所述的FAT文件系統(tǒng)差錯處理方法,其特征在于文件分配表的個數(shù)為3個。
      3.如權利要求1所述的FAT文件系統(tǒng)差錯處理方法,其特征在于多個文件分配表是依次寫入的。
      4.如權利要求1所述的FAT文件系統(tǒng)差錯處理方法,其特征在于當多個文件分配表出現(xiàn)不一致時,以非法中斷的時刻的時間點判斷非法中斷時系統(tǒng)正在修改哪一個FAT表,用其它一個或多個表對不一致的表進行覆蓋操作。
      5.如權利要求1所述的FAT文件系統(tǒng)差錯處理方法,其特征在于多個文件分配表是連續(xù)存放的。
      6.如權利要求1所述的FAT文件系統(tǒng)差錯處理方法,其特征在于文件分配表設置在DBR即操作系統(tǒng)引導記錄區(qū)之后。
      7.一種使用如權利要求1所述的方法的裝置,包括CPU和存儲器,其特征在于存儲器內包括一個FAT文件系統(tǒng),這個文件系統(tǒng)內有多個文件分配表;當對文件進行寫操作時,對多個文件分配表進行更新;當這些表出現(xiàn)不一致時,用其中的一個或多個表對不一致的表進行覆蓋操作。
      8.如權利要求7所述的裝置,其特征在于還包括USB模塊,用于將該裝置與計算機相連。
      9.如權利要求7所述的裝置,其特征在于裝置的CPU、存儲器之間的通信采用DMA方式進行數(shù)據傳輸。
      全文摘要
      本發(fā)明涉及計算機原理領域。本發(fā)明提出一種FAT文件系統(tǒng)的差錯處理方法,其中在FAT區(qū)有3個文件分配表,這3個表依次更新。當出現(xiàn)差錯時,可以判斷出具體的差錯情況,并用其中正確的表恢復出現(xiàn)錯誤的表,保證系統(tǒng)的正常運行。本發(fā)明能快速、有效、安全的把文件系統(tǒng)中FAT表差錯恢復過來。
      文檔編號G06F17/30GK1776640SQ200510130648
      公開日2006年5月24日 申請日期2005年12月16日 優(yōu)先權日2005年12月16日
      發(fā)明者孫豐強 申請人:北京中星微電子有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1