Forum: Mikrocontroller und Digitale Elektronik FAT - RAW (simples Filesystem)


von Michi B. (orbit)


Lesenswert?

Hallo,

ich habe ein CF-Karte bzw. eine SD-Karte FAT32 (oder FAT16) formatiert
und nur eine Datei darauf.

Meine Frage: Wie bekomme ich die Startadresse dieser Datei mit einem µC
heraus, ohne dass ich FAT vollständig implementiere? (Klar mit einem
HEX-Editor ist das recht simple - aber ich möchte es mit einem µC
lösen...)

Oder: Ist es unter Windows möglich, eine Karte "unformatiert" zu
lesen und  zu beschreiben? Also nur RAW-Daten? (Ohne Verwendung eines
Hex-Editors).
Gibt es Beispielcode für C++ beispielsweise um auf eine Karte
"direkt" zugreifen zu können?

Hintergrund: Ich möchte ein eigenes Filesystem implementieren.


Gruß
  Michi

von Michael W. (mictronics) Benutzerseite


Lesenswert?

Die FAT ist nicht notwendig um die Startadresse der Datei zu bestimmen
solange sich diese im Root Dir befindet. Du must dazu den/die Root Dir
Sektoren einlesen und den Dateieintrag anhand des Dateinamens suchen,
dieser enthält dann auch den Startpunkt der Datei.

Aber:
Du wirst um die FAT nicht drum kommen wenn die Datei länger als ein
Sektor ist, und wenn die Root Dir länger als ein Sektor ist.

Schau Dir diesen Code an
http://www.codeproject.com/file/Translation.asp
ich habe den als Basis benutzt, um den First Sektor aller Dateien auf
einer SD Card zu bestimmen die mit FAT32 formatiert ist, um daraus eine
Playlist zu erstellen.
Vorteil ist, Du brauchst Dich nicht um das Directory Handling zu
kümmern, da Du schon weist wo die Datei beginnt, ein FAT Look-up ist
aber trotzdem nötig.

/Michael

von ... (Gast)


Lesenswert?

Defragmentieren und alle Sektoren der Datei liegen hintereinander.

von Michi B. (orbit)


Lesenswert?

Vielen Dank für die Antworten.

Ich habe mich jetzt für ein "eigenes Dateisystem" entschieden. Ich
muss das ganze unter Windows machen, da Linux mein im Notebook
integrierter SD-Card-Reader (noch) nicht erkennt.

Bin gerade dabei in C++ ein Programm für Windows zu schreiben. Damit
kann ich dann sämtliche Daten auswählen und es wird eine Art "Image"
erstellt. Dieses kann ich dann auf die SD-Karte übertragen (auch mit
dem C++-Programm)
Die ersten Versuche waren ganz erfolgreich, jetzt muss ich nur noch den
Code für den µC schreiben...

Gruß
 Michi

von Rolf Magnus (Gast)


Lesenswert?

> Ich muss das ganze unter Windows machen, da Linux mein im Notebook
> integrierter SD-Card-Reader (noch) nicht erkennt.

Kauf dir doch einen externen. Die werden einem doch für'n Appel und'n
Ei nachgeworfen. Ist zwar nicht optimal, den statt des internen
einzusetzen, aber dafür geht der RAW-Zugriff auf die Karte unter Linux
schön einfach.

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.