<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM系統(tǒng)硬盤接口的使用和文件管理

          基于ARM系統(tǒng)硬盤接口的使用和文件管理

          作者: 時間:2011-12-15 來源:網絡 收藏

          3.2 關于FAT 表

            FA T 表實質上是一系列存放著數據的鏈接表。

            對于FA T 32 來說, 每四個字節(jié)(32b it) 對應硬盤數據區(qū)上的一個簇, 它們的數值是當前文件下一個簇的指針。如果這四個字節(jié)大于0x0FFFFFF8, 則表示當前文件在該簇內結束。若是0x00 則表示該簇是空的, 沒有存放數據, 而0xFFFFFF7 表示這個簇已經損壞。采用這種方法, 在存取數據時只需沿著鏈接表尋址就行了, 不需按順序存取, 也不會因刪除文件造成磁盤碎片。FA T 表的大小是根據磁盤容量也就是簇的數量來決定, 不同磁盤FA T 表的大小不同。

            出于可靠性考慮, FA T 表一般都要冗余它的備份,冗余數量由BPB 表的N umFA T s 來定, 通常為2。

            這樣在突然斷電等意外情況下, 可以根據備份的FA T 表進行修復。

            3.3 硬盤數據區(qū)

            FA T 表之后是硬盤的數據區(qū), 其開始是根目錄(ROO T D irecto ry) , 此處存放了FA T 表根目錄下的文件與子目錄。存放格式有兩種, 一種是長文件名, 一種是短文件名(標準的813 格式) , 通過數據中的特征位能分辨出來。長文件名和短文件名格式見參考文獻, 它包含了文件的名字、屬性、大小、起始簇數、建立及寫操作的時間。實際上子目錄的信息也被當作一個文件存儲在根目錄區(qū), 只是它的屬性為目錄, 大小為0。同樣, 子目錄起始簇內存放了該目錄下文件和子目錄的信息表。依據這些信息, 可以在FA T 表找到該文件的鏈接表, 執(zhí)行對整個文件相應操作。

            3.4 資源共享的實現

            對于不同的文字平臺, 為能夠實現資源共享, 采用UN ICODE 來存儲文件名。在長文件名中, 每個字符都是用16b it s 的UN ICODE 來表示的, 而在短文件名中, 采用用戶自定義的類型, 例如在簡體中文W indow s 下, 采用A SC? 碼和GB2312 碼。通過U 2N ICODE 與其它碼表對比查找程序, 用戶可以在自己期望的文字平臺上進行操作。

            圖3 是讀取一個文件的流程, 寫文件的方法和讀文件相類似, 只要注意在目錄里建立文件時, 先把數據寫入空白簇后再把FA T 表更新, 其中包括更新備份部分。

          邏輯映射層程序流程

            4 結束語

            筆者通過U SB 接口使用S3C44B0X 中 7TDM I 微處理器對20GB 以上的硬盤進行接口連接及控制, 用FA T 32 文件系統(tǒng)對硬盤進行數據管理, 多個大容量硬盤除了在 系統(tǒng)能正常工作外, 在W IN 98/2000/XP 操作系統(tǒng)支持下的PC機上, 均能實現數據資源共享。基于 系統(tǒng)大容量硬盤管理與控制系統(tǒng), 目前正被使用到遠程電力網數據檢測系統(tǒng)之中, 為嵌入式系統(tǒng)海量數據存儲提供一種新的設計思路。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();