Filesystem für AVR Implementation (mit SD Karte)

OP Persönliche Seite #397246
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 ;)
Gast #397247
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
Gast #397249
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
OP Persönliche Seite #397253
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
Admin Persönliche Seite #397254
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.
Gast #397255
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

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