mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Partitionen - MMC, SD


Autor: Jörn Mu (kitesurfing2006)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn Mu (kitesurfing2006)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht 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:
  //now check if this is a valid MBR:
  if (!((buffer[0x01FE] == 0x55) && (buffer[0x01FF] == 0xAA))){
    softuart_puts_progmem("FAT : error, invalid MBR");
    return 0;
  }

  //read out VBR address of first partition
  unsigned long fat16_vbr_start = 0;
  for (i=0x01C9; i>=0x01C6; i--){
    fat16_vbr_start = (fat16_vbr_start<<8) | buffer[i];
  }
  softuart_puts_progmem("FAT : VBR at sect ");
  softuart_put_uint16(fat16_vbr_start);
  softuart_putnewline();

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

Bye, Simon

Autor: Jörn Mu (kitesurfing2006)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.