mikrocontroller.net

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


Autor: Michi Ber (orbit)
Datum:

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

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Defragmentieren und alle Sektoren der Datei liegen hintereinander.

Autor: Michi Ber (orbit)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

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

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.