Forum: Mikrocontroller und Digitale Elektronik Ringspeicherung mit PIC - welchen Speicher?


von rene p (Gast)


Lesenswert?

Guten Morgen,

habt ihr eine Idee, wie ich ca. 4 MB an Daten kontinuierlich in einem 
Ringspeicher speichern kann (angesteuert mit einem PIC) ?

Flash-Speicher oder EEPROM geht dafür so wie ich es verstehe nicht, weil 
die Schreibzyklen nach einiger Zeit wohl doch recht schnell ausgreizt 
sind...

Vielen Dank!! :]

von hp-freund (Gast)


Lesenswert?

Das klingt nach einer Aufgabe für:

FRAM

von Erich (Gast)


Lesenswert?

> kontinuierlich in einem Ringspeicher speichern kann

Wenn's nur um speichern gesht, kannste auch ein WOM verwenden.

http://de.wikipedia.org/wiki/Write-Only-Memory


Sonst müsste man mehr über deine Aufgabe wissen, z.B. wielange die Daten 
gespeichert bleiben sollen und ob sie auch ohne Spannung erhalten 
bleiben müssen.
Zugriffszeiten und sonstige Nebenbedingungen (Spannung etc.) fehlen 
ebenso in der Aufgabebeschreibung.

von rene p (Gast)


Lesenswert?

WOM is sauwitzig :)
Jedenfalls sorry: Ich hab natürlich vergessen zu sagen, dass ich die 
Daten evtl. auch wieder irgendwann auslesen will.

Wenn die Versorgungsspannung wegfällt, müssen die Daten nicht erhalten 
bleiben.

Das Auslesen soll immer dann passieren, wenn in dem System ein Fehler 
aufgetreten ist. Dann wäre es von Interesse, die Daten, die vor dem 
Fehler angefallen sind, in einem non-volatile Speicher abzulegen (ich 
hab dabei an eine SD-Karte gedacht, die könnte man ja über SPI 
ansprechen)

Zugriffszeiten spielen glaube ich eher keine Rolle. Die Daten kommen als 
Stream von einem Sensor und sollen mit ca 24 kB/s in den Ringspeicher 
geschrieben werden. Beim Auslesen hat man alle Zeit der Welt.

Gibt es größere FRAM Module ? Ich hab hier eins mit 256 kB gefunden. Hm. 
Das würde zur Not auch reichen. Aber ganz schön teuer :)

http://www.mercateo.com/p/108A-716%282d%295797P/F_RAM_Processor_Companion_256Kb_3V_SO14_Herst_Teile_Nr_FM32L278_G.html?showSimplePage=NO&utm_source=product-search&utm_medium=web&utm_campaign=FRAM#ramtron-f-ram-processor-companion-256kb-3v-so14-herst-teile-nr

von rene p (Gast)


Lesenswert?

achja, nach der Spannung war auch gefragt:
Die Versorgungsspannung kann irgendwas zwischen 0 und 24 V sein

von Sebastian Hepp (Gast)


Lesenswert?

>Wenn die Versorgungsspannung wegfällt, müssen die Daten nicht erhalten
>bleiben.
>...
>Zugriffszeiten spielen glaube ich eher keine Rolle. Die Daten kommen als
>Stream von einem Sensor und sollen mit ca 24 kB/s in den Ringspeicher
>geschrieben werden. Beim Auslesen hat man alle Zeit der Welt.
>...
>achja, nach der Spannung war auch gefragt:
>Die Versorgungsspannung kann irgendwas zwischen 0 und 24 V sein

Wie wäre ein stink-normales SRAM?

von tataa (Gast)


Lesenswert?

> Wie wäre ein stink-normales SRAM?

4 MB kosten aber etwas ...

von Klaus (Gast)


Lesenswert?

rene p schrieb:
> Flash-Speicher oder EEPROM geht dafür so wie ich es verstehe nicht, weil
> die Schreibzyklen nach einiger Zeit wohl doch recht schnell ausgreizt
> sind...

Wenn du eine 16GB SD-Karte nimmst, passt bei deiner Datenrate etwa eine 
Woche rein. Bei 1000 Schreibzyklen sind das ca. 20 Jahre.

MfG Klaus

von Peter D. (peda)


Lesenswert?

rene p schrieb:
> Flash-Speicher oder EEPROM geht dafür so wie ich es verstehe nicht, weil
> die Schreibzyklen nach einiger Zeit wohl doch recht schnell ausgreizt
> sind...

Kann man ja ausrechnen:

100.000 Schreibzyklen * 4MB / 24kB/s = 200d
Reicht das?

Der S25FL032K0XMFI011 kostet bei Farnell 1,67€.


Peter

von hp-freund (Gast)


Lesenswert?

Bei den Lebensdauerrechnungen muß ich immer an die arme Speicherzelle 
denken die die aktuelle Speicherposition im Ring enthält, die wird am 
meisten gefordert.

von Klaus (Gast)


Lesenswert?

hp-freund schrieb:
> Bei den Lebensdauerrechnungen muß ich immer an die arme Speicherzelle
> denken die die aktuelle Speicherposition im Ring enthält, die wird am
> meisten gefordert.

Man kann auch eine komplett gelöschte Page vor sich herschieben (löschen 
muß man sie sowieso). Die aktuelle Speicherposition liegt dann vor dem 
gelöschten Block. Man verliert dann einen Block und gewinnt 
Schreibzyklen.

MfG Klaus

von rene p (Gast)


Lesenswert?

@Klaus: lustige Idee eine SD-Karte als Ringspeicher zu verwenden. :]

hp-freund schrieb:
> Bei den Lebensdauerrechnungen muß ich immer an die arme Speicherzelle
> denken die die aktuelle Speicherposition im Ring enthält, die wird am
> meisten gefordert.

Das könnte man wiederum auch über ein winziges FRAM lösen :)

Klaus schrieb:
> Man kann auch eine komplett gelöschte Page vor sich herschieben (löschen
> muß man sie sowieso). Die aktuelle Speicherposition liegt dann vor dem
> gelöschten Block. Man verliert dann einen Block und gewinnt
> Schreibzyklen.

Das hört sich interessant an, aber ich verstehe es nicht so ganz - wie 
genau soll das gehen?

von Εrnst B. (ernst)


Lesenswert?

rene p schrieb:
> Das hört sich interessant an, aber ich verstehe es nicht so ganz - wie
> genau soll das gehen?

Ganz einfach: Die erste Seite, die komplett mit 0xFF gefüllt ist, ist 
die nächste zu beschreibende.

d.H. einmal beim Programmstart diese Seite suchen.
Dann, jedes mal wenn wieder 512 Bytes angefallen sind:
Seite n+1 löschen, Seite n beschreiben.

Nachteil: Deine Nutzdaten dürfen nie aus 512 × 0xFF bestehen, das ergibt 
sich aber üblichweise automatisch, z.B. durch timestamps.

von rene p (Gast)


Lesenswert?

0xFF bedeutet wohl gelöscht? :)
gut :]

Echt ne interessante Idee :)

Wie sicher sind eigentlich Daten auf einer SD-Karte, wenn man nicht 
löscht und nicht schreibt? Also ich meine, wann gehen sie "kaputt"? Kann 
man dazu eine Aussage treffen?

von Philipp (Gast)


Lesenswert?

Also wenn du noch eine RTC mit ein paar SRAM Zellen auf der CPU hast, 
dann nutze die als Zeiger zum nächsten freien Block. Als Speicher die SD 
Karte und nicht FAT sondern einfach linear adressieren - hab ich schon 
gemacht. Ist sehr schnell ohne Overhead und dazu kann sie nicht so 
einfach von "Jedem" ausgelesen werden :-)

ciao,
Philipp

von stiller Beobachter (Gast)


Lesenswert?

1. Möglichkeit
- Pointer auf die SD Adresse bleibt im Register
- Register wird zur SD gesichert bei Netzausfall oder
Batt low per ISR ähnlich wie früher der NMI

2. Möglichkeit
- Blockweise löschen
- Blockgröße 1MB
- Start des Schreibens der Daten
- Beginn des gelöschten Bereiches ist der Pointer zur nächsten 
Schreibposition
- X-Beliebige SD Zelle zeigt zum aktuellen Block und wird nur alle 1MB 
geschrieben, das sollte eine Weile reichen

3. Möglichkeit
- RTC mit gepuffertem RAM und Batterie hält die Pointeradresse
- Auswurfknopf für SD Karte zum gezielten Auslagern des Pointers auf SD

Wer kann sich das vorstellen?

von rene p (Gast)


Lesenswert?

Warum brauche ich eine RTC :)
Das hab ich nicht ganz kapiert.

von GB (Gast)


Lesenswert?

tataa schrieb:
>> Wie wäre ein stink-normales SRAM?
>
> 4 MB kosten aber etwas ...

Pseudo-SRAM wie z.B. IS66WVE4M16BLL (4MBx16), hab es bisher allerdings 
noch bei keinem der einschlägigen Distris gefunden...
Preis für 4MBx16: 2,68€

von bingo (Gast)


Lesenswert?

> Warum brauche ich eine RTC :) Das hab ich nicht ganz kapiert.

Das macht u.U. schon Sinn: die meisten RTC haben ein gepuffertes RAM, 
das nimmst Du  für den Pointer. Wenn der Strom des µC ausfällt, wird der 
Pointer beibehalten, weil die RTC mit <1 µA weiterläuft.

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.