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
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.
> 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
Man kann auch die FAT-Anzahl auf 1 setzen. Das mit der Doku wundert mich auch. Ich hatte mir mal zu DOS-Zeiten ne variable RAM-Disk geschrieben, wäre ohne Doku nicht möglich gewesen. Peter
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
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
Die Bytes 12..21 die für das Betriebssystem reserviert sind. Kann man dort 0x00 reinschreiben, oder muss was bestimmtes dort stehen? Gruß Konstantin
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
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
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
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
Was ahst du groß ausprobiert? Dateinamen oder Erweiterung oder beides? Versuch als Dateinamen mal 123 oder so, also nur Zahlen. Marcus
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
Wie oben bereits geschrieben, achte auf die Groß- und Kleinschreibung des Dateinamen und der Erweiterung. Marcus
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.