Adresse der zweiten FAT

Gast #395767
Lesenswert?

HI Leute,

ich habe da ein kleines Problem mit meiner SD-Karte.
Undzwar kann ich mit meinem PIC wunderbar Dateien auf die Karte
schreiben. Ich verändere nur die 1. FAT.
Unter Linux sind die Dateien lesbar, unter Windows nicht.
Mit chkdsk /f wird die 1. FAT mit der 2. überschrieben und meine Datei
ist "weg".

Ich nehme an, dass das Problem mit dem ändern der 2. FAT behoben werden
kann. Nur weiß ich nicht wie man die Adresse der 2. FAT ermittelt.

Kann mir da jemand helfen?

Gruß

Konstantin
Gast #395768
Lesenswert?

Also ich habe jetzt experimentell die Adresse der 2. FAT herausgefunden.
->chkdsk /f schreibt, dass alles in Ordnung sei. Wenn ich mein Text-File
im Editor öffnen möchte kommt eine Fehlermeldung:

"Die Datei E:\kon.TXT kann nicht gefunden werden.
 Möchten Sie eine neue Datei erstellen?"

Wie gesagt Linux öffnet die Datei ohne Probleme.

Kennt jemand eine Lösung?

Gruß

Konstantin

PS: Ich wüsste dennoch gerne, wie man die Adresse der 2. FAT berechnet.
Gast #395769
Lesenswert?

> PS: Ich wüsste dennoch gerne, wie man die Adresse der
> 2. FAT berechnet.

FAT2POS=FAT1POS+FATLEN;

FATLEN --> Bootsektor[0x16,0x17];

Aber erzaehl doch mal wie du es geschaft hast ein FAT-Dateisystem zu
programmieren ohne jemals eine Doku dazu gelesen zu haben? :-)

Du musst ja schliesslich bereits wissen wie gross die FATs sind weil du
sonst nicht das Direktory finden kannst...

Olaf
Gast #395771
Lesenswert?

Ich habe nie geschrieben, dass ich keine Doku gelesen habe. Ich habe
schon einige Dokum dazu gelesen.

Ich mache also Folgendes:
 1. SD-Karte mit dem PC formatiert und 2 txt Dateien darauf kopiert.
 2. Mit dem PIC RootDir auslesen und an die Positionen 96-127 die 32
Byte Header für die Datei schreiben. 96-127 weil die ersten 32 Byte für
die Partitionsbezeichnung belegt sind und die zweit und dritten 32 Byte
für die darauf kopierten Dateien.
 3. 1. FAT auslesen verfollständigen
 4. 2. FAT auslesen verfollständigen
 5. Dateiinhalt schreiben.

Habe ich etwas vergessen, dass Windows die Datei nicht lesen kann?

Gruß Konstantin
Gast #395772
Lesenswert?

Hallo Konstantin,
schau dir den von Win generierten Eintrag der FAT, sowie des
Verzeichnis an und vergleiche mit dem was du selbst schreibst. Ich
denke an dieser Stelle kannst du den Fehler finden. Ich habe bereits
Karten beschrieben, dabei ist mir aufegefallen, dass Windows an dieser
Stelle auf einmal case-sensitiv wird, wenn ich mich recht erinner.

Marcus
Gast #395775
Lesenswert?

Ich wuerde mal sagen es gibt zwei Moeglichkeiten das Ganze zu
handhaben.

1. Du schreibst dir eine komplette Unterstuetzung von FAT. Dann musst
du aber noch etwas mehr tun da du die ganzen Werte je nach groesse der
Karte, oder auch womit sie formatiert wurde, aendern.

2. Du schreibst auf eine frisch formatierte (keine fragmentierung)
Karte eine Datei mit einer Magicnumber am Anfang und suchst danach.
Dann ueberschreibst du einfach Sektoren ohne dir einen Gedanken um das
Filesystem zu machen.

Alles andere fuehrt nur zu Ergebnissen die selten funktionieren. :-)

Olaf
Gast #395776
Lesenswert?

Also ich habe jetzt mal ein Datei angehängt log.pdf.
Dort sind die Einträge des RootDir-Registers abgebildet. Schaut mal
bitte drüber, vielleicht findet ihr den Fehler.

Danke im Voraus.

Gruß

Konstantin
Angehängte Dateien:
Gast #395778
Lesenswert?

Habe die SD-Karte formatiert, an den PIC angeschlossen und eine Datei in
den 1. Cluster geschrieben.
Zurück in den Kartenleser vom PC eingesteckt und mit chkdsk /f
überprüft.
Folgenden Fehler hat chkdsk erkannt:
Erste Zuordnungseinheit ist ungültig.

Gruß
Konstantin
Gast #395780
Lesenswert?

habe jetzt den Fehler mit der Zuordnungseinheit gelöst.
Noch ein Mal formatiert und mit dem PIC beschrieben.
->Mit Windows immernoch das selbe Problem wie vorher.
->chkdsk /f sagt: "Es wurden keine Probleme festgestellt."

Gruß

Konstantin
Gast #395782
Lesenswert?

Ein Wunder!!!
Wenn ich den Dateinamen nur aus Zahlen zusammenstelle ist es für
Windows überhaupt kein Problem die Datei zu lesen.

Kannst du mir sagen warum das so ist?

Wie kann ich jetzt die Dateinamen auch mit Buchstaben versehen?

Vielen Dank

Gruß
Konstantin
Gast #395784
Lesenswert?

Kleinschreibung funktioniert auch!
Man muss die reservierten Bytes mit bestimmten Werten belegen und dann
gehts auch.

Byte 12 = 0x18
Byte 13 = 0x43
Byte 14 = 0xAE
Byte 15 = 0x63
Byte 16 = 0x16
Byte 17 = 0x35
Byte 18 = 0x16
Byte 19 = 0x35
Byte 20 = 0x00
Byte 21 = 0x00

Gruß
Konstantin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren