Hallo zusammen,
ich habe hier eine Frage zu externen SPI-Flash-Speichern (z.B.
SST25V064C) und deren Speicherverwaltung (z.B. FAT16).
Leider habe ich kein passendes Thema gefunden, welches meine Fragen
beantwortet.
Ich arbeite mit einem STM32F4 und habe wie gesagt ein serielles 64Mbit
Flash extern dran. Darin möchte ich viele Grafik(Dateien) ablegen, die
ich auf meinem TFT-Display anzeige.
Die Frage ist jetzt kann ich für diesen Speicher ein FAT16-Dateisystem
verwenden um meine Grafikdaten zu verwalten. Dies wäre relativ einfach,
weil ich dann auf dem PC mir die Grafiken(Dateien) entsprechend
erstellen kann und diese dann in den Flash-Speicher per zusätzlicher
serieller Schnittstelle übertragen kann.
Ich habe ein Grafik-TFT mit 320x240 Pixeln und habe dabei dann eine
maximale Speichergröße von 153,6kByte pro Grafikdatei.
Möglicherweise kann ein Displayinhalt aus mehreren kleinen Grafiken
bestehen.
Hat jemand Erfahrung, wie lange die Zugriffszeiten was das FAT-System
betrifft (nur lesen ist eigentlich wirklich wichtig) betrifft. Macht
dieses System denn überhaupt Sinn, bzw. deckt eine FAT-Bibliothek den
gleichen Speicher ab wie auf PC-Seite.
Denn ich möchte die Daten dann vom PC 1 zu 1 in das serielle Flash
übertragen, also quasi die Daten im FAT-System erstellen und sie dann
wieder lesen.
Sorry für den vielen Text aber ich möchte nur, dass ihr versteht was ich
meine.
Vielen Dank!
Gruß euer Flash
flash gordon schrieb:> diese dann in den Flash-Speicher per zusätzlicher> serieller Schnittstelle übertragen kann.
Dann musst Du dem PC nur noch beibringen, dass sich an der seriellen
Schnittstelle ein blockorientiertes Speichermedium befindet ...
... also einen Treiber dafür schreiben ...
flash gordon schrieb:> Denn ich möchte die Daten dann vom PC 1 zu 1 in das serielle Flash> übertragen, also quasi die Daten im FAT-System erstellen und sie dann> wieder lesen.
Was nun ... die einzelnen Dateien? Das Dateisystem?
> Sorry für den vielen Text aber ich möchte nur, dass ihr versteht was ich> meine.
Fail. :-D
Gruß
Jobst
@flash,
warum willst du unbedingt ein Dateisystem auf dem Flashchip aufsetzen?
Ich habe hier eine Schaltung mit xmega, ebenfalls 320x240'er TFT und
SPI-Flash. Da du was von 153k schreibst, gehe ich mal davon aus das du
die reinen Bitmapdaten in RGB565-Format verwendest.
Die Speicherung der Grafiken habe ich folgendermaßen gelöst.
Für'n PC hab ich mir ein kleines Prog. geschrieben, das die Bilddateien
im RGB565-Format einliest und hintereinander in eine Datei schreibt. Am
Begin der Datei wird noch eine Tabelle hinzugefügt die die
Anfangsadressen der Bilddaten enthält. Auf dem µC brauche ich im
Programm nur noch die Bildnummer (16-Bit), aus der Tabelle (kann man
auch in den RAM kopieren) wird dann die passende Adresse der Bilddaten
ausgelesen und dann können die Daten ab dort ausgelesen und ans Display
geschickt werden.
Die Datei lade ich auf eine SD-Karte, auf dem µC wird einfach der
komplette Dateiinhalt 1:1 in den Flash kopiert.
Die Daten kann man natürlich auch per RS232 'überspielen'.
Sascha
Wenn Du ein Filesystem verwenden willst, dann ist FAT16 sicher nicht
schlecht denn dafür gibt's fertige Libs. Je nach Größe des Mediums ist
FAT32 nötig.
Hallo Sascha, hallo zusammen,
danke für die guten Antworten.
Zu Jobst habe ich eine bzw. ein paar Antworten, die Dateien im PC kann
ich ja einzeln lesen und seriell übertragen (PC-Programm) dann über die
FAT-Library und den Hardwaretreiber in das serielle Flash schreiben.
Das Auslesen dann wieder über den FAT-Treiber.
Zu Sascha, ja ich habe überlegt, das ganze selbst zu schreiben, in der
Art wie du das gemacht hast. Es gibt bei mir auch so eine Art
Strukturdatei, in der der Aufbau eines Displays beschrieben ist und
welche Pixel-Dateien (richtig erkannt, 565-Format :-))verwendet werden.
D.h. der Aufbau bleibt variabel und kann angepasst werden, das ist
allein schon um verschiedene Sprachvarianten wegen unterschiedlicher
Meldungen (als Pixelgrafik) zu realisieren.
Der Vorteil von FAT sehe ich darin, das jemand der später eigene
Grafiken erstellt und Display-Inhalte aufbauen möchte das Handling auf
dem PC einfacher empfindet mit Dateien.
Das mit der SD-Karte möchte ich später auch noch so realisieren, die
SD-Karte kann ich bloß nicht dauerhaft einsetzen, da das im Betrieb
nicht geht.
Für mich bleibt die Frage wie ist den so das Handling mit fertiger
FAT-Library bei seriellen Flash-Bausteinen, wie lange sind etwa
Zugriffszeiten, ist der Zugriff auch per DMA möglich, gibt es
Empfehlungen für FAT-Librarys mit seriellen Flash-Bausteinen, da ich
noch nie mit FAT im embedded-Bereich gearbeitet habe.
Würde mich über verschiedenste Tipps freuen.
Euer Flash
@ flash gordon (Gast)
>Für mich bleibt die Frage wie ist den so das Handling mit fertiger>FAT-Library bei seriellen Flash-Bausteinen,
Die meisten FAT Libs sind eingentlich sehr modular aufgebaut. Sprich,
man kann verschiedenste Medien (SD-Kare, Compact Flash, etc) leicht
anbinden. Letztendlich muss das Medium einen Zugiff auf einzelne
Sektoren a 512 Byte zur Verfügung stellen, den Rest macht die FAT-Lib.
> wie lange sind etwa Zugriffszeiten,
Hängt von deinem Controller und der Schnittstelle ab. Die FLash gehen
bis 66 MHz, je nach Typ laufen die sogar im 4 Bit Modus.
> ist der Zugriff auch per DMA möglich,
Sicher, das ist aber Sache des Low Level Treibers, nicht der FAT Lib.
>gibt es>Empfehlungen für FAT-Librarys mit seriellen Flash-Bausteinen, da ich>noch nie mit FAT im embedded-Bereich gearbeitet habe.http://www.mikrocontroller.net/articles/MMC-_und_SD-Karten
Ich kann ELM Chan empfehlen.
Ich hatte auf einem STM32F107 FatFS auf einem SPI FLash zum laufen
bekommen.
Da sind schon 2 Jahre her und ich bin nicht mehr in der Fa. als ich es
gemacht habe. Das war auf jedem Fall kein Krampfakt. Das Beschreiben vom
Flash habe ich mit Ymodem via FTDI erledigt und die Datenrate lag bei
18Mbits. Ob das Ganze mit DMA laufen würde, weiß ich nicht.