Forum: Mikrocontroller und Digitale Elektronik Serielles SPI flash


von flash gordon (Gast)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von Sascha W. (sascha-w)


Lesenswert?

@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

von Stefanus (Gast)


Lesenswert?

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.

von flash gordon (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ 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.

von ♪Geist (Gast)


Lesenswert?

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.

von Daniel V. (danvet)


Lesenswert?

Schau mal hier:
http://www.ulrichradig.de/home/index.php/arm/mmc_sd-_arm

Vielleicht hilft dir das...?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.