0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FATFS文件系統(tǒng)詳解(三)

冬至子 ? 來源:jaffer ? 作者:jaffer ? 2023-06-07 14:51 ? 次閱讀

5.3 根目錄區(qū)分析

注意,根目錄區(qū)只有 FAT12 / FAT16 系統(tǒng)上存在,在FAT32系統(tǒng)上不存在此區(qū)域。

根目錄區(qū)用來記錄根目錄下的文件內(nèi)容,根據(jù) 4.3 章節(jié)計(jì)算可知,根目錄區(qū)起始地址為:==0x3C000==,大小為==0x4000==,數(shù)據(jù)內(nèi)容如下:

1.jpg

以下是對(duì)數(shù)據(jù)字段進(jìn)行分析后的內(nèi)容,如下圖所示:

1.jpg

格式化之后,默認(rèn)會(huì)生成一個(gè)System Volume Infomation的系統(tǒng)文件夾,同時(shí)此文件夾是根目錄下唯一的一個(gè)文件,因此在根目錄的數(shù)據(jù)如上圖所示。

此文件夾為目錄屬性,是隱藏的系統(tǒng)目錄

長文件名為System Volume Information,短文件名為SYSTEM~1

==此目錄指向存放的數(shù)據(jù)在2號(hào)簇(對(duì)應(yīng)數(shù)據(jù)區(qū)第一個(gè)簇),文件大小字段,由于此文件為目錄屬性,此字段無意義,因此強(qiáng)制為0==

至此,根目錄區(qū)分析完了,同時(shí)根目錄區(qū)的 System Volume Information文件指向數(shù)據(jù)區(qū)第一個(gè)簇(2號(hào)簇),接下來我們便進(jìn)入數(shù)據(jù)區(qū)進(jìn)行分析。

5.4 數(shù)據(jù)區(qū)分析

根據(jù) 4.3 章節(jié)計(jì)算可知,數(shù)據(jù)區(qū)起始地址為:0x40000,大小為242176 * 512 = 0x764 0000,數(shù)據(jù)內(nèi)容如下:

1.jpg

對(duì)應(yīng)數(shù)據(jù)字段分析如下:

1.jpg

System Volume Information 目錄下存在兩個(gè)文件,分別是IndexerVolumeGuid 和 WPSettings.dat。根據(jù)上述分析可知:

IndexerVolumeGuid文件的數(shù)據(jù)存放在 FAT[3],3號(hào)簇上,即數(shù)據(jù)區(qū)的第3個(gè)簇(數(shù)據(jù)區(qū)的第1個(gè)簇為2號(hào)簇);

WPSettings.dat 文件的數(shù)據(jù)存放在 FAT[4],4號(hào)簇上,即數(shù)據(jù)區(qū)的第2個(gè)簇(數(shù)據(jù)區(qū)的第1個(gè)簇為2號(hào)簇);

首先,我們跳轉(zhuǎn)到4號(hào)簇上查看IndexerVolumeGuid的數(shù)據(jù),對(duì)應(yīng)地址計(jì)算方式為:

FirstSectorofCluster = DataStartSector + (N - 2) BPB_SecPerClus = 512 + (4 - 2) 4

= 520;

對(duì)應(yīng)地址為: FirstSectorofCluster BPB_BytsPerSec = 520 512 = 0x0004 1000

1.jpg

接著跳轉(zhuǎn)到3號(hào)簇上查看WPSettings.dat的數(shù)據(jù),對(duì)應(yīng)地址計(jì)算方式為:

FirstSectorofCluster = DataStartSector + (N - 2) BPB_SecPerClus = 512 + (3 - 2) 4

= 516;

對(duì)應(yīng)地址為: FirstSectorofCluster BPB_BytsPerSec = 520 512 = 0x0004 0800

1.jpg

5.5 新增文件測(cè)試

在根目錄下新增 test 目錄,使用winhex更新磁盤數(shù)據(jù),觀察各數(shù)據(jù)區(qū)變化

保留區(qū)無變化

FAT區(qū)變化如下:

1.jpg

根目錄區(qū)變化如下:

1.jpg

數(shù)據(jù)區(qū)變化:

1.jpg

新增long file test文件夾,里面存入一個(gè) ==長度為 2050 Byte(占據(jù)兩個(gè)簇的空間)== 的test.txt文件,使用winhex重新打開磁盤進(jìn)行分析。

1.jpg

保留區(qū)無變化

FAT區(qū)變化如下:

1.jpg

根目錄區(qū)變化如下:

1.jpg

數(shù)據(jù)區(qū)變化如下:

long file test 目錄數(shù)據(jù)指向6號(hào)簇,跳轉(zhuǎn)至6號(hào)簇,地址 DataStartSector + (N - 2) * BPB_SecPerClus = 0x40000 + (6-2) * 4 * 512 = 0x420000

1.jpg

test.txt 文件指向 7號(hào)簇,跳轉(zhuǎn)至7號(hào)簇,地址 DataStartSector + (N - 2) * BPB_SecPerClus = 0x40000 + (7-2) * 4 * 512 = 0x428000,均為test.txt的實(shí)際有效數(shù)據(jù),如下:

1.jpg

  1. 總結(jié)

    以上便是關(guān)于FAT文件系統(tǒng)的全部分析了,通過上述分析,外加新增文件輔助理解,對(duì)于文件在FAT文件系統(tǒng)下如何管理、存儲(chǔ),相信已經(jīng)有了非常深入的了解。

FAT文件系統(tǒng)分為四個(gè)區(qū):

保留區(qū)最重要的是里面包含引導(dǎo)扇區(qū),引導(dǎo)扇區(qū)內(nèi)存放著BIOS參數(shù)信息,通過此參數(shù)可以知道FAT文件系統(tǒng)的flash布局,以及flash大小,fat塊大小、簇大小等關(guān)鍵信息;

FAT區(qū),記錄了文件所占用簇的情況,以及對(duì)于文件大小大于一個(gè)簇的文件,在FAT區(qū)內(nèi)形成簇鏈,記錄文件由哪幾個(gè)簇組成

根目錄區(qū),只有FAT12/16系統(tǒng)所有,記錄了根目錄下的文件/目錄條目信息

數(shù)據(jù)區(qū),記錄數(shù)據(jù)分為兩個(gè)部分,第一部分為目錄信息,除根目錄外,每個(gè)文件夾需要占據(jù)一個(gè)及以上的簇描述對(duì)應(yīng)目錄下的文件情況;第二部分為具體文件數(shù)據(jù)。兩部分?jǐn)?shù)據(jù)通過短文件名SFN字段進(jìn)行關(guān)聯(lián)!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SFN
    SFN
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    9020
  • fat32文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6707
  • FAT12
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1710
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FATFS文件系統(tǒng)移植

    FatFs 是用于小型嵌入式系統(tǒng)的通用 FAT/exFAT 文件系統(tǒng)模塊。FatFs 模塊是按照 ANSI C (C89) 編寫的,與磁盤 I/O 層完全分離。因此它獨(dú)立于平臺(tái)。它可以
    的頭像 發(fā)表于 06-06 09:28 ?4502次閱讀
    <b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b>移植

    STM32CubeMx入門教程(10):Fatfs文件系統(tǒng)的應(yīng)用

    導(dǎo)語"fatfs是一個(gè)小型的文件系統(tǒng),在小型的嵌入式系統(tǒng)中使用非常的廣泛,STM32CubeMx自帶該文件系統(tǒng),我們通過簡單的配置就能夠使用,將前面的SD卡的讀寫操作進(jìn)行修改,將
    發(fā)表于 07-12 11:39 ?4907次閱讀
    STM32CubeMx入門教程(10):<b class='flag-5'>Fatfs</b><b class='flag-5'>文件系統(tǒng)</b>的應(yīng)用

    FATFS文件系統(tǒng)移植

    這是本人,整理的FATFS文件系統(tǒng)移植資料,很少的一部分,希望大家把自己搜到的比較好的資料,分享一下,本人正在學(xué)習(xí)fatfs文件系統(tǒng),希望和高手討論,
    發(fā)表于 09-11 16:05

    FATFS文件系統(tǒng)簡介

    FATFS文件系統(tǒng)1.FATFS文件系統(tǒng)簡介2. 硬件設(shè)計(jì)3. 軟件設(shè)計(jì)3.1 STM32CubeMX設(shè)置3.2 MDK-ARM編程4. 下載驗(yàn)證
    發(fā)表于 08-10 08:14

    FatFs文件系統(tǒng)的原理是什么?如何對(duì)FATFS進(jìn)行移植?

    FatFs文件系統(tǒng)的原理是什么?FatFs文件系統(tǒng)的移植方法是什么?如何實(shí)現(xiàn)eMMC卡中文件的讀寫及其它操作?
    發(fā)表于 11-25 07:52

    stm32+sdio+fatfs文件系統(tǒng)_源碼分析

    stm32+sdio+fatfs文件系統(tǒng)介紹,通俗易懂。
    發(fā)表于 11-06 09:52 ?25次下載

    FatFs文件系統(tǒng)使用

    STM系列FatFs文件系統(tǒng)使用文件,希望對(duì)大家有幫助。
    發(fā)表于 11-06 18:10 ?8次下載

    基于SD卡的FATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉

    基于SD卡的FATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉。
    發(fā)表于 04-14 16:46 ?40次下載

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第5章、Linux文件系統(tǒng)與設(shè)備文件系統(tǒng)

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第5章、Linux文件系統(tǒng)與設(shè)備文件系統(tǒng)
    發(fā)表于 10-27 14:13 ?0次下載
    《Linux設(shè)備驅(qū)動(dòng)開發(fā)<b class='flag-5'>詳解</b>》第5章、Linux<b class='flag-5'>文件系統(tǒng)</b>與設(shè)備<b class='flag-5'>文件系統(tǒng)</b>

    CH579 SPIFLASH W25Q64 FATFS文件系統(tǒng)

    CH579 SPIFLASH W25Q64 FATFS文件系統(tǒng)(arm嵌入式開發(fā)平臺(tái)PB)-W25Qxx的SPIFlash掛載文件系統(tǒng),實(shí)現(xiàn)掛載fatfs
    發(fā)表于 08-04 11:44 ?78次下載
    CH579 SPIFLASH W25Q64 <b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b>

    Fatfs文件系統(tǒng)的移植)

    Fatfs文件系統(tǒng)的移植)一、文件系統(tǒng)介紹二、移植條件、說明1、FatFs模塊在可移植性方面設(shè)定了以下條件:2、數(shù)據(jù)類型說明3、系統(tǒng)框架
    發(fā)表于 11-15 18:51 ?22次下載
    <b class='flag-5'>Fatfs</b>(<b class='flag-5'>文件系統(tǒng)</b>的移植)

    FATFS文件系統(tǒng)詳解

    采用的獨(dú)特的文件系統(tǒng)結(jié)構(gòu)CDFS:CDFS是大部分的光盤的文件系統(tǒng)exFATFATFS文件系統(tǒng)FATFS是一個(gè)完全免費(fèi)開源的FAT 文件系統(tǒng)
    發(fā)表于 11-29 09:51 ?29次下載
    <b class='flag-5'>FATFS</b><b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>詳解</b>

    文件系統(tǒng)FatFs文件系統(tǒng)在嵌入式芯片LPC18XX上的移植

    文件系統(tǒng)FatFs文件系統(tǒng)在嵌入式芯片LPC18XX上的移植
    發(fā)表于 12-04 10:51 ?12次下載
    【<b class='flag-5'>文件系統(tǒng)</b>】<b class='flag-5'>FatFs</b><b class='flag-5'>文件系統(tǒng)</b>在嵌入式芯片LPC18XX上的移植

    FATFS文件系統(tǒng)原版文件下載

    FATFS文件系統(tǒng)原版文件下載
    發(fā)表于 06-25 09:02 ?0次下載

    文件系統(tǒng)FatFs的移植

    FATFS是一個(gè)完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)。它完全用標(biāo)準(zhǔn)C語言編寫,所以具有良好的硬件平臺(tái)獨(dú)立性,甚至可以移植到8位的單片機(jī)上而只需做簡單的修改。
    的頭像 發(fā)表于 03-01 14:38 ?1830次閱讀
    <b class='flag-5'>文件系統(tǒng)</b><b class='flag-5'>FatFs</b>的移植