Forum: Compiler & IDEs Tabelle in Flash-ROM


von TechInfo (Gast)


Lesenswert?

Hallo,

ich möchte eine Tabelle mit Kalibrierwerten im Flash-ROM ablegen. Diese 
Daten müssen dann immer wieder von meinem Programm ausgelesen werden. 
Ich kann ja sicher nicht einfach mit einem C-Programm auf das Flash 
zugreifen, sondern muss mir einen entsprechenden Treiber schreiben, der 
die Protection aufhebt, die Timings einhält etc. Gilt dies für Lese- als 
auch Schreibzugriffe? Wie baut man sich sowas zusammen?

Macht es Sinn, den Inhalt der Tabelle bei Programmstart ins RAM zu 
übertragen, also z.B. ein konstantes Array deklarieren und es dann mit 
den Daten aus dem Flash initialisieren?

Oder soll ich, jedesmal wenn ich Daten aus der Tabelle benötige, den 
Treiber mit einem Lesezugriff bemühen und der Funktion übergeben?

Gruß

TechInfo

von TechInfo (Gast)


Lesenswert?

Anmerkung: Es handelt sich nicht um einen AVR, also PROGMEM und co. kann 
ich vergessen.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Werte ins RAM schaufeln bringt sehr wahrscheinlich bessere 
Zugriffszeiten. Verbraucht aber ggf. kostbaren RAM. Musst du abwägen, 
was du brauchst.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Stefan B. wrote:

> Werte ins RAM schaufeln bringt sehr wahrscheinlich bessere
> Zugriffszeiten.

Zwei statt drei Takte Zugriffszeit, nicht wirklich der Rede wert.

von TechInfo (Gast)


Lesenswert?

RAM und Flash sind beide extern.

von TechInfo (Gast)


Lesenswert?

Gibt es die Treiber für die Flash-Bausteine irgendwo im Netz, oder muss 
man die sich wirklich selbst coden?

von Falk B. (falk)


Lesenswert?

@ TechInfo

>ich möchte eine Tabelle mit Kalibrierwerten im Flash-ROM ablegen. Diese
>Daten müssen dann immer wieder von meinem Programm ausgelesen werden.

>Anmerkung: Es handelt sich nicht um einen AVR, also PROGMEM und co. kann
>ich vergessen.

Mach doch mal deinem Namen Ehre und gib mal ein paar Techinfos rüber!
Welcher Prozessor, welcher Compiler.

Und FLASH ist nicht gleich FLASH. Man kann parallels FLASH an den 
exteren BUS hängen, da ist der Zugriff meist genausoschnell wie auf RAM 
(bei "langsamen" Prozessoren bis ca. 20 MHz).
Oder man hat serielles FLASH/EPROM per I2C oder SPI. Klar, DAS ist 
wesenlich langsamer. Für I2C EEPROMs gibst sicher irgendwo Treiber in 
den unendlichen Weiten des Internet.

MfG
Falk


von TechInfo (Gast)


Lesenswert?

Es handelt sich (wie immer bei meinen Threads) um den 
MicroBlaze-Softcore samt GCC. Der Flash-Baustein ist ein AMD AM29LV640 
und hängt am On-Chip-Peripheral-Bus. Soweit ich das Datenblatt 
verstanden habe benötigt eine Schreiboperation 4 Taktzyklen (die Sperre 
muss erst "aufgeschlossen" werden).

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.