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 ;)
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
Ok, ich werde mir das mal anschauen. Weitere Tipps sind willkommen ;)
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
Nimm doch einfach FAT, dafür gibt's schon haufenweise Code.
Hier wären ein paar Beispiele: http://de.wikipedia.org/wiki/Filesystem#Beispiele_f.C3.BCr_Dateisysteme Vielleicht ist auch das interessant: http://en.wikipedia.org/wiki/YAFFS Es ist speziell für Flash-Speicher gemacht.
@Rolf: Ah! Dieses YAFFS sieht doch auf den ersten Blick schon sehr gut aus. Danke für deine Links
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
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.
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
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.