He Leute, ich schreibe zwar hier schon länger mit, musste aber bislang noch keine Frage stellen :) Steinigt mich also nicht falls ich einen alten Beitrag dazu nicht mit der Suche finden konnte ;) Zum Problem: Eine neue Mikrocontroller-Serie wird zwar mit MMU geliefert und MIPS-Kern, hat aber on-board keinen DRAM Controller. Die vorhanden External Bus Interface genannte Schnittstelle kann nur mit SRAM umgehen. Kann ich bei DRAM den Refresh manuell anstossen? Und wenn ja, weiß einer verständliche Seiten wo man dazu was raufinden kann? Oder gibts gar eigenständige Controller die eine Art SRAM - DRAM Umsetzung machen? Also gleich den Refresh etc übernehmen? Musste bislang noch nie externes RAM anbinden, es würde sich dann aber die Möglichkeit bieten auf dem Prozessor ein Linux auszuführen, was bei den integrierten 512kB RAM eher nicht umsetzbar ist.
Michael H. schrieb: > Kann ich bei DRAM den Refresh manuell anstossen? Und wenn ja, weiß einer > verständliche Seiten wo man dazu was raufinden kann? Hast du einen zyklisch per Timer anstossbaren DMA-Kanal frei?
Es gab mal Mischwesen namens PSRAM - PseudeSRAM der sich intern um den Refresh kümmerte, nach außen aber ein SRAM-Zugriff gestattete. DRAM unterscheidet sich ja nicht nur durch die Refreh-Bedingung, sondern der Zugriff ist anders. DRAM möchte Spalten- und Zeilenadressen über die gleichen Adressleitungen serviert. http://de.wikipedia.org/wiki/Dynamic_Random_Access_Memory SDRAM geht noch weiter in den Ansteuerprotokollen. http://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory DRAM/SDRAM-Controller gibt es schon, aber die drüften nicht billig sein. Habe aber schon des öfteren hier im Forum von geglückten Versuchen gelesen SDRAM direkt am Controller zu betreiben. Dann ist die Ansteuerung aber nicht mehr Transparent genug für Linux.
Danke für die Hinweise, werd mich da mal einlesen :) Irgendwie find ich die Entscheidung auf DRAM zu verzichten ziemlich daneben (restliche CPU 32bit MIPS Architektur 200Mhz), aber man muss halte nehmen was einen geboten wird. Entweder kommt da bis zum echten Release noch was nach oder ich muss wirklich ins ARM-Lager wechseln. Im Moment komm ich gut ohne OS aus, aber je mehr Peripherie dazukommt umso bequemer scheint mir das Konzept zu werden.
A. K. schrieb: > Michael H. schrieb: >> Kann ich bei DRAM den Refresh manuell anstossen? Und wenn ja, weiß einer >> verständliche Seiten wo man dazu was raufinden kann? > > Hast du einen zyklisch per Timer anstossbaren DMA-Kanal frei? Müsste sich machen lassen, muss man dann wirklich den kompletten Inhalt einlesen und wieder zurückspielen? Das macht doch eine ungeheure Buslast ohne wirklichen Nutzen. Dachte immer das Konzept wäre eher so, dass man den Refresh von außen triggert und dann halt für die Dauer diese Zeilen/Spalten nicht für Schreibzugriffe nutzen kann.
Michael H. schrieb: > Müsste sich machen lassen, muss man dann wirklich den kompletten Inhalt > einlesen und wieder zurückspielen? Nein, es geht nur um "Wackeln" an den Adressleitungen. Und hier sind die physikalischen Adressleitungen gemeint, also die, die bereits die gemultiplexte Information tragen. Sieh Dir im Datenblatt eines DRAMs mal die Beschreibung der Refresh-Zyklen an. Bedenke allerdings, daß DRAMs ziemlich langsam sind, und bedenke, daß die schon lange nicht mehr verwendet werden. Üblich sind mittlerweile Varianten von SDRAMs (das "S" steht für "synchronous"), die ein deutlich aufwendigeres getaktetes Protokoll zur Ansteuerung verwenden. Die Ansteuerung davon solltest Du mit einem FPGA o.ä. erledigen; ich nehme stark an, daß sich da auch schon fertige Designs finden lassen sollten. Klassische DRAMs wurden in PCs bis etwa Mitte der 90er Jahre verwendet, als letzte Inkarnation in Form von EDO- bzw. FPM-DRAMs. Alles, was danach kam, war SDRAM, bzw. SDRAM mit gesteigerter Datenrate (DDR-SDRAM etc.).
Da gibts noch ne Sache an die du eventuell denken solltest. Der wahlfreie Zugriff bei SRAM ist ja ziemlich fix. Bei SDRAM ist es soweit ich festgestellt hab nur schnell, wenn die CPU die Daten als Block liest und intern einen Cache hat. Der LPC2468 kann z.B. SDRAM ansteuern, hat aber als ARM7 keinen Cache und ist richtig langsam. Ein ARM9 mit internem Cache ist bedeutend performanter mit SDRAM, z.B. der AT92SAM9G20. Da gibts z.B. kleine Module mit Flash und SDRAM von TaskIt für wenig Geld zu kaufen.
Michael H. schrieb: > Müsste sich machen lassen, muss man dann wirklich den kompletten Inhalt > einlesen und wieder zurückspielen? Das macht doch eine ungeheure Buslast > ohne wirklichen Nutzen. Hallo Michael, Das refreshen ohne Controller geht problemlos, du musst jedoch in der Refres-routine in der Refresh-zeit einmal an allen Zeilen lesend vorbeigekommen sein (ich denke ich hab da 16ms für 1k Zeilen im Hinterkopf, das wäre dann etwa 16us pro Zeile). Die Werte drüften sich nicht verändert haben. Das läßt sich SW-technisch einfach machen, kostet <5% Performache Overhead und benötigt keine HW. rgds
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.