Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ etc 000001A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 82 ................ 000001C0 03 00 0C FE FF FF 00 20 00 00 A3 6B CF 01 00 00 ....... ...k.... 000001D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U. Partition entry N°1: 000001BE 00 82 03 00 0C FE FF FF 00 20 00 00 A3 6B CF 01 Partition entry N°2: 000001CE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Partition entry N°3: 000001DE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Partition entry N°4: 000001EE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00Layout of one 16-byte partition entry (all multi-byte fields are little-endian)
Offset | Description | Taille en octet | Dans cette carte |
---|---|---|---|
0 | 0x80 si actif (bootable), 0 sinon | 1 | 00 |
1 | Début de la partition dans l'adressage CHS | 3 | 82 03 00 → 0x0382 |
4 | Type de la partition | 1 | 0C |
5 | Fin de la partition dans l'adressage CHS | 3 | FE FF FF |
8 | Décalage relatif à la partition dans les secteurs (LBA) | 4 | 00 20 00 00 → 0x00002000 (8192) |
12 | Taille de la partition dans les secteurs | 4 | A3 6B CF 01 → 0x01CF6BA3 (30370723 soit 32Go) |
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000000000 EB 58 90 →JUMP 000000003 4D 53 44 4F 53 35 2E 30 →OEM ID "MSDOS5.0" 00000000B 00 02 → 0x0200 soit 512octets par secteurs BPB_BytsPerSec=0x200 00000000D 10 → Secteurs par cluster 16 soit 16x512→8ko BPB_SecPerClus=0x10 00000000E 22 00 → BPB_RsvdSecCnt : Secteurs réservés. Le nombre de secteurs précédant le début de la première FAT, y compris le secteur de démarrage. 0x0022 soit 34 secteurs BPB_RsvdSecCnt=0x22 000000010 02 → Nombre de copie du FAT BPB_NumFATs=0x02 000000011 00 00 → BPB_RootEntCnt Entrées racines (FAT12 / FAT16 uniquement). 000000013 00 00 → Petits secteurs (FAT12 / FAT16 seulement). 000000015 F8 → BPB_Media Descripteur de média.0xF8 indique un disque dur. 000000016 00 00 → Secteurs par FAT (FAT12 / FAT16 uniquement). 000000018 3F 00 → Secteurs par piste 0x003F soit 63 secteurs 00000001A FF 00 → Nombre de têtes. 00000001C 00 20 00 00 → Secteurs cachés. Le nombre de secteurs sur le volume avant le secteur de démarrage. 0x00002000 soit 8192 secteurs 000000020 A3 6B CF 01 → 30.370.723 secteurs total 000000024 DF 39 00 00 → Secteurs par FAT (FAT32 seulement) BPB_FATSz32=0x39DF 000000028 00 00 → BPB_ExtFlags. 00000002A 00 00 → BPB_FSVer Version du système de fichiers (FAT32 uniquement). 00000002C 02 00 00 00 → Le numéro de cluster du premier cluster du répertoire racine. (FAT32 uniquement). BPB_RootClus=0x0002 000000030 01 00 → BPB_FSInfo Numéro du secteur de l'information du système de fichiers (FAT32 uniquement). Numéro de cluster du premier cluster du répertoire racine. Root_dir_cluster=0x0001 000000032 06 00 → BPB_BkBootSec Secteur de démarrage de sauvegarde (FAT32 uniquement). (Secteur 0x0006) 000000034 00 00 00 00 00 00 00 00 00 00 00 00 → BPB_Reserved Réserve pour futur extension (FAT32 uniquement). 000000040 00 → BS_DrvNum:Numéro de lecteur physique. 000000041 00 → BS_Reserved1:Réservé. 000000042 29 → BS_BootSig :Signature de démarrage étendue. 0x29 ou 0x28 000000043 C1 C4 25 10 → BS_VolID:Numéro de série au hasard du volume. 000000047 4E 4F 20 4E 41 4D 45 20 20 20 20 → BS_VolLab:Ancienne étiquette de volume. "NO NAME" 000000052 46 41 54 33 32 20 20 20 → BS_FilSysType:System ID. Un champ de texte avec une valeur de "FAT32 " 00000005A 33 C9 8E D1 BC F4 000000060 7B 8E C1 8E D9 BD 00 7C 88 4E 02 8A 56 40 B4 08 000000070 CD 13 73 05 B9 FF FF 8A F1 66 0F B6 C6 40 66 0F 000000080 B6 D1 80 E2 3F F7 E2 86 CD C0 ED 06 41 66 0F B7 000000090 C9 66 F7 E1 66 89 46 F8 83 7E 16 00 75 38 83 7E 0000000A0 2A 00 77 32 66 8B 46 1C 66 83 C0 0C BB 00 80 B9 0000000B0 01 00 E8 2B 00 E9 48 03 A0 FA 7D B4 7D 8B F0 AC 0000000C0 84 C0 74 17 3C FF 74 09 B4 0E BB 07 00 CD 10 EB 0000000D0 EE A0 FB 7D EB E5 A0 F9 7D EB E0 98 CD 16 CD 19 0000000E0 66 60 66 3B 46 F8 0F 82 4A 00 66 6A 00 66 50 06 0000000F0 53 66 68 10 00 01 00 80 7E 02 00 0F 85 20 00 B4 000000100 41 BB AA 55 8A 56 40 CD 13 0F 82 1C 00 81 FB 55 000000110 AA 0F 85 14 00 F6 C1 01 0F 84 0D 00 FE 46 02 B4 000000120 42 8A 56 40 8B F4 CD 13 B0 F9 66 58 66 58 66 58 000000130 66 58 EB 2A 66 33 D2 66 0F B7 4E 18 66 F7 F1 FE 000000140 C2 8A CA 66 8B D0 66 C1 EA 10 F7 76 1A 86 D6 8A 000000150 56 40 8A E8 C0 E4 06 0A CC B8 01 02 CD 13 66 61 000000160 0F 82 54 FF 81 C3 00 02 66 40 49 0F 85 71 FF C3 000000170 4E 54 4C 44 52 20 20 20 20 20 20 00 00 00 00 00 000000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000001A0 00 00 00 00 00 00 00 00 00 00 00 00 0D 0A 52 65 ............♪◙Re 0000001B0 74 69 72 65 7A 20 6C 65 73 20 64 69 73 71 75 65 tirez les disque 0000001C0 73 FF 0D 0A 45 72 72 2E 20 64 69 73 71 75 65 FF s ♪◙Err. disque 0000001D0 0D 0A 50 72 65 73 73 65 7A 20 75 6E 65 20 74 6F ♪◙Pressez une to 0000001E0 75 63 68 65 20 70 6F 75 72 20 72 65 64 82 6D 61 uche pour redéma 0000001F0 72 72 65 72 0D 0A 00 00 00 AC C2 D0 00 00 rrer♪◙...¼┬╨.. 0000001F0 55 AA Boot Record Signature 0xAA55
Field | Microsoft's Name | Offset | Size | Value | Actual |
---|---|---|---|---|---|
Bytes Per Sector | BPB_BytsPerSec | 0x0B | 16 Bits | Always 512 Bytes | 0x200→512 |
Sectors Per Cluster | BPB_SecPerClus | 0x0D | 8 Bits | 1,2,4,8,16,32,64,128 | 0x10 |
Number of Reserved Sectors | BPB_RsvdSecCnt | 0x0E | 16 Bits | Usually 0x20 | 0x22 |
Number of FATs | BPB_NumFATs | 0x10 | 8 Bits | Always 2 | 0x02 |
Sectors Per FAT | BPB_FATSz32 | 0x24 | 32 Bits | Depends on disk size | 0x39DF |
Root Directory First Cluster | BPB_RootClus | 0x2C | 32 Bits | Usually 0x00000002 | 2 |
Signature | (none) | 0x1FE | 16 Bits | Always 0xAA55 | 0xAA55 |
RootDirSectors=0 sur FAT32 FirstDataSector = BPB_RsvdSecCnt + (BPB_NumFATs * BPB_FATSz32) + RootDirSectors 0x22 + 2 x 0x39DF + 0 = 0x73E0 (29664) FirstDataSector*BPB_BytsPerSec=0x73E0*0x200=0x000E7C000
Field | Microsoft's Name | Offset | Size Bytes |
---|---|---|---|
Short Filename1 | DIR_Name | 0x00 | 8 |
Short file extension | 0x08 | 3 | |
Attrib Byte2 | DIR_Attr | 0x0B | 1 |
Reserved | 0x0C | 1 | |
First Cluster High | DIR_FstClusHI | 0x14 | 2 |
First Cluster Low | DIR_FstClusLO | 0x1A | 2 |
File Size | DIR_FileSize | 0x1C | 4 |
0x00 | Entrée disponible, marque également la fin du répertoire |
0x05 | Le nom de fichier commence en fait par le caractère ASCII 0xE5 (valeur réservée) |
0x2E | Entrée '.' ou '..' |
0xE5 | Entrée supprimée. Les outils de recouvrement de fichiers supprimés remplacent ce caractère par un autre pour restaurer le fichier supprimé. |
Bit | Masque | Description |
---|---|---|
0 | 0x01 | Lecture seule |
1 | 0x02 | Fichier caché |
2 | 0x04 | Fichier système |
3 | 0x08 | Nom du volume |
4 | 0x10 | Sous-répertoire |
5 | 0x20 | Archive |
6 | 0x40 | Device (utilisé en interne, jamais sur disque) |
7 | 0x80 | Inutilisé |
Offset(h) | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2nd Long Entry | 000E7C020 | 0x42 | . | g | r | p | 00 | 0x0F | 0x00 | Check Sum | 0xFFFF | ||||||
000E7C030 | 0xFFFF | 0xFFFF | 0xFFFF | 0xFFFF | 0xFFFF | 0x0000 | 0xFFFF | 0xFFFF | |||||||||
1st Long Entry | 000E7C040 | 0x01 | h | o | m | e | r | 0x0F | 00 | Check Sum | - | ||||||
000E7C050 | s | i | m | p | s | 0x0000 | o | n | |||||||||
Short Entry | 000E7C060 | H | O | M | E | R | - | ~ | 1 | G | R | P | 20 | NT | Create time | ||
000E7C070 | Create Date | Last AccessDate | 0x0000 | Last Modified Time | Last Modified Date | First Cluster | File Size |
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C000 52 45 43 4F 56 45 52 59 20 20 20 08 00 00 00 00 RECOVERY ◘.... 000E7C010 00 00 00 00 00 00 1A 79 F3 4A 00 00 00 00 00 00 ......→y≤J...... 000E7C020 42 2E 00 67 00 72 00 70 00 00 00 0F 00 9C FF FF B..g.r.p...☼.£ 000E7C030 FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF .. 000E7C040 01 68 00 6F 00 6D 00 65 00 72 00 0F 00 9C 2D 00 ☺h.o.m.e.r.☼.£-. 000E7C050 73 00 69 00 6D 00 70 00 73 00 00 00 6F 00 6E 00 s.i.m.p.s...o.n. 000E7C060 48 4F 4D 45 52 2D 7E 31 47 52 50 20 00 94 6A 79 HOMER-~1GRP .öjy 000E7C070 F3 4A F3 4A 00 00 D0 33 E7 4A 03 00 28 C7 00 00 ≤J≤J..╨3τJ♥.(╟.. Cluster fichier : 29680 (0x73F0) Poids forts (000E7C074)= 0x0000 Poids faible (000E7C07A)= 0x0003 Lba =((CLUSTER-Root_dir_cluster) * BPB_SecPerCluster) + FirstDataSector =(0x03-0x02)*0x10+0x73E0 =0x73F0 Taille=0x0000C728 = 50.984 octets Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C080 42 2E 00 67 00 72 00 70 00 00 00 0F 00 0D FF FF B..g.r.p...☼.♪ 000E7C090 FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF .. 000E7C0A0 01 68 00 6F 00 6D 00 65 00 72 00 0F 00 0D 5F 00 ☺h.o.m.e.r.☼.♪_. 000E7C0B0 73 00 69 00 6D 00 70 00 73 00 00 00 6F 00 6E 00 s.i.m.p.s...o.n. 000E7C0C0 48 4F 4D 45 52 5F 7E 31 47 52 50 20 00 0A 6B 79 HOMER_~1GRP .◙ky 000E7C0D0 F3 4A F3 4A 00 00 67 3A E1 4A 0A 00 B7 7D 01 00 ≤J≤J..g:ßJ◙.╖}☺. Poids forts (000E7C0D4)= 0x0000 Poids faible (000E7C0DA)= 0x000A Lba =((CLUSTER-Root_dir_cluster) * BPB_SecPerCluster) + FirstDataSector =(0x0A-0x02)*0x10+0x73E0 =0x7460 (29792) Taille=0x00017DB7 = 97.719 octets Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C0E0 42 70 00 00 00 FF FF FF FF FF FF 0F 00 EE FF FF Bp... ☼.ε 000E7C0F0 FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF .. 000E7C100 01 53 00 63 00 6F 00 6F 00 62 00 0F 00 EE 79 00 ☺S.c.o.o.b.☼.εy. 000E7C110 2D 00 44 00 6F 00 6F 00 2E 00 00 00 67 00 72 00 -.D.o.o.....g.r. 000E7C120 53 43 4F 4F 42 59 7E 31 47 52 50 20 00 2B 6B 79 SCOOBY~1GRP .+ky 000E7C130 F3 4A F3 4A 00 00 CD 62 E8 4A 16 00 3F 3F 00 00 ≤J≤J..═bΦJ▬.??.. Cluster fichier : 29984 (0x7520) Poids forts (000E7C0E4)= 0x0000 Poids faible (000E7C0EA)= 0x0016 Lba =((CLUSTER-Root_dir_cluster) * BPB_SecPerCluster) + FirstDataSector =(0x16-0x02)*0x10+0x73E0 =0x7520 (29984) Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C140 41 53 00 68 00 61 00 67 00 67 00 0F 00 BC 79 00 AS.h.a.g.g.☼.╝y. 000E7C150 2E 00 67 00 72 00 70 00 00 00 00 00 FF FF FF FF ..g.r.p..... 000E7C160 53 48 41 47 47 59 20 20 47 52 50 20 00 49 6B 79 SHAGGY GRP .Iky 000E7C170 F3 4A F3 4A 00 00 FB 33 E7 4A 18 00 F7 4C 00 00 ≤J≤J..√3τJ↑.≈L.. Cluster fichier : 30016 (0x7540) Poids forts (000E7C174)= 0x0000 Poids faible (000E7C17A)= 0x0018 Lba =((CLUSTER-Root_dir_cluster) * BPB_SecPerCluster) + FirstDataSector =(0x18-0x02)*0x10+0x73E0 =0x7540 (30016) Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C180 E5 52 41 50 48 45 52 20 20 20 20 10 08 BD 66 60 σRAPHER ►◘╜f` E5 : Entrée supprimée. 000E7C190 A6 4A F4 4A 00 00 71 3C F4 4A 1B 00 00 00 00 00 ªJ⌠J..q<⌠J←..... ...
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 000E7C200 41 41 00 72 00 64 00 75 00 69 00 0F 00 1E 6E 00 AA.r.d.u.i.☼.▲n. 000E7C210 6F 00 00 00 FF FF FF FF FF FF 00 00 FF FF FF FF o... .. 000E7C220 41 52 44 55 49 4E 4F 20 20 20 20 10 00 0E 30 3D ARDUINO ►.♫0= 000E7C230 F4 4A F4 4A 00 00 31 3D F4 4A 47 00 00 00 00 00 ⌠J⌠J..1=⌠JG..... Adresse in FAT : 0x00000047 (0x47-2)*0x10+0x73E0=0x7830 Secteur 30768 FirstDataSector = 29664 (0x73E0)The last sector of this cluster is at 0x2004 + BPB_SecPerCluster -1 Résultat
STARTING...OK CMD0 BootSectorStart=0x2000 SecPerCluster=0x10 RsvdSecCnt=0x22 NumFATs=0x2 RootEntryCount=0x0 SecPerFAT=0x39DF filesystem=0x93E0 fat_begin_lba=0x2022 Nom du fichier Taille Secteur cluster HOMER-~1.GRP FILE 0000C728 ADR 000093F0 CLUSTER 00000003 HOMER_~1.GRP FILE 00017DB7 ADR 00009460 CLUSTER 0000000A SCOOBY~1.GRP FILE 00003F3F ADR 00009520 CLUSTER 00000016 SHAGGY .GRP FILE 00004CF7 ADR 00009540 CLUSTER 00000018 ARDUINO . DIR 00000000 ADR 00009830 CLUSTER 00000047 PYTHON . DIR 00000000 ADR 00009840 CLUSTER 00000048 TESTSD_5. DIR 00000000 ADR 0000A2E0 CLUSTER 000000F2 LECT_SD2. DIR 00000000 ADR 0000A380 CLUSTER 000000FC SIMPLE~1.ZIP FILE 002A5D46 ADR 0000A410 CLUSTER 00000105Exemple secteur de départ
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00002022 F8 FF FF 0F FF FF FF FF FF FF FF 0F 04 00 00 00 00002032 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 00002042 09 00 00 00 FF FF FF 0F 0B 00 00 00 0C 00 00 00 000020520D 00 00 00 0E 00 00 00 0F 00 00 00 10 00 00 00 0000206211 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 0000207215 00 00 00 FF FF FF 0F 17 00 00 00 FF FF FF 0F 0000208219 00 00 00 1A 00 00 00 FF FF FF 0F FF FF FF 0F 00002092FF FF FF 0F FF FF FF 0F FF FF FF 0F 20 00 00 00 000020A221 00 00 00 22 00 00 00 FF FF FF 0F FF FF FF 0F 000020B225 00 00 00 26 00 00 00 FF FF FF 0F FF FF FF 0F 000020C229 00 00 00 FF FF FF 0F FF FF FF 0F 2C 00 00 00 000020D2FF FF FF 0F FF FF FF 0F FF FF FF 0F 30 00 00 00 000020E2FF FF FF 0F FF FF FF 0F 33 00 00 00 FF FF FF 0F 000020F2FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 00002102FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 00002112FF FF FF 0F FF FF FF 0F FF FF FF 0F 40 00 00 00 0000212241 00 00 00 FF FF FF 0F FF FF FF 0F 44 00 00 00 00002132FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 00002142FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 00002152FF FF FF 0F FF FF FF 0F FF FF FF 0F 50 00 00 00 00002162FF FF FF 0F FF FF FF 0F FF FF FF 0F FF FF FF 0F 0000217255 00 00 00 56 00 00 00 57 00 00 00 58 00 00 00 0000218259 00 00 00 5A 00 00 00 5B 00 00 00 5C 00 00 00 000021925D 00 00 00 5E 00 00 00 5F 00 00 00 60 00 00 00 000021A261 00 00 00 62 00 00 00 63 00 00 00 64 00 00 00 000021B265 00 00 00 66 00 00 00 67 00 00 00 FF FF FF 0F 000021C269 00 00 00 6A 00 00 00 FF FF FF 0F FF FF FF 0F 000021D26D 00 00 00 6E 00 00 00 6F 00 00 00 70 00 00 00 000021E271 00 00 00 72 00 00 00 73 00 00 00 74 00 00 00 000021F275 00 00 00 76 00 00 00 77 00 00 00 78 00 00 00 0000220279 00 00 00 7A 00 00 00 7B 00 00 00 7C 00 00 00 000022127D 00 00 00 7E 00 00 00 7F 00 00 00 80 00 00 00 Filesystem ou FirstSectorofCluster = ((N – 2) * BPB_SecPerCluster) + FirstDataSector; = ((N - 2) * 0x10 + 0x73E0;
Command Index | Argument | Response | Data | Abbreviation | Description |
---|---|---|---|---|---|
CMD0 | None(0) | R1 | No | GO_IDLE_STATE | Software reset. |
CMD1 | None(0) | R1 | No | SEND_OP_COND | Initiate initialization process. |
ACMD41(*1) | *2 | R1 | No | APP_SEND_OP_COND | For only SDC. Initiate initialization process. |
CMD8 | *3 | R7 | No | SEND_IF_COND | For only SDC V2. Check voltage range. |
CMD9 | None(0) | R1 | Yes | SEND_CSD | Read CSD register. |
CMD10 | None(0) | R1 | Yes | SEND_CID | Read CID register. |
CMD12 | None(0) | R1b | No | STOP_TRANSMISSION | Stop to read data. |
CMD16 | Block length[31:0] | R1 | No | SET_BLOCKLEN | Change R/W block size. |
CMD17 | Address[31:0] | R1 | Yes | READ_SINGLE_BLOCK | Read a block. |
CMD18 | Address[31:0] | R1 | Yes | READ_MULTIPLE_BLOCK | Read multiple blocks. |
CMD23 | Number of blocks[15:0] | R1 | No | SET_BLOCK_COUNT | For only MMC. Define number of blocks to transfer with next multi-block read/write command. |
ACMD23(*1) | Number of blocks[22:0] | R1 | No | SET_WR_BLOCK_ERASE_COUNT | For only SDC. Define number of blocks to pre-erase with next multi-block write command. |
CMD24 | Address[31:0] | R1 | Yes | WRITE_BLOCK | Write a block. |
CMD25 | Address[31:0] | R1 | Yes | WRITE_MULTIPLE_BLOCK | Write multiple blocks. |
CMD55(*1) | None(0) | R1 | No | APP_CMD | Leading command of ACMD<n> command. |
CMD58 | None(0) | R3 | No | READ_OCR | Read OCR. |
*1:ACMD<n> means a command sequense of CMD55-CMD<n>. *2: Rsv(0)[31], HCS[30], Rsv(0)[29:0] *3: Rsv(0)[31:12], Supply Voltage(1)[11:8], Check Pattern(0xAA)[7:0] |