Forum: Mikrocontroller und Digitale Elektronik Partitionen - MMC, SD


von Jörn M. (kitesurfing2006)


Lesenswert?

Hi,

ich bin gerade dabei meine FAT32 libary umzugestalten (mehrere dateien
gleichzeitig, verschiedene partitionen, verschiedene medien).

Bin gerade dabei PARTITIONEN zu implementieren.

Laut Wikipedia ist ein MBR nicht immer auf einem Wechselspeicher
vorhanden weil er eigentlich nicht benötigt wird. Ist dies der Fall,
soll im ersten Sector direkt der VBR stehen.

Bei meiner MMC karte steht im ersten Sector definitiv kein VBR, dieser
liegt bei sector 32. Der MBR sieht ziemlich komisch aus, bis zum 1.
eintrag in der partitionstabelle sind nur nullen. Habe versucht den
wert für den anfang der partition aus der partitionstabelle zu
entnehmen. ich komme allerdings auf 63 und nicht auf 36.

Habe die Karte mehrmals formatiert, doch am MBR ändert sich nichts.

Woher soll ich jetzt die informationen nehmen wo die 1. partition
anfängt. wäre kein mbr vorhanden wärs ja kein problem, dann steht im 1.
sektor der vbr. Aber mit so einem "defekten MBR" ist ja dann raten
angesagt oder sehe ich das falsch?

Hoffe auf hilfe ;-)

MFG Jörn

von Jörn M. (kitesurfing2006)


Lesenswert?

Mein MBR:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
01 00 06 0F E0 D3 20 00 00 00 E0 A7 07 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

von Ssss S. (sssssss)


Lesenswert?

Ist bei mir auch so ;)
00000000   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00
00  00 00 00 00  00 00 00 00  ............................
...
00 00 00 00  00 00 00 03  ............................
000001C0   02 00 06 07  E0 C9 61 00  00 00 9F C9  03 00 00 00  00 00 00
00  00 00 00 00  00 00 00 00  ......a.....................
000001DC   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00
00  00 00 00 00  00 00 00 00  ............................
000001F8   00 00 00 00  00 00 55 AA  00 00 00 00  00 00 00 00  00 00 00
00  00 00 00 00  00 00 00 00  ......U.....................

Mal ein auszug aus meinem aktuellen Projekt:
1
  //now check if this is a valid MBR:
2
  if (!((buffer[0x01FE] == 0x55) && (buffer[0x01FF] == 0xAA))){
3
    softuart_puts_progmem("FAT : error, invalid MBR");
4
    return 0;
5
  }
6
7
  //read out VBR address of first partition
8
  unsigned long fat16_vbr_start = 0;
9
  for (i=0x01C9; i>=0x01C6; i--){
10
    fat16_vbr_start = (fat16_vbr_start<<8) | buffer[i];
11
  }
12
  softuart_puts_progmem("FAT : VBR at sect ");
13
  softuart_put_uint16(fat16_vbr_start);
14
  softuart_putnewline();

Der VBR Anfang steht also in dem Stückchen drin ;)

Bye, Simon

von Jörn M. (kitesurfing2006)


Lesenswert?

Oh, hab'S mir grad nochmal angeschaut, mein VBR liegt im sector 32.

aus der partitionstabelle  20 00 00 00  =  32

Passt also doch ;-)


Nun noch eine Frage, wie unterscheidet man zwischen VBR und MBR? anfang
und ende sind laut wikipedia ja gleich.

von Wolfram (Gast)


Lesenswert?

55AA überprüfen
Nimm einfach erstmal an du hast eine MBR also keine Superfloppy und
mache eine konsistenzprüfung der Daten der Partitionstabelle
 Sind Partitionen vorhanden? nur eine aktive Partition? etc.
Wenn nicht nimm an es wäre eine Superfloppy und versuche es als Dos
Bootsektor zu interpretieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.