Flash Log Filesystem

smxFlog für NAND und NOR Flash

Features:

  • Unterstützt NAND, NOR und ser. NOR Flash
  • Unterstützt Multi Chip Flash Arrays
  • Wear Leveling
  • Bad Block Management
  • Effizient und schnell:
    • Read vs. Raw Speed: NOR 98%, NAND: 86%
    • Write vs. Raw Speed: NOR 88%, NAND: 69%
  • Entwickelt für hohe Zuverlässigkeit:
    • ECC Mode
    • Read Back und Verify Modus
    • Einfaches und Stabiles API
    • Power Fail Safe
  • Unterstützt Multitasking
    • Optimiert für SMX
    • Kann einfach auf andere RTOS und für Standalone portiert werden
  • Sehr klein:
    • ROM: 4kB mit ECC, 2kB ohne ECC
    • RAM: 288 Byte mit ECC, 32 Byte ohne ECC
  • Vollständiger im Source Code
  • Kann sich das Flash mit smxFS, smxFFS, Boot Code und Anwendungscode teilen.

smxFLog, ein spezielles Flash-Filesystem stellt eine Möglichkeit zum schnellen, einfachen und zuverlässigem Speichern von Log Daten in NAND und/oder NOR Flash Speichern zur Verfügung.


Das Speichern von Log Daten ist ein typischer Anwendungsfall bei Embedded Systemen und verlangt nach einer guten Lösung. Dabei werden Daten sequenziell an eine Datei angehängt. Dies ist bei klassischen Dateisystemen wie FAT nicht besonders effizient, wenn dies auf Flash basierten Medien arbeitet.

Das Problem mit FAT Filesystemen auf Flash Speicher

Das Problem bei der Benutzung von klassischen Filesystemen wie z.B. FAT bei der Benutzung von Flash Speicher als Medium ist, dass wenn nicht bei jedem Log Datum ein vollständiger Cluster an die Logdatei angehängt wird, es notwendig ist, den aktuellen Cluster vom Flash ins RAM zu laden, die neuen Daten anzuhängen und dann den neuen Cluster wieder an eine frei Stelle des Flashs zu schreiben. Jedes Mal wenn ein neuer Cluster geschrieben worden ist, muss außerdem die FAT aktualisiert werden und der Verzeichniseintrag in dem die Datei liegt, muss um die neue Dateigröße aktualisiert werden. Da Flash- Speicher nicht verändert werden kann, müssen FAT und Verzeichniseinträge erst ins RAM geladen werden, dort modifiziert werden und dann an eine neue, unbenutzte Stelle des Flashs zurück geschrieben werden.

Dies ist deutlich zu viel Aufwand um eine kleine Menge an Daten an ein Daten-Log anzuhängen. Es wirkt sich negativ auf die Geschwindigkeit aus und verringert zudem noch die Lebensdauer des Flash Speichers. Zudem muss regelmäßig Garbate Collection betrieben werden um nicht mehr benutzte Bereiche des Flash Speichers wieder frei zu geben.

Klassische Datei Systeme wie FAT eignen sich hervorragend für magnetische Speichermedien, bei denen Daten auch verändert werden können, nicht aber für Flash Speicher.

Zuverlässigkeit

Ein Logging System welches tief unten in einem Bohrloch, mitten auf dem Ozean oder an sonst einem entfernten Platz ausfällt, kann sehr teuer sein. Daher wurde bei der Entwicklung von smxFLog darauf geachtet, auf verschiedenen Ebenen eine möglichst hohe Zuverlässigkeit zu erreichen.

API

Das API wurde so entworfen, dass es durch eine einfache Struktur hilft Fehler zu vermeiden. Insbesondere werden die Eigenarten der verschiedenen Flash-Speicher und die notwendigen Schritte zum Beschreiben der Flash-Speicher vor dem Benutzer durch Abstraktion versteckt. Dies hilft Fehler die durch mangelnde oder unvollständige Kenntnis der Eigenarten der verschiedenen Flash-Chips, insbesondere von NAND Flash, zu vermeiden. Das API implementiert umfangreiche Fehler Prüfung und teilt dem Benutzer über einheitliche Rückgabewerte der aufgerufenen Funktionen das Auftreten von Fehlern mit.

Error Correction Code (ECC)

smxFLog benutzt eine 22-bit Fehler Korrektur welche es ermöglicht 1 Bit Fehler in 256 Byte Datenblöcken selbständig zu korrigieren. Für 512 Byte Daten sind dementsprechend 2 ECCs notwendig. Die Verwendung von ECCs ist empfohlen, vor allem bei NAND Flash Speichern, da diese mit der Zeit Daten verlieren können, kann aber an und abgeschaltet werden.

Power Fail Safety

Normalerweise ist das Sicherstellen von Dateisystem Integrität von Dateisystemen im Fall des Verlusts der Versorgungsspannung recht aufwendig und benötigt viel RAM Speicher. Aufgrund seiner einfachen, sequenziellen Struktur und des nicht vorhanden seins von komplizierten Metadaten Strukturen, ist smxFLog sicher gegen den Verlust der Versorgungsspannung "by design".

Funktionsweise

Im Vergleich zu anderen Dateisystemen, kann smxFLog neue Datensätze ins im Flash gespeicherte Log schreiben, ohne dass irgendwelche Daten verschoben werden müssen. Es besitzt auch keine FAT, Verzeichnisse oder sonstige Metadatenstrukturen die aktualisiert werden müssten. smxFLog fängt am Anfang des ihm zugewiesenen Bereichs an, in sequenzieller Reihenfolge einen Datensatz nach dem anderen zu schreiben. Wenn Read Back Verification aktiviert ist, wird das zuletzt geschriebene Datum nach dem Schreiben nochmal zurückgelesen. Stimmt es nicht mit dem erwarteten Wert überein, wird der entsprechende Eintrag als "bad" markiert und dann an die nächste freie Stelle geschrieben.

Wear leveling ist durch den sequenziellen Schreibprozess gegeben.

smxFLog kann entweder so konfiguriert werden, dass es bei Erreichen der letzten Speicherstelle aufhört weitere Datensätze zu speichern oder dass es den ältesten Datensatz überschreibt (s.g. recycle mode).

>>> Preise anfragen

Embedded Tools GmbH
Fon: +49 251 98729-0 / Fax: -20
E-Mail info(at)embedded-tools.de


Firma:
Titel:
Vorname:
Nachname: *
Straße:
PLZ:
Ort:
Land:
E-Mail: *
Telefon:
Nachricht:
Target-Prozessor(en):
Wie haben Sie von uns erfahren: