Ich betrachte Flash-Geräte, die für wiederbeschreibbare Datenspeicherung verfügbar sind, und es ist klar, dass sie entweder eine Art Übersetzungsschicht für ein darüber liegendes Dateisystem (z. B. FAT) oder einen bestimmten Typ von Dateisystem benötigen, der für sie entwickelt wurde (z. B. JFFS2). .
Beispiele:
Dies scheint eine so häufige Sache zu sein, aber ich sehe nicht viele Ressourcen (insbesondere auf der stm32-Plattform) für den Umgang mit den Flash-Problemen des Nur-Schreibens pro Seite, Wear-Leveling und Bad-Block-Überwachung.
Es scheint, als würde ein System wie JFFS2 vieles davon erledigen, aber es scheint nicht wirklich viel außerhalb des Linux-Ökosystems verwendet zu werden. Was sind einige der gängigeren Methoden, um damit in einer schlankeren Betriebssystemumgebung umzugehen?
Eine höchst wünschenswerte Eigenschaft ist die Fehlertoleranz. Wenn beispielsweise während bestimmter Vorgänge die Stromversorgung unterbrochen wird, kann FAT beschädigt werden. Eine gute Lösung sollte protokolliert werden oder etwas Ähnliches.
(Hinweis: "Write your own" ist eine sehr offensichtliche und unerwünschte Antwort.)
Obwohl Sie auf einen seriellen 1-MB-SPI-Flash-Chip verweisen, ist es meiner Meinung nach viel häufiger, dass Dateisysteme auf entfernbaren SD-Karten implementiert sind. Das hat zwei Vorteile: viel größerer Speicherplatz (GB statt MB) und man kann die SD-Karten entnehmen und auf einem PC lesen/schreiben.
Ein zusätzlicher Vorteil ist, dass die Hersteller von Marken-SD-Karten wie Kingston und SanDisk Wear-Leveling als Teil der SD-Kartenarchitektur anbieten (aber verlassen Sie sich nicht darauf von weniger teuren SD-Kartenherstellern).
Microchip (und ich bin sicher, dass andere Anbieter) über eine Bibliothek verfügen, mit der Sie entweder ein FAT16- oder ein FAT32-Dateisystem auf einer SD-Karte implementieren können. Es wird in diesem Anwendungshinweis AN1045 , "Implementing File I/O Functions Using Microchip's Memory Disk Drive File System Library" beschrieben. Offensichtlich wird dies auf PIC-Mikrocontroller abzielen.
Die Low-Level-Lese-/Schreib-Sektorroutinen für SD-Karten in dieser Bibliothek könnten wahrscheinlich so modifiziert werden, dass sie mit einem seriellen SPI-Flash funktionieren, aber Sie müssten Ihr eigenes Wear-Leveling und die Markierung fehlerhafter Sektoren durchführen, was eine Menge Komplexität hinzufügen würde.
Hier ist eine Option, die ich während der Suche gefunden habe: ein leichtes Dateisystem für SPI-Flash-Speicher: SPIFFS
Es hat keine schlechte Blockverwaltungsunterstützung, aber es scheint ansonsten ziemlich vollständig zu sein, was eine wirklich einfache Möglichkeit zum Lesen und Schreiben von Dateien angeht!
Sie können RL-FlashFS verwenden , aber wie Sie wissen, ist dies keine kostenlose Option und Sie müssen MDK-KEIL als Ihre IDE verwenden, vielleicht ist dies auch mit FAT-FS möglich .
Ich habe es nie in meinen Projekten verwendet, aber schauen Sie sich bitte Fat FS lib an.
Asmyldof
pjc50
Oldtimer
Oldtimer
Oldtimer
klamentjohn
Daniel