衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FAT32文件系統詳細分析 (格式化SD nand/SD卡)

深圳市雷龍發展有限公司 ? 2023-10-18 17:12 ? 次閱讀

文章目錄

FAT32文件系統詳細分析 (續FAT文件系統詳解)

1. 前言

2. 格式化SD nand/SD卡

3. FAT32文件系統分析

3.1 保留區分析

3.1.1 BPB(BIOS Parameter Block) 及BS區分析

3.1.2 FSInfo 結構扇區分析

3.1.3 引導扇區剩余扇區

3.1.4 備份引導扇區

3.1.5 保留區剩余區域

3.2 分區偏移及大小計算

3.3 FAT區分析:

3.3.1 FAT1

3.3.2 FAT2

3.4 數據區分析:

4. 總結

1. 前言

續上一篇文章 : FATFS文件系統詳解:關于如SD卡、SD nand、spi nor flash等眾多存儲設備

在上一篇文章,我們已經對FAT文件系統有了一個詳細的介紹,但由于FAT文件系統由歷史發展,存在FAT12/16/32三種系統,在上一篇文章中采用的是FAT16系統作為實例進行的分析,而FAT32系統存在些許差異,且FAT32文件系統在當前應用廣泛,因此特補充此篇博文,完善FAT32的示例分析。

2. 格式化SD nand/SD卡

申請到雷龍發展代理的CS創世 貼片 SD Card (SD NAND) 樣品,做出測試,有1Gb,4Gb,32Gb,64Gb的容量可選,我這里申請到的是兩片32Gb的芯片和測試板.

get?code=N2ZhM2RmMjNiOGU3ZTA5NDIwMzJlYzM1YjRkMDNmOGYsMTY5NzYxNTczMDAwNQ==

2.1 格式化SD nand / SD卡,強制采用FAT32格式,分配每個簇大小為2048Byte,同時為了避免其他原有數據干擾,我們此處取消快速格式化。

get?code=YmU4MmM3YzhmYThiMmEzY2U5MWFjZDRhMjFkZDQ5ZDUsMTY5NzYxNTczMDAwNQ==

2.2 使用 WinHex 打開分析

3. FAT32文件系統分析

FAT文件系統布局圖如下,和FAT16上有些許差別:

get?code=OWRiZGM0MmY5ODBhZGFmZTc4MzFiOTdlOWZlYmE0ZDYsMTY5NzYxNTczMDAwNg==

3.1 保留區分析

保留區分為引導扇區、備份引導扇區及其他字段,具體數據段分析如下。

3.1.1 BPB(BIOS Parameter Block) 及BS區分析

BPB及BS參數內容數據如下:

get?code=NzRjNzQwNzY0OWIyODc4NTQwMjc4NDExZjNmOWEzMGEsMTY5NzYxNTczMDAwNg==
  • EB 58 90 :BS_JmpBoot,跳轉指令
  • 4D 53 44 4F 53 35 2E 30:BS_OEMName,MSDOS 5.0,一個名字,指示創建此卷的操作系統,無其他作用`
  • 00 02:BPB_BytsPerSec,扇區大小 512 字節
  • 04:BPB_SecPerClus,每次操作的最小扇區數,簇 Cluster,4 (與格式化時選擇的大小匹配 2048 = 512 * 4)
  • 16 11:BPB_RsvdSecCnt,保留區的扇區數,0x1116=4374 (通過此可計算,FAT區起始地址為 4374 * 512 = 0x22 2C00)
  • 02:BPB_NumFATs,FATs的個數,2(一般此值為2,多一個用來做冗余備份,解決系統異常導致第一個損壞時,增大恢復的可能性,表示FAT區有兩個FATs備份)
  • 00 00:BPB_RootEntCnt,0,在FAT12/16系統中,此字段表示根目錄中32字節目錄條目數量,設置此值時需注意對齊,為了最大的兼容性,FAT16系統上此值應設置為512,FAT32系統上此值應設置為0
  • 00 00:BPB_TotSec16,16位大小區域描述FAT卷扇區總數,0。當FAT12/16系統扇區數 ≥0x10000(65536)時,此字段應設置為0,真實值存放在 BPB_TotSec32 字段;對于FAT32系統,此值必須為0。(此處由于我們的總扇區數=118.510241024/512 = 242688 > 65536,所以此字段為0)
  • F8:BPB_Media 媒體類型
  • 00 00:BPB_FATSz16,00,一個FAT占用的扇區數,此字段僅在FAT12/16系統使用;FAT32系統,此字段必須為0,使用BPB_FATSz32字段替代。
  • 3F 00:BPB_SecPerTrk,每個磁道的扇區數,此字段僅與具有幾何形狀且僅用于 IBM PC 的磁盤 BIOS 的介質相關,不用管。
  • FF 00:BPB_NumHeads,頭數量,此字段僅與具有幾何形狀且僅用于 IBM PC 的磁盤 BIOS 的介質相關,不用管。
  • 00 00 00 00:BPB_HiddSec,0,FAT 卷之前的隱藏物理扇區數(當磁盤被分區之后,當前分區并不一定是從扇區頭開始的)
  • 00 08 0F 00:BPB_TotSec32,0x0F0800 = 985088(整個卷空間大小),32位大小區域描述FAT卷扇區總數。 FAT12/16系統,扇區總數小于0x10000時,此字段必須為0,真實值存放在BPB_FATSz16;FAT32系統,此字段一直有效。(481M = 512 * 985088)

以上是FAT12/16/32公共字段,接下來是FAT32獨有字段

  • 75 07 00 00:BPB_FATSz32,1909,一個FAT占用的扇區數,FAT區總大小等于 BPB_FATSz?? * BPB_NumFATs 扇區。(由此可計算FAT區總大小:1909 * 2 = 3818扇區 = 3818 * 512Byte = 0x1D D400 Byte)
  • 00 00: BPB_ExtFlags,擴展標識字段,bit7=0,表示所有FAT都是鏡像的和活躍的;bit7=1,表示只有bit3-0表示的FAT是有效的。
  • 00 00:BPB_FSVer:FAT32版本,高字節是主版本號,低字節是次版本號。
  • 02 00 00 00:BPB_RootClus,2, 根目錄的第一個簇號,此值通常為2,因為前兩個簇一般用于保留。
  • 01 00:BPB_FSInfo,1,FSInfo結構扇區與FAT32卷頂部的偏移扇區值。此值通常為1,因為其通常位于引導扇區旁邊。
  • 06 00:BPB_BkBootSec,6, 備份引導扇區與FAT32卷頂部的偏移扇區值。此值通常為6,考慮最大的兼容性,此值不建議為其他值。
  • 00 00 00 00 00 00 00 00 00 00 00 00:BPB_Reserved,0,保留
  • 80:BS_DrvNum,IBM PC 的磁盤 BIOS 使用的驅動器號,00h代表軟盤,80h代表固定磁盤
  • 00:BS_Reserved,保留字段,0
  • 29:BS_BootSig,擴展引導簽名,表示以下存在三個字段
  • 30 D1 B5 78:BS_VolID,與 BS_VolLab 一起構成卷序列號,一般在格式化的時候結合時間生成
  • 4E 4F 20 4E 41 4D 45 20 20 20 20:(解析為:"NO NAME “),BS_VolLab,11byte卷標,當卷標不存在時,此值應設置為"NO NAME”
  • 46 41 54 33 32 20 20 20:BS_FilSysType,始終為"FAT32 ",對FAT類型的確定沒有任何影響。
  • 33 C9 ... B9 01 00 00:BS_BootCode32,引導啟動程序,與平臺有關,不使用時填充為0
  • BS_BootSign:0xAA55,引導簽名,指示這是一個有效的引導扇區當扇區大小大于512字節時,剩余的字段應全部使用0x0填充。

3.1.2 FSInfo 結構扇區分析

FSInfo 數據結構為FAT32系統所特有,其目的是記錄FAT32系統上剩余的簇數量以及下一個空閑簇數據;以避免掃描整個磁盤搜索導致的時間浪費。

FSInfo數據偏移可從引導扇區內的 BPB_FSInfo 參數獲取,此處為 1,因此 FSInfo 數據偏移為1個扇區,對應512Byte,0x200地址處。FSInfo數據結構如下:

get?code=NjZjYmE2ZjM4NTBkYjRhYTc0MzMzNTQwZWZkYTg3ZTgsMTY5NzYxNTczMDAwNg==

內容如下:

get?code=MDU2YmQyMzAxOTQ2OWVmODU0ZjMwZDE1YWFhODUzMzMsMTY5NzYxNTczMDAwNg==

3.1.3 引導扇區剩余扇區

FAT32引導扇區總共有三個512Byte的扇區構成。BPB、BS、FSInfo字段已使用了2個扇區,還剩有一個扇區未使用,字段為0,如下圖所示,需要注意的是,此扇區在偏移值510處依舊存在尾部簽名0xAA55。

get?code=OTlhODc0MTJkMDhhZWYzZDFlNzkzYTcxNzk0NjQyODgsMTY5NzYxNTczMDAwNg==

引導扇區剩余字段,為非有效字段,采用0x00填充。

3.1.4 備份引導扇區

相比FAT12/16,FAT32系統上存在引導扇區的備份,此塊區域偏移參考引導扇區內BPB_BkBootSec字段,當前引導扇區內此參數值為6, 因此在當前文件系統內,備份引導扇區的偏移為 6號扇區,對應偏移地址為 BPB_BkBootSec * BPB_BytsPerSec = 6 * 512Byte = 3072Byte = 0xC00

get?code=NjkwNzlhMWQzN2I3ZmQ4N2IwNWMyNmQwMDU0OWI3NGYsMTY5NzYxNTczMDAwNg==get?code=NGMxZDA2MzA2NWI5NmFhNDk2NjczZDdiYTc2N2RjNTYsMTY5NzYxNTczMDAwNg==

3.1.5 保留區剩余區域

在FAT32系統中,保留區除了 BPB區域、FSInfo區域以及這兩個區域的備份區域外,還有一部分區域,目前我沒找到此區域的作用,我理解為此塊區域是作為某種引導程序,數據內容如下:

get?code=MThmNjhkMGYyZTIxNzIyYmU0NTc2ZTM5Y2Q5ZWFhYjQsMTY5NzYxNTczMDAwNg==

關于此塊區域,歡迎大家在評論區討論!

此外,還有一處區域的存在也歡迎大家討論,即FSInfo扇區后面的一個扇區,只有看到尾部簽名,其他數據為空,目前也未找到此處有關說明,后續清楚后會在此補充,亦歡迎大家在評論區討論!

get?code=ZmNiY2NkMGYwNDg0YTQ5YzQyZWU5YzA5Y2M2MTcwZmYsMTY5NzYxNTczMDAwNg==

3.2 分區偏移及大小計算

知道BPB參數內容之后,便可以進行分區偏移及大小計算了!

各分區偏移地址及大小如下:

get?code=MjdkY2FkZjljZjkyYjA0NzRhMThiZDlmNTY4MGZjN2QsMTY5NzYxNTczMDAwNg==

關于FAT區,通常存在一個以上的FAT,如此處所格式化的sd卡便存在兩個FAT,對應的偏移地址和大小如下:

get?code=MGI3ZTQyY2E3YmU5NDA5OGU1MTM4MDJkMTIzYjA2MGEsMTY5NzYxNTczMDAwNg==

注意:在FAT32系統中,根目錄區不存在,但依舊存在根目錄,不過是根目錄作為數據區的一部分!

3.3 FAT區分析:

FAT32系統與FAT12/16系統在FAT區數據一個顯著差別是:FAT32每條FAT條目占32bit,FAT16占16個bit,FAT12占12bit。關于此部分更詳細描述,可參考上一篇:FAT文件系統詳解(點擊跳轉!) 的 4.3 章節!

3.3.1 FAT1

FAT1偏移地址:0x22 2C00

數據內容如下:

get?code=MTY1M2MzNDliNGI3OWY5NDA1ZjE0NjU2ZDZiYjhkMjYsMTY5NzYxNTczMDAwNg==

3.3.2 FAT2

FAT2是FAT1的備份,偏移地址:0x31 1600
數據內容與FAT1一致,如下:

get?code=ZDViY2EyNDFjOTNkZTc4ZmQ1OGNlNzgxMWJkNDY5NzYsMTY5NzYxNTczMDAwNg==

3.4 數據區分析:

偏移地址:0x40 0000
由參數BPB_RootClus可知,數據區第一個簇是2號簇。

打開數據區的第一個簇,里面存放的內容便是根目錄的內容!這也就是為什么FAT32沒有根目錄區,但依舊存在根目錄的實現方式。數據內容如下:

get?code=NDUzYzA1ODgyYTMzN2RmNTUwNjU2NzAyM2QyOGNiNjgsMTY5NzYxNTczMDAwNg==

之后我們看到3號簇的內容:
數據字段如下圖所示,由于在上一篇博文中已對長短文件名每個字段進行過細致分析,此處不再做過度分析,僅抽取關鍵字段進行分析,如下圖所示:

get?code=Njg3MGE2ODc4MDg0Y2Q5Yjk0OWI0OGFhMTkxOTA5NjYsMTY5NzYxNTczMDAwNg==

之后切換到4號簇和5號簇,可以查看到對應數據:

get?code=NmUzZmI3ZTZkZDQwOWQxOTkyYjQ0MDVkYzEzZGRiOTUsMTY5NzYxNTczMDAwNg==get?code=MWNkY2NiN2EwMWYzMWQ2MzRkMmFhZWQxMTEyNTdkYmUsMTY5NzYxNTczMDAwNg==

從6號簇開始便沒有在使用,均為空閑簇,對應上 FSInfo 結構內 FSI_Nxt_Free 字段的內容。

4. 總結

相比FAT16系統,FAT32文件系統在保留區有了更多的設計:

1)增加了引導扇區的備份,異常掉電等情況下可恢復性更強;

2)增加了FSInfo結構,對于大容量flash訪問將更加高效;

此外FAT32系統取消了根目錄區,將根目錄移至數據區,根目錄與普通目錄本來就沒有什么區別,確實也不用單獨分一個區存放,提高了一致性。

關于數據的存儲思想,依舊保持不變:FAT區內的FAT條目通過簇鏈記錄扇區使用情況及文件占用的扇區情況;數據區內目錄和文件都作為文件,通過目錄這一類特殊文件,描述文件屬性以及實際文件內容存放的簇的方式,將整個文件管理起來。

綜上,便是FAT32格式文件系統的詳細解析,歡迎大家評論區進行積極討論與反饋!!!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NAND
    +關注

    關注

    16

    文章

    1690

    瀏覽量

    136459
  • SD卡
    +關注

    關注

    2

    文章

    566

    瀏覽量

    64108
  • FAT32
    +關注

    關注

    0

    文章

    33

    瀏覽量

    13829
  • TF卡
    +關注

    關注

    2

    文章

    81

    瀏覽量

    12246
收藏 人收藏

    評論

    相關推薦

    SD NAND、SPI NAND 和 Raw NAND 的定義與比較

    問題,再也不用為SD的接觸穩定性操心! SD nandSD 、SPI Nor flas
    的頭像 發表于 01-15 18:16 ?139次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>、SPI <b class='flag-5'>NAND</b> 和 Raw <b class='flag-5'>NAND</b> 的定義與比較

    EE-329:在SHARC處理器上運行FAT16文件系統和DOS命令

    電子發燒友網站提供《EE-329:在SHARC處理器上運行FAT16文件系統和DOS命令.pdf》資料免費下載
    發表于 01-06 14:22 ?0次下載
    EE-329:在SHARC處理器上運行<b class='flag-5'>FAT</b>16<b class='flag-5'>文件系統</b>和DOS命令

    EE-289:在ADSP-BF533 Blackfin處理器上實現FAT32文件系統

    電子發燒友網站提供《EE-289:在ADSP-BF533 Blackfin處理器上實現FAT32文件系統.pdf》資料免費下載
    發表于 01-05 09:13 ?0次下載
    EE-289:在ADSP-BF533 Blackfin處理器上實現<b class='flag-5'>FAT32</b><b class='flag-5'>文件系統</b>

    SD NAND 概述

    SD NAND是一種小型、可表面貼裝的存儲解決方案,適用于各種嵌入式系統和便攜式設備。SD NAND技術是近年來在存儲領域內的一項創新,它結
    的頭像 發表于 12-06 11:21 ?248次閱讀

    帶你了解什么是SD NAND存儲芯片

    XST_FAILURE; } return XST_SUCCESS; }   以上是本次實驗使用到的部分代碼,里面包含了外設,標準的打印函數和SD控制器的功能,在程序中先進行格式化S
    發表于 11-13 15:20

    貼片式SD功能介紹【MK SD NAND

    技術與傳統SD不同,SD NAND使用貼裝式封裝,允許直接焊接至電子設備的PCB上,提供一種內置的存儲功能。
    的頭像 發表于 07-05 17:03 ?922次閱讀
    貼片式<b class='flag-5'>SD</b><b class='flag-5'>卡</b>功能介紹【MK <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>】

    使用wear_level api來安裝fat文件系統,如何格式化FAT文件系統

    后,將導致無法再向該文件地址中寫新的文件,也就是無法操作該文件系統。所以我想格式化這個文件系統,可是找不到接口去做這個操作,請各位指教!
    發表于 06-26 06:51

    SD、MicroSDSD NAND的性能與應用對比

    在當前豐富多元的存儲解決方案領域,SD、MicroSD以及SD NAND憑借其各自的獨特優勢和特定的使用情景,贏得了市場的廣泛認可。每種
    的頭像 發表于 06-14 15:48 ?1015次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>、MicroSD<b class='flag-5'>卡</b>和<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>的性能與應用對比

    SD NAND異常問題案例——文件系統

    近期,有用戶在使用SD NAND中出現芯片出現讀寫異常現象,我們工程師對出現異常的3片芯片進行分析,發現3片均能正常讀卡,里面的文件大多數可以正常讀取,個別顯示
    的頭像 發表于 06-14 09:48 ?599次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>異常問題案例——<b class='flag-5'>文件系統</b>篇

    SD NAND文件系統:技術解析與應用指南

    MK米客方德的SD NAND是一種使用NAND閃存技術的貼片式TF,因起耐用性和較小的體積而受到廣泛歡迎。SD
    的頭像 發表于 06-07 14:45 ?482次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>與<b class='flag-5'>文件系統</b>:技術解析與應用指南

    Micro SD短路原因分析及預防措施

    Micro SD作為常見的存儲設備,被廣泛應用于智能手機、數碼相機、無人機等設備中。然而,Micro SD短路問題時有發生,這不僅影響了用戶的使用體驗,還可能導致數據丟失。本文將
    的頭像 發表于 05-31 11:13 ?1093次閱讀
    Micro <b class='flag-5'>SD</b><b class='flag-5'>卡</b>短路原因<b class='flag-5'>分析</b>及預防措施

    FX3SRAID0將文件復制到用exFAT格式化SD時,數據有時會寫錯,為什么?

    我在使用 FX3SRAID0 傳輸數據時也遇到了同樣的問題。 將文件復制到用 exFAT 格式化SD 時,問題就出現了。 數據有時會寫錯。
    發表于 05-29 07:10

    CubeMx可以生成FAT32文件系統嗎?

    大家好!MCU型號:STM32L476R 我測試發現 CubeMX 生成的文件系統FAT16 的。請教一下,CubeMx 可以生成 FAT32文件系統嗎?
    發表于 04-19 07:11

    如何將SD眾多文件打包成一個.img文件方便一鍵燒寫呢?

    手動分成3分區(fat32、raw 和ext3),然后將preloader 、uboot、kernel、rootfile、rbf、dtb、 uboot.scr 文件拷貝到不同的分區,最后插到DE10-Nano 開發板進行啟動。
    的頭像 發表于 04-16 16:28 ?1665次閱讀
    如何將<b class='flag-5'>SD</b><b class='flag-5'>卡</b>眾多<b class='flag-5'>文件</b>打包成一個.img<b class='flag-5'>文件</b>方便一鍵燒寫呢?

    SD卡座的引腳定義詳細分析

    SD卡座是SD與主板之間的接口,其主要作用是傳輸數據和供電。SD卡座通常有9個引腳,關于SD卡座的引腳定義,不同引腳定義了代表著不同的功能
    的頭像 發表于 02-27 15:33 ?4985次閱讀
    <b class='flag-5'>SD</b>卡座的引腳定義<b class='flag-5'>詳細分析</b>
    大发888官方下载安装| 玩百家乐官网秘诀| 二代百家乐官网破解| 哪个百家乐最好| 澳门百家乐官网游戏下| 百家乐赌博破解| 网络棋牌游戏排行榜| 百家乐官网开户送10彩金| 广东百家乐官网扫描分析仪| 百家乐官网官网7scs| 高手百家乐赢钱法| 电脑赌百家乐可靠吗| 网上娱乐城| 百家乐官网发脾机| 百家乐打揽法| 百家乐官网论坛百科| 百家乐游戏奥秘| 大发888官方 3000| 哪里有百家乐官网投注网| 王子百家乐官网的玩法技巧和规则 | 德州扑克几副牌| 百家乐官网冯耕耘打法| 网上赌百家乐官网有假| 玩百家乐的好处| 澳门百家乐官网园游戏| 百家乐视频桌球| 大发888娱乐场zb8| 百家乐官网玩法规| 百家乐官网网址是多少| 百家乐的如何玩| 冠通网络棋牌世界| 百家乐官网排名| 百家乐平注法口诀技巧| 澳门百家乐官网娱乐城注册| 百家乐赢钱密籍| 三易博娱乐场| 24山分金吉凶断| 大发888赌场的微博| 百家乐官网赌博筹码| 威尼斯人娱乐城 老品牌值得信赖| 波音百家乐官网现金网投注平台排名导航 |