mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dateisystem für SD-Karten: FAT / JFFS2 / YAFFS2


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich frage mich, ob FAT das beste Dateisystem fuer eine SD-Karte ist.

Die meisten, die ein Dateisystem auf einer SD-Karte verwenden, nutzen
wohl FAT. Dazu gibt es ja auch einige Implementationen und
Kompatibilitaet mit den gaengigsten Betriebssystemen sollte auch
gegeben sein.

Jedoch ist FAT fuer Flash-Speicher sehr ineffizient, da die FA-Table
oft neu geschrieben wird. Dadurch altern bestimmte Bereiche der Karte
uebermaessig schnell und es koennen sich Fehler ergeben.

Eine Alternative ist das JFSS2 oder YAFFS2, das die `Abnutzung'
gleichmaessig verteilt.

Meine Frage:
Gibt es da schon Implementationen fuer uC (am liebsten in C, evtl. mit
ein paar ASM-Zeilen fuer Performance) und entsprechende Treiber, um die
Karte dann auch unter Windows (>2k) und Linux (Kernel >= 2.4) lesen und
ggf. schreiben zu koennen?

Zu YAFFS hab ich gesehen, dass es einen WindowsCE Treiber gibt.
(http://www.aleph1.co.uk/taxonomy/term/31/index.html)

Anregungen und Erfahrungen herzliche willkommen!

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur Randbemerkung: Ganz so schlimm ist das mit dem FAT wiederbeschreiben
nicht. Viele Libraries nutzen ein oder mehr FAT-Buffer. Weiterhin halten
SD-Karten Reservesektoren vor, die transparent eingeblendet werden. Es
gibt sogar spezielle "Industrial SD" die angeblich noch oefter
wiederbeschreibar sind und noch mehr Reservesektoren vorhalten
(angeblich, da zumindest mir keine detaillierteren Informationen zu den
"Industrial"-Karten bereitgestellt wurden).

Autor: Michael Jungnickl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,

wie Martin schon anmerkt, läßt sich die Speicherung und Zugriffszeit
auf die FAT Tabellen optimieren, indem man für jeden Sektor die 16/32
Bit großen Einträge im RAM puffert. Dazu braucht man allerdings
zusätzlich 512 Bytes RAM. Wird die FAT Tabelle verändert, geschieht
dies zuerst im RAM, wobei man ein entsprechendes Flag setzen kann. Wird
eine neue FAT Tabelle gelesen, speichert man zuvor die aktuelle FAT
Tabelle im RAM ab und setzt das Flag zurück. Dies erspart die nötige
Speicherung der FATs bei jedem Cluster. Letztendlich fasst man dadurch
bis zu 256 (FAT)/ 128 (FAT32) Schreibzugriffe zusammen, was die
Effektivität um mehr als 99% steigert. (Spiegelung nicht vergessen.)

Problematisch sind bei Speicherkarten eher das Abziehen und Stecken.
Dafür entwickeln einige Hersteller gerade an TFAT (Transacton Save FAT)
herum. Ein weiterer Fehler bei einigen Kartenlesegeräten und Windows ist
die nicht erfolgende Aktualisierung des Directorys, wenn man eine Karte
einfach einsteckt. Das kann man durch Änderung der
Datenträgerbezeichnung erzwingen.

Für WinCe warte ich momentan auf einen FAT32 Treiber.

Tschüß

Autor: herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,
kein Mensch würde wegen eines 'schnelleren' Alterns auf JFSS oder
YAFFS umsteigen, ausser du möchtest mal eine neue Herausforderung.

Natürlich hat FAT grossen Nachteile hinsichtlich den anderen
FileSysteme bsp. den transaktionssichereren FS wie z.B. TFAT
(eigentlich WinCE, wobei manche davon überhaupt nicht überzeugt sind),
aber es ist halt ein überall bekanntes FS mit vielen Portierungen..

Hinsichtlich dem Altern würde ich dir mal empfehlen den Aufbau einer
SD-Flashkarte oder CompactFlashkarte anzuschauen -- gerade dort sind
die Sektoren die du über die IDE bzw. der SPI (o.ä) siehst nicht der
physikalische Sektor auf dem NAND-bzw. NORFlashs.
Da ist einiges an Firmware dazwischen, die das Verteilen der Zugriffe
und bsp. ein BAD-BlockManagement (NAND) durchführt, so dass das ganze
fast wie ein 'Festplatten'-Ersatz funktioniert.
Da steckt einiges an Know-How dahinter und ist nicht in wenigen Worten
zu beschreiben.
Tatsache ist, daß wie auch beim normalen PC == einfach Netzstecker
ziehen, hier das Entnehmen der Karte ohne vorheriges benachrichten des
OS zu fatalen Auswirkungen führt -- da ist halt FAT nicht das beste FS.
Hier kämen die 'neuen' transaktionssichere FS zum Zuge...

hoffe Dir ein bischen geholfen zu haben

gruss herbert

Autor: embLin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist JFFS2 überhaupt möglich auf Block devices wie MMC/SD ? Oder ginge 
das nur mit NAND/NOR ... ?

Beispielsweise ein anderes Format das ubifs eben nicht auf den MMC/SDs 
funktioniert.

Autor: Rudolph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
embLin schrieb:
> Ist JFFS2 überhaupt möglich auf Block devices wie MMC/SD ?

Mal davon ab, dass der Thread von 2006 ist.
Eine Festplatte ist auch in Blöcken organisiert.

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.