Woher weiß ich im Allgemeinen, ob mein Projekt ein Dateisystem benötigt? [geschlossen]

Diese Frage gibt einen guten allgemeinen Überblick darüber, wann ein Betriebssystem auf einer eingebetteten Plattform geeignet ist. Die drei genannten Themen sind Netzwerkanforderungen, GUI-Anforderungen und Dateisystemanforderungen.

Netzwerke und GUIs sind offensichtlich genug, aber ich frage mich, wann ein Dateisystem für ein eingebettetes System geeignet und / oder erforderlich ist. Welche eingebetteten Aufgaben eignen sich für eine Dateisystemlösung?

Vielleicht so etwas wie eine Datenerfassungsanwendung, bei der frühere Messungen oder Protokolldateien für zukünftige Referenzen gespeichert werden müssen?

etwas, das sich mit mehr als einer Sache befasst und Daten enthält, die Sie aufbewahren möchten? Grundsätzlich alles, wo Sie sich vorstellen können, dass Daten in (mehreren!) Dateien organisiert sind.
Wenn der Aufwand für das Speichern und Abrufen der benötigten Daten direkt im Flash (oder was auch immer) den Aufwand für die Integration eines Dateisystems überwiegt.

Antworten (4)

Die offensichtlichsten Situationen, in denen ich ein Dateisystem wünschenswert finde:

  1. Immer dann, wenn Sie Daten mit einem externen System (z. B. einem PC) austauschen müssen. Ein FAT-Dateisystem ist definitiv die einfachste Lösung, wenn eine SD-Karte oder ein USB-Stick verwendet wird (Beispiel: Datenlogger, Konfig-Dateien auf einem PC vorbereiten).

  2. Sie verwenden NAND-Speicher. Sie benötigen ein NAND-fähiges Dateisystem, da alle NAND-Chips fehlerhafte Sektoren haben und das Dateisystem diese umgehen muss.

Betriebssysteme abstrahieren Dinge, sodass sich verschiedene Anwendungen auf derselben Maschine nicht umeinander kümmern müssen.

Dateisysteme folgen derselben Logik. Wenn Sie Speicherplatz für mehrere unabhängige Komponenten benötigen, die die Ressourcennutzung nicht untereinander koordinieren müssen, benötigen Sie eine vermittelnde Komponente, bei der es sich um ein Dateisystem handelt.

Dies kann eine generische Zuordnung von einem (möglicherweise hierarchischen) Primärschlüssel zu einem einzelnen Datenblock beliebiger Länge sein, wie die meisten Dateisysteme, oder es kann zusätzliche Funktionen wie sekundäre Streams, Indizes (z. B. Künstlersuche in MP3-Ordnern), einen Datensatz enthalten Format wie in Palm OS, ...

Ich habe an einem Projekt zur Ferndatenerfassung gearbeitet. Während das System permanent über RF verbunden sein sollte, mussten wir uns mit dem Fall befassen, in dem entweder die RF, das Internet ausgefallen oder aus anderen Gründen keine Daten gesendet werden konnten, da wir es uns nicht leisten konnten, Daten zu verlieren.

Damals nutzten wir ein RTOS mit Fat-Dateisystem auf PIC24 und SD-Karte. Leider war dies nicht zuverlässig, da bei einem Stromausfall das Dateisystem beschädigt werden konnte.

Auch FAT ist ziemlich komplex mit uC zu handhaben, besonders wenn Sie anfangen, viele Dateien zu haben.

Unsere Lösung bestand am Ende darin, Daten roh auf die SD-Karte zu schreiben, wobei der Schreib-/Lesesektor auf den ersten 10 Sektoren der SD mit Randomisierung gespeichert wurde, um Flash-Verschleiß zu vermeiden.

Der Nachteil war, dass wir im Admin-Modus eine spezielle Software verwenden mussten, um die Daten von einem Computer auszulesen, obwohl dies viel zuverlässiger war als ein Fat-Dateisystem und auch viel einfacher auf dem PIC zu handhaben war.

Rückblickend würde ich wahrscheinlich jetzt ein eingebettetes Linux verwenden, um dies anstelle eines PIC zu handhaben, da dies viel Zeit und Kopfschmerzen spart. Die Konnektivität ist auf einem Linux auch viel einfacher zu handhaben als auf einem uC. Der Nachteil von Linux sind die Kosten, der Stromverbrauch, die Startzeit und die IO-Latenz, je nachdem, was Sie tun.

Sie benötigen ein Dateisystem nur dann, wenn Sie eine Anforderung haben, die dies erwähnt, wie "das System sollte dem Benutzer diese und jene Dateien zur Verfügung stellen" oder "die Systemkonfiguration muss in einer Konfigurationsdatei gespeichert werden" .

In allen anderen Fällen ist ein Dateisystem ein Kompromiss zwischen Softwarekomplexität und Bequemlichkeit. Mit Dateisystemen können Sie Daten speichern, ohne sich mit Details auf niedriger Ebene befassen zu müssen, sie sind leicht skalierbar und (wenn Sie ein kompatibles Dateisystem auswählen) erleichtern den Datenaustausch erheblich.

Manchmal können Sie sich Komplexität nicht leisten, weil Ihre Zielplattform in Bezug auf Speicher und/oder Leistung sehr begrenzt ist. Manchmal steht dem Erreichen der gewünschten Zuverlässigkeit die Komplexität im Weg (wie bei einem Gerät, das jederzeit heruntergefahren werden kann, aber keinen Datenverlust toleriert). In diesen Fällen sollte in Betracht gezogen werden, statt mit Dateien mit festen Datensätzen zu arbeiten.

Wenn Sie sich die Komplexität leisten können und Flexibilität, Abstraktion oder Kompatibilität benötigen (oder voraussehen, dass Sie dies benötigen), ist die Verwendung eines Dateisystems eine gute Idee.