RAM an Mikroprozessor

Hallo,

uns ist beim herumprogrammieren aufgefallen, das die embedded-controller nur sehr begrenzten Speicher haben, sowohl flüchtigen als auch nicht flüchtigen. Welch eine Erkenntnis.

Was macht man eigentlich wenn man z.B. 640kByte RAM haben möchte, um einen Datensatz mehrfach mit unterschiedlichen Bewertungsansätzen durchrechnen zu können? Dabei soll der RAM schnell ansprechbar sein, wenig Hardware-Pins zum Prozessor benötigen (seriell), kein spezielles Interface benötigen, Bankswitching zum Umschalten verschiedener RAM-Banken beherrschen (16-Bit Prozessor), und alles andere an das wir nicht gedacht haben.

Sven

Reply to
Sven Schulz
Loading thread data ...

Ah, du meinst also Microcontroller (=mit internem Speicher), nicht Microprozessoren (=ohne internen Speicher)(1)(2).

Einen Microcontroller nehmen der externen Speicher unterstützt (und ggf. auch Code darin ausführen kann, je nach Bedarf)

Also parallel.

Also nicht schnell. Ich habe von Controllern gehört die von seriellem RAM/Flash booten können, ob diese (oder andere) auch direkt davon Code ausführen können entzieht sich meiner Kenntnis. Daten kannst du natürlich drin ablegen.

Was ist ein spezielles Interface? Übliche Interfaces für RAM sind Addressleitungen, Datenleitungen und RD+WD

Auch was ein "16 Bit Prozessor" ist ist diskutierbar, meistens bezieht sich das aber auf die Datenbreite und nicht auf die Addressbusbreite. Da Microcontroller meistens noch ein paar steuerbare Pins haben kannst du darüber natürlich Speicherbanking von Hand machen.

Lad' dir mal die Datenblätter zu einen Microcontroller mit externem RAM runter und schau dir durch, was andere dazu gedacht haben...

(1) Ja ich weiss daß es Cache gibt (2) Ja ich weiss daß die Grenzen diskutierbar sind

Reply to
Andreas Koch

Naja, Flashrom ist kein Problem, aber Ram ist in der Tat meist etwas beschraenkt.

Also wenn du 640kB brauchst dann ueberdenkst du dein Problem entweder nochmal, oder verwendest externes Ram.

Soll er noch Kaffe kochen koennen?

Olaf

Reply to
Olaf Kaluza

Extern anschliessen?

Das widerspricht sich. Zumindest im Embedded-Bereich, wo nicht mal eben ein paar PCIe-Lanes o.ä. herumliegen.

Wenn Geschwindigkeit nicht sooo wichtig ist, gäbe es RAM mit SPI-Interface.

Ehe man mit fehlerträchtigem Bankswitching anfängt, nimmt mal wohl zweckmässigerweise eine CPU, die ein grösseres RAM direkt ansteuern kann. ARM-Derivate gibts längst für

Reply to
Hergen Lehmann

flüchtigen.

Die LPC214x-Serie hat bis zu 512 kByte Flash, aber leider nur bis zu 40 kByte RAM.

Bankswitching

Sowas muß wohl erst noch erfunden werden :-) Wie schnell soll denn "schnell" sein? Bei einem seriellen Protokoll hängt es dann von der Schnittstelle ab, die du hast, ggf. könnte man mit ein wenig Kleber (CPLD) auch ein normales SRAM per seriellem Interface anbinden. Das größte was ich an seriellem RAM gefunden habe, ist 32 kByte:

formatting link

Wenn du wirklich 640 kByte brauchst, dann wäre vielleicht überlegenswert, eine größere CPU einzusetzen statt eines Mikrocontrollers, sonst dauert es ja auch ewig, das komplett zu beschreiben. Hängt aber von deiner Anwendung ab.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

In deinem Anforderungsprofil passt schnell nicht mit wenigen Pinnen zusammen :-(

Ich hab mit bankswitching schon vor 30 Jahren 2MB an einem Z80 betrieben.

Soo schwierig ist das nicht, IIRC haben die (IMHO fürchterlichen) Motzorola HC16 schon eine MMU an Bord.

Und der 64180 (Z80) hatte auch schon sowas.

Also MMU ist das, was Du suchts. Sollten auch einige 8051er aus der silabs F Serien haben (hoffe ich mal :-)

Ups, ich sehe ja, dass Dein 16bitter schon bankswitching kann. Wer lesen kann, ist klar im Vorteil :-(

Aber seriell und schnell? Kenne ich nix.

IMHO kannste die Daten in einem seriellen RAM lagern, aber zur Berechnung ins 'normale' RAM kopieren und hinterher wieder zurück. Also wowas wie ein RAM-Floppy.

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
Wolfgang Allinger   Paraguay             reply Adresse gesetzt !
VoIP  02173 / 99 39 209   ca. 15h00..21h00 MEZ  SKYPE:wolfgang.allinger
Reply to
Wolfgang Allinger

Wolfgang Allinger schrieb:

Aber Hallo! Der war damals nagelneu, und 2MB noch fast undenkbar. Wie kam es dazu?

Gruß Dieter

Reply to
Dieter Wiedmann

Sven Schulz schrieb:

Die anderen Poster haben es schon ein bischen angedeuted: Dein Problem ist mit an Sicherheit grenzender Wahrscheinlichkeit falsch programmiert/formuliert, wenn du so viel Speicher brauchst.

Es ist ganz gut, sich in dem Zusammenhang mal vor Augen zu führen, dass Apollo 11 nur 4 kB RAM hatte (gut, 3 x 4kB, für jeden C64 4kB). Wenn du mit 12 kB RAM zum Mond fliegen kannst, wohin willst du mit 640? Zu Gott?

Viele Grüße, Johannes

--
PS: Ein Realname wäre nett. Ich selbst nutze nur keinen, weil mich die
meisten hier bereits mit Namen kennen.
  Markus Gronotte aka "Makus" aka "Kosst Amojan" in de.sci.electronics
Reply to
Johannes Bauer

Das paßt irgendwie nicht zusammen. 640k mit einem 16-Bitter heißt Bankswitching, das möchte man sich nicht unbedingt antun, wenn es nicht zwingende Gründe dafür gibt (z.B: weil man wegen second-source unbedingt einen 8051 einsetzen will ;-)). Und derartige Speichermengen per seriellem Interface ansteuern zu wollen, geht auch nur, wenn das Ganze extrem langsam sein darf.

Nimm' einen 32-Bit-Prozessor, der entweder genug RAM drauf hat, oder externes RAM ansteuern kann - z.B. ARM7 gibt es in reichlich Auswahl.

cu Michael

--
Some people have no respect of age unless it is bottled.
Reply to
Michael Schwingen

"Olaf Kaluza" schrieb im Newsbeitrag news: snipped-for-privacy@criseis.ruhr.de...

Grundsätzlich sollten die Lösungen in das RAM/EPROM hineinpassen. Externes RAM ist eine Lösung wenn alles andere versagt.

Bankswitching

Espresso, wenn schon denn schon. Hast du noch nen sinnvolleren Beitrag?

Sven

Reply to
Sven Schulz

"Hergen Lehmann" schrieb im Newsbeitrag news: snipped-for-privacy@hergen.dyndns.org...

Genau.

Nein, das sollte eigentlich kein Problem sein. Ein serielles Interface in dem alles hinein und hinausfließt was man benötigt.

Aha, das kommt der Sache näher. Wie würde denn ein solches RAM heißen? Hast du einen Hersteller parat?

Bankswitching fiel mir in einer 16-Bit-Adressumgebung ein. Da damit nur 2^16 Byte-RAM adressierbar sind. Eventuell gibt es Möglichkeiten einen 16-Bitter bequem an

Reply to
Sven Schulz

"Wolfgang Allinger" schrieb im Newsbeitrag news: snipped-for-privacy@allinger-307049.user.uni-berlin...

Genau so was kam mir auch in den Sinn. Hast du sowas für embedded schon mal gesehen?

Sven

Reply to
Sven Schulz

"Johannes Bauer" schrieb im Newsbeitrag news: snipped-for-privacy@joe.homelan.net...

Das ist Grunde schon richtig. Allerdings können solche Aufgaben auftauchen, bei den die Benutzung von mehr Speicher einfacher ist als den Code zu optimieren.

In ein Schwarzes Loch fliegen, Sensorik ausfahren, speichern und zurück. :-)

Sven

Reply to
Sven Schulz

Bankswitching

Es gibt Warmhalteplatten, bestehend aus 4 Prozessoren vom Typ 80486. So in etwa? Als Heizelement in einer Kaffeemaschine käme eher ein Alpha-Bratling vom Recyclinghof infrage.

Viele Grüße, Holger

Reply to
Holger Bruns

Ich hab hier serielles FRAM mit SPI das einen Takt von 5Mhz abkann. So, und jetzt ueberleg dir mal wie lange es dauert ein Byte zu uebertragen. Was du an extra Zeit benoetigt um mit dem SPI-Interface deines Prozessors zu kommunizieren. Was an Zeit fuer die Auswahl der Adresse im Speicher draufgeht. Was du fuer einen Overhead erzeugt weil du nicht einfach blabla[123]=4 schreiben kannst, sondern jedesmal eine Funktion aufrufen musst wo wahrscheinlich aktiv auf SPI gewartet wird.

Sowas ist nur dann akzeptabel wenn du einen ganzen Speicherblock auf einmal lesen/schreiben willst. Der Prozessor DMA hat und alles im Hintergrund laufen kann, und deine Anwendung damit leben kannst das du nicht zu jederzeit beliebiges Bytes adressieren kannst.

Sonst kannst du paralleles Ram anschliessen. Das ist natuerlich problemlos moeglich. Bedeutet aber normalerweise Multilayer. Kannst du das bezahlen? Dann mach es so.

Olaf

Reply to
Olaf Kaluza

Einfacher fuer den Programmierer schon, dafuer halt deutlich mehr Aufwand in der Hardware. Muss man abwaegen. Wenn du nur 10Stk brauchst wuerd ich mir auch ein einfaeches industrielles Board fuer 200-300Euro kaufen.

Olaf

Reply to
Olaf Kaluza

"Sven Schulz" :

Momentan "state of the art" ist da ein ARM7 mit integriertem Flash, aber trotzdem einem Speicherbus nach draussen. Da dann ein RAM dran - am besten im 44/48 ... pinnigen fine pitch Gehäuse. Rechne damit, das das RAM mehr kostet, als der Controller. Viel RAM gibt es kaum in grösseren Mengen in Controllern, weil er dort auf dem Chip viel teurer ist, als ein externer (vermutlich ist das auch eine Technologiefrage).

Ansonsten ist der preisgünstigste externe Speicher mit SPI- Schnittstelle z.Z. vermutlich eine MMC/SD-Karte. Kommt halt drauf an, wie oft im Leben der Elektronik die beschrieben werden muss. Irgendwo hab ich das doch letztens gelesen, da hat jemand ne Million mal in die SD geschrieben, ohne da auch nur ein Problem zu sehen.

M.

--
Bitte auf mwnews2@pentax.boerde.de antworten.
Reply to
Matthias Weingart

formatting link

Alternativ könnte man (wenn nicht übermässig häufig geschrieben wird) auch Flash nehmen, da hat Atmel ein paar hübsche Sachen.

Ja, das ist beides nichtflüchtig und damit "überdimensioniert". Aber wer's unbedingt exotisch will... ;)

Reply to
Hergen Lehmann

Na gut, hast recht, bin noch mal in mich gegangen, war vor 21 Jahren. Im Alter trügt einen manchmal die Zeit. Also gefühlte 30 Jahre :-)

War ein Fahrtenschreiber mit Z80 für Lokomotiven. Auch bei einem Ultraschallprüfgerät hatten wir mit 64180 2 EPROMS mit zusammen 256kB und 128kB RAM. Das ging mit der MMU recht gut. 2 pages a 16kB Program,

16kB RAM, restliche 16kB über die MMU für den kompletten Adressraum, also RAM und ROM.

Saludos

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
Wolfgang Allinger   Paraguay             reply Adresse gesetzt !
VoIP  02173 / 99 39 209   ca. 15h00..21h00 MEZ  SKYPE:wolfgang.allinger
Reply to
Wolfgang Allinger

Am Sun, 30 Sep 2007 14:22:05 +0200 schrieb Holger Bruns:

Bankswitching

Wo gibts das?

Mir wird bei der Löterei schonmal der Kaffee kalt...

--
Christian
Reply to
Christian Taube

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.