mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Filesystem für AVR Implementation (mit SD Karte)


Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heyho.

Ich woltle demnächst sowas ähnliches wie ein NAS (Network attached
Storage) mit einem AVR basteln. Das Augenmerk soll natürlich nicht auf
die Leistung gehen, sondern eher so auf die Langeweile, die man damit
verdrängt ;)

Als Massenspeichermedium wollte ich eine kleine SD Karte einsetzen. Da
dieser Massenspeicher aber nur von dem Mikrocontroller im NAS
angesprochen werden muss, ist das Dateisystem, was ich verwende, frei
wählbar.

Nun meine Frage, was meint ihr, ist ein schnelles Filesystem, was aber
auf der anderen Seite nicht eine übertriebene Implementation nach sich
zieht?

-beim FAT FS muss ständig in der FAT geschaut werden wo weitere Daten
liegen. Auch die Erstellung von Dateien ist nicht so einfach, da freie
Cluster gesucht werden müssen usw..
-beim ReiserFS müssen diese B*Bäume nach dem Schreiben neu balanced
werden. Das zu implementieren ist ja auch nicht gerade einfach.
-Selbstgebautes Dateisystem?
-was völlig anders...

Ich hoffe auf eure Ratschläge ;)

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schau Dir doch mal spaßeshalber das gute alte Amiga-FastFileSystem an.
Ich hatte das mal auf einer MMC-Card eines MP3 Player benutzt, die
Struktur war für einen AVR sehr günstig.
Unter Linux könnte man die Karte dann sogar lesen/schreiben, allerdings
ist es wohl aus den neueren Kernels rausgeflogen.

Gruß aus Berlin
Michael

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich werde mir das mal anschauen.

Weitere Tipps sind willkommen ;)

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz vereinfachtes FAT das nur ein einzigste Datei öffnen kann. Diese
Datei wird extern zb. auf dem PC angelegt und hat dann zb. eine Größe
von 100Mb oä. In dieser Datei baust du dann dein eigenes Filesystem
rein.

Gruß Hagen

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm doch einfach FAT, dafür gibt's schon haufenweise Code.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier wären ein paar Beispiele:
http://de.wikipedia.org/wiki/Filesystem#Beispiele_...

Vielleicht ist auch das interessant:
http://en.wikipedia.org/wiki/YAFFS
Es ist speziell für Flash-Speicher gemacht.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rolf:

Ah! Dieses YAFFS sieht doch auf den ersten Blick schon sehr gut aus.
Danke für deine Links

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bin ich wieder. Hab mir einiges zu dem Thema durchgelesen. Dieses
YAFFS sieht in der Tat ganz gut aus.
Allerdings gibts da einen Punkt, den ich nicht verstehe:

Pro Page(512 Byte üblicherweise) soll es eine 16 Byte Spare-Page geben.
Diese benutzt der SD-Controller um keinen Speicherplatz bei defekten
Sektoren zu erleiden. Er nutzt dann einfach ein paar bits aus der Spare
Page statt die aus der originalen Page.

YAFFS(*) jedoch macht sich diese Spare Page zu nutze.
"...File data is stored in fixed size "chunks" consistent with the
size of a page (ie. 512 bytes). Each page is marked with a file id and
chunk number. These tags are stored in the "spare data" region of the
flash. The chunk number is determined by dividing the file position by
the chunk size....."

Nur, wenn ich YAFFS jetzt implementieren will, muss ich irgndwie an
diese Spare-Page über die übliche Schnittstelle herankommen.
->Aber wie?

In Datenblättern findet man nichts über diese Spare-Pages, außer dass
sie zu dem oben genannten Zweck verwendet werden.

Weiß hier jemand Rat?
Ich wäre sehr dankbar!



(*) http://www.aleph1.co.uk/node/37

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
YAFFS ist anscheinend nur für nackte Flash-Chips gedacht. MMC/SD-Karten
machen all diese Tricks zur Erkennung von Fehlern usw. bereits selbst.
Du kannst im Zweifelsfall davon ausgehen dass sie dabei auf FAT
optimiert sind, da das das mit Abstand am häufigsten verwendete
Dateisystem ist. Ich bezweifle deshalb dass du durch ein anderes FS
irgendwas gewinnst, geschweige denn dass der Gewinn in vernünftigem
Verhältnis zum Aufwand steht.

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die gleiche Frage hatte ich mir beim Durchlesen bei Wikipedia auch
gestellt. SD Karten machen die Fehlererkennung intern und ohne Einfluss
von Aussen.

Meine Idee wäre es mehre Sektoren der SD Karte dafür zu benutzen.
Angenommen:

512 Bytes/Sektor
die ersten 2 Sektoren der Karte als Header
dann eine Quasi-FAT mit 16 Bytes pro Daten-Sektor, macht 16*32 = 512,
ergo für 32 Sektoren kannst du im FAT Sektor Daten speichern.

Statt also die 16 Bytes in jedem 512 Bytes Sektor zu speichern und
damit ja auch 16 Bytes weniger an Daten zu haben, baust du einfach eine
FAT. Indizierung ist ganz einfach da ja sequientiell zu jedem
Datensektor in dieser FAT 16 Bytes gespeichert werden.

Gruß Hagen

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.