Ringspeicherung mit PIC - welchen Speicher?

Gast #2228769
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!! :]
Gast #2228828
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.
Gast #2229067
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
Gast #2229082
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?
Gast #2229113
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
Gast #2229130
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
Gast #2232557
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?
#2232588
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.
Gast #2232733
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?
Gast #2232769
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
Gast #2232793
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?
Gast #2235199
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren