Hallo,
die grundsätzlichen Begriffe RAM, (Flash-)ROM, EEPROM sind mir bekannt.
Doch momentan bin ich dabei einen geeigneten Mikrocontroller für ein
Projekt auszusuchen und da tauchen bei mir doch einige Fragen gerade zur
Abgrenzung dieser Speicher auf.
Bei den RAMs z.B. gibt es den SRAM (Statischen RAM), ERAM (Extended
RAM), den XRAM (Externer RAM), Scratchpad-RAM,... - und vielleicht gibt
es ja noch mehr.
Ich habe jedes dieser Worte einzelnd nachgeschlagen und sehe sie deshalb
getrennt. Manchmal bin ich mir nicht ganz sicher, ob ich die richtig
verstanden habe, um was es sich da handelt.
Ich nehme doch an, daß diese RAMs alle, mit Ausnahme des XRAM, Teile
eines Gesamt-RAMs sind, oder?
Wie also stehen diese RAMs in Beziehung zu einander?
Bedeutet z.B. bei einigen Mikrocontrollern SRAM = RAM?
In einigen Datenblättern ist nun mal z.B. vom SRAM dann wieder von einem
anderen die Rede. Und klar, Datenblätter erzählen nicht gerne von dem
was der Mikrocontroller nicht hat.
Mein Kernproblem also ist: Wie lassen sich Mikrocontroller mit
derartigen verschiedenen Angaben vergleichen, was sind ihre Aufgaben?
Kann mir hier vielleicht jemand einen Überblick zu diesen RAMs geben?
Vielen Dank!
Zuallererst heit RAM nichts anderes als Random Access Memory.
Also Speicher mit wahlfreiem Zugriff.
Du mußt das RAM also nicht in einer bestimmten Reihenfolge (wie z.B. ein
Magnetband) auslesen, sondern du kannst direkt nacheinander die
Speicherzelle X und danach die Speicherzelle Y auslesen.
> Bei den RAMs z.B. gibt es den SRAM (Statischen RAM), ERAM (Extended> RAM), den XRAM (Externer RAM), Scratchpad-RAM,... - und vielleicht gibt> es ja noch mehr.
Jeder uC hatte schon immer ein paar Bytes RAM. Diese waren meist im
Befehlssatz irgendwie verankert (z.B. beim 8048...). Weil die Programme
aufwendiger und damit mehr Speicherplatz nötig wurde, wurde der
erweiterte (extended) RAM oder ERAM eingeführt. Und wenn das nicht
reichte konnte man an den uC zusätzlich Speicher aussen (extern)
anschliessen: XRAM. Das Schratchpad-RAM ist einfach ein Schmierblatt,
auf dem jeder herumkritzeln darf.
Allerdings sind diese Begriffe herstellerabhängig und sagen nichts
darüber aus, in welcher Technik der RAM-Speicher tatsächlich
realisiert ist.
Die Technik eines RAMs ist dann z.B.
statisches RAM SRAM (das ist bei uCs üblicherweise eingebaut)
dynamisches RAM DRAM
synchrones dynamisches RAM SDRAM
double datarate synchrones dynamisches RAM DDR-SDRAM
und alle möglichen weiteren Kombinationen...
http://de.wikipedia.org/wiki/Halbleiterspeicher
Fazit: es ist im normalen Leben ziemlich unnötig zu wissen, wie ein RAM
physikalisch aufgebaut ist. Es muß nur groß und schnell genug sein...
;-)
Lothar Miller schrieb:> Das Schratchpad-RAM ist einfach ein Schmierblatt,> auf dem jeder herumkritzeln darf.
Wozu wird dann hier nochmal unterschieden?
Vielen Dank auch für Deine Antwort!
Zwille schrieb:> Wozu wird dann hier nochmal unterschieden?
Das ist einfach nur ein Name eines Programmierers für einen
Speicherbereich. Wo dieses Schmierblatt liegt (im DRAM oder SRAM oder im
internen Registersatz) wird mit diesem Begriff nicht festgelegt.
Der eigentliche Witz: du kannst kein Scratchpad-RAM kaufen... :-o
Du kannst aber irgendeinen Speicherbereich reserveieren und so nennen.
Fhutdhb Ufzjjuz schrieb:> hmmm ... ERAM ist bei Bascom auf AVR das interne EEPROM
Ich zitiere mich:
>>> Allerdings sind diese Begriffe herstellerabhängig und sagen nichts>>> darüber aus, in welcher Technik der RAM-Speicher tatsächlich>>> realisiert ist.
Ok, ich habe versucht die Reihenfolge der RAMs bzgl. ihrer
Geschwindigkeiten aus dem Speichertutorial herauszulesen.
Von langsam zu schnell:
-PSRAM
-DRAM
-SRAM
-SDRAM
-DDR-SDRAM
Bei den Remanenten Spreichern bin ich mir da nicht so sicher (MRAM,
FRAM, EEPROM,...)
Ihr dürft mich gerne korrigieren!
Lothar Miller schrieb:> Der eigentliche Witz: du kannst kein Scratchpad-RAM kaufen... :-o> Du kannst aber irgendeinen Speicherbereich reserveieren und so nennen.>
D.h. also, wenn im Datenblatt von einem Scratchpad-RAM die Rede ist, daß
ich einem Speicherbereich einen Namen oder diesen Namen vergeben kann
und ähnlich wie bei einem Enummerationsbefehl diesen Namen statt der
ersten Adresse verwenden kann?
Irgendwie fast schon trollig...
Du gibst in einer Programmiersprache sowieso jedem Speicher einen Namen.
Im allgemeinen sind das dann z.B. irgendwelche Variabeln (oder Arrays
oder Zeichenketten), die dann im Speicher liegen.
> wenn im Datenblatt von einem Scratchpad-RAM die Rede ist
Dann kommt das ganz darauf an, wozu das Datenblatt gehört. In einer vom
PC bekannten RTC gibt es ein paar Bytes, die nicht verwendet sind und
deshalb als Schmierzettel verwendet werden können...
Und gibt es ein Unterschied im Handling zwischen ERAM und XRAM, wenn
beides on-chip untergebracht ist?
Vermutung:
Denke XRAM benötigt z.B. movx usw. während ERAM ganz normal angesprochen
wird. ERAM gibt es z.B. weil der Vorgänger-uC diesen eben noch nicht
hatte.
Richtig?
Zwille schrieb:> Und gibt es ein Unterschied im Handling zwischen ERAM und XRAM, wenn> beides on-chip untergebracht ist?>> Vermutung:> Denke XRAM benötigt z.B. movx usw. während ERAM ganz normal angesprochen> wird. ERAM gibt es z.B. weil der Vorgänger-uC diesen eben noch nicht> hatte.>> Richtig?
Falsch.
Du kannst vermuten soviel du willst. Letzten Endes entscheidet immer das
Datenblatt. Deine Vermutung kann stimmen, muss aber nicht.
Karl heinz Buchegger schrieb:> Du kannst vermuten soviel du willst. Letzten Endes entscheidet immer das> Datenblatt. Deine Vermutung kann stimmen, muss aber nicht.
Das ist ja grauenvoll. Mir dämmert es jetzt so langsam, warum es so viel
Zeit brauchen soll, von einer uC-Familie zur anderen zu wechseln, wenn
schon innerhalb von z.B. AVR soviel Ungleichheit in den Datenblättern
besteht.
Bei manchen steht sogar so gut wie gar nichts drin, als ob der uC gerade
noch in der ersten Entwicklunsphase steckt (z.B. ATmega1280).
Gibt es denn noch weitere Vergleichslisten im Netz, als den Parametric
Product Table von Atmel, die vielleicht in manchen Punkten etwas genauer
sind?
Wie geht Ihr da i.d.R. prinzipiell vor? Oder ist das normal, daß man
ewig viel Zeit in die uC-Wahl steckt? Im Moment kann ich mir vorstellen,
daß es leicht 3 Wochen werden.
Bei mir sind 19 uC in die engere Wahl gekommen. Bevor ich jedoch die
Auswahlkritterien ausweite möchte ich mir über den Vergleich bisheriger
Punkte völlig im Klaren sein (Speicher, I/O, Timer,...)
Oder ist das normal, daß man ewig viel Zeit in die uC-Wahl steckt? Im
Moment kann ich mir vorstellen, daß es leicht 3 Wochen werden.
Zwille schrieb:> Bei manchen steht sogar so gut wie gar nichts drin, als ob der uC gerade> noch in der ersten Entwicklunsphase steckt (z.B. ATmega1280).
Das könnte daran liegen, dass AVRs nur eine Sorte RAM haben und selbst
extern angeschlossenes RAM sich in der Adressierung nicht von internem
unterscheidet (nur im Tempo). 8051er (und Derivate) haben aber aus den
bereits beschriebenen Gründen 3-4 getrennte RAM-Adressräume. Beim Design
der AVRs hatte Atmel diesen Fehler vermieden.
Wenn du also unbedingt einen Mikrocontroller mit IRAM, ERAM und XRAM
benötigst, vielleicht um das Leben möglichst kompliziert zu gestalten,
dann bist du bei AVRs völlig falsch und solltest dich beispielsweise bei
Atmels anderer Typenreihe umsehen, den AT98ern. Die bieten das.
Zwille schrieb:> Das ist ja grauenvoll.
Als du das erste Mal versuchst hast, auf 2 Beinen zu gehen, hat das auch
ein wenig gedauert. Mittlerweile geht das hoffentlich schneller.