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!! :]
> 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.
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
achja, nach der Spannung war auch gefragt: Die Versorgungsspannung kann irgendwas zwischen 0 und 24 V sein
>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?
> Wie wäre ein stink-normales SRAM?
4 MB kosten aber etwas ...
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
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
Bei den Lebensdauerrechnungen muß ich immer an die arme Speicherzelle denken die die aktuelle Speicherposition im Ring enthält, die wird am meisten gefordert.
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
@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?
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.
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?
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
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?
Warum brauche ich eine RTC :) Das hab ich nicht ganz kapiert.
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€
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.